【发布时间】:2013-02-02 20:18:39
【问题描述】:
正如http://www.eclipse.org/forums/index.php/t/452409/ 中已经提出的那样 我不确定我是否正确理解了本地转换的含义,我想知道我是否以正确的语义使用它们
这两个状态机相等吗?
【问题讨论】:
正如http://www.eclipse.org/forums/index.php/t/452409/ 中已经提出的那样 我不确定我是否正确理解了本地转换的含义,我想知道我是否以正确的语义使用它们
这两个状态机相等吗?
【问题讨论】:
在 UML 2.4.1 下,第一个图显示了在收到 trigger 时从 State1 的本地转换,而第二张图显示了收到 trigger 时子状态之间的转换。从 State1 的外部过渡将由指向 State1 然后弯曲回到它的箭头表示(上层建筑规范的图 15.48)。
UML 上层结构 2.4.1 的第 15.3.15 节 TransitionKind 给出了内部、本地和外部转换的语义:
kind=local 表示转换如果被触发,将不会退出复合(源)状态,但它会应用于复合状态中的任何状态,并且这些状态将被退出和进入。
由于本地和子状态之间的转换都不会导致 State1 退出,因此图表显示了类似的状态机 - 不同之处在于从 State1.3 开始,第一台机器将重新进入 State1.3(导致其退出和进入要调用的行为),而第二个在触发时不会从 State1.3 执行任何操作。
【讨论】: