【发布时间】:2018-10-10 12:09:17
【问题描述】:
在 UML 状态机中,如果进入子状态的最终状态,复合状态的历史究竟会发生什么?
考虑如下所示的状态机。在触发序列 T1-T2-T3-T4 之后,它将最终处于最终状态。通过进入最终状态,State21 区域的历史被清除,并且由于该区域也由此完成,因此将执行到 State1 的完成转换。现在,当触发器 T5 启用时,状态机进入深度历史状态。我假设在这种情况下,深度历史状态代表 State21,这意味着状态机进入 State21,然后执行从 State21 的初始伪状态到 State211 的转换。这是正确的吗?
我更喜欢上面描述的行为,但我可以看到另一种选择,其中当进入 State21 的最终状态时,State2 的历史记录也会被清除。在这种情况下,状态机执行从 State2 的初始伪状态到 State22 的转换。那你怎么看?
【问题讨论】:
-
您的第一个解释对您的图表是正确的。要清除,State2 需要在其中包含 FinalState 以及从 State21 到此 FinalState 的完成转换,以及从 State2 到 State1 的完成转换。在这种情况下,第二种解释是正确的。
标签: uml state-machine