具有相同触发/事件但具有不同保护的多个事务的状态机

时间:2013-03-23 08:11:26

标签: uml state-machine statechart

如果我有一个状态S1,其中2个转换都由事件'A'触发,但其中一个具有保护x !=0而另一个没有。当守卫有效(x ==1)时,预期的行为是什么?

  1. 不可预知的
  2. 采取与后卫的过渡
  3. 采取无保护的过渡
  4. 我不记得读过有关同一事件无法进行2次转换的内容。

1 个答案:

答案 0 :(得分:3)

如果x != 0,例如x== 1,然后没有启用x == 0的转换,另一个没有防护的转换是。另一个被解雇了。

如果x == 0,则启用两个转换。这是所谓的“冲突过渡”的情况(参见UML Spec. 2.4.1。,第575页)。解决冲突通常比较复杂,参见UML规范。在您的特定情况下,两个转换都保持相同的状态,结果是不确定的:可以采取其中一个转换