如果我有一个状态S1,其中2个转换都由事件'A'触发,但其中一个具有保护x !=0
而另一个没有。当守卫有效(x ==1
)时,预期的行为是什么?
我不记得读过有关同一事件无法进行2次转换的内容。
答案 0 :(得分:3)
如果x != 0
,例如x== 1
,然后没有启用x == 0
的转换,另一个没有防护的转换是。另一个被解雇了。
如果x == 0
,则启用两个转换。这是所谓的“冲突过渡”的情况(参见UML Spec. 2.4.1。,第575页)。解决冲突通常比较复杂,参见UML规范。在您的特定情况下,两个转换都保持相同的状态,结果是不确定的:可以采取其中一个转换