首页 文章

UML状态机:深度历史假状态和最终状态

提问于
浏览
2

在UML状态机中,如果输入子状态的最终状态,复合状态的历史记录究竟发生了什么?

考虑下面显示的状态机 . 在触发序列T1-T2-T3-T4之后,它将以最终状态结束 . 通过进入最终状态,State21区域的历史被清除,并且由于该区域也由此完成,因此将执行到State1的完成转换 . 现在,当启用触发器T5时,状态机进入深度历史状态 . 我想在这种情况下,深度历史状态代表State21,这意味着状态机进入State21然后执行从State21的初始伪状态到状态211的转换 . 它是否正确?

我更喜欢上面描述的行为,但我可以看到一个替代方案,当输入State21中的最终状态时,State2的历史也会被清除 . 在这种情况下,状态机执行从State2的初始伪状态到状态22的转换 . 所以你怎么看?

State Machine

1 回答

  • 1

    从我对深刻的历史描述的理解

    这种类型的伪状态是一种变量,表示其拥有区域的最新活动状态配置 . 如上所述,终止于此Pseudostate的转换意味着将Region恢复到相同的状态配置,但具有进入状态的所有语义(请参阅描述State条目的子条款) .

    你的第一个行为描述似乎是好的 . 通过触发T1,T2,T3,T4和T5转换,您将返回State21条目,即State211 .

相关问题