具有不同保护条件的状态转换

时间:2011-04-20 00:20:46

标签: uml state state-machine

在状态模式中,这是如何建模的?

状态A在触发器X上状态B,在当前状态为A

时状态C1

状态A在触发器X上为状态C,在当前状态为A时为状态C2

这通常如何实现?我有很多保护条件,我可能需要实施。

1 个答案:

答案 0 :(得分:0)

这是非常标准的,例如this example

[编辑基础不是作业!]

假设我理解正确:

  • 您有一个事件(X)可以触发两个可能的过渡之一
  • 根据哪个条件成立(C1C2
  • 选择要触发的转换

如果是这样,那就是使用保护条件的标准情况。语法如下:

  • X[C1]作为转换A-> B上的标签,以及
  • X[C2]关于过渡A-> C。

C1& C2必须评估为布尔值,因此可以根据您的评论替换var==2。即标签将变为X[var==2]X[var==3]

因为它在语义上是正确的,C1& C2必须在状态A中互斥 - 否则你有非决定论。

第h