UML状态机图 两个箭头出同一个状态

UML state machine diagram two arrows out of the same state

在给定的例子中:

从S0升到S2的条件是什么? e1 [x==6] 是否需要为真,或者只要其中一个为真就足以移动到 s2 状态?

这是两个独立的转换,因此只需要触发一个事件。

您没有问,但请注意,当处于状态 s1 时,事件 e1 是不确定的。原因是有两个竞争转换可用。

我要指出,正如@thomas 所建议的那样,您可以通过将该守卫添加到事件 e1 来使守卫也适用于该事件。它看起来像 e1[x==6]

在 UML 中,内部转换优先于外部转换(参见 UML 2.4.1 规范第 15.3.12 节中的"transition selection algorithm"),因此在 s0 中,获取 e1 将始终触发内部转换. 所以移动到 s2 的唯一方法是发送 e1 三次,这将使守卫的条件变为真,因此 运行 完成步骤将转换到 s2。顺便说一句,即使将启用守卫并且将发生到 S2 的转换,但由于 s1 的退出操作,到达 s2 时 x 的值实际上将为 7。