0

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

  1. 不可预料的
  2. 采取带守卫的过渡
  3. 无防护过渡

我不记得读过关于不能在同一个事件中进行 2 次转换的文章。

4

1 回答 1

3

如果x != 0,例如x== 1,则转换x == 0未启用,另一个无人看守的转换是。另一个被解雇了。

如果x == 0,则启用两个转换。这是所谓的“冲突转换”的情况(参见 UML Spec. 2.4.1 ., p. 575)。冲突解决通常相当复杂,请参阅 UML 规范。在您的特定情况下,两个转换都离开相同的状态,结果是不确定的:可以采用任何一个转换

于 2013-03-23T12:53:46.100 回答