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

时间:2016-02-14 09:27:31

标签: uml

在给定的例子中: enter image description here

从S0到S2的条件是什么? e1 [x == 6]是否需要为真,或者仅仅其中一个是真的可以转移到s2状态吗?

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

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