【发布时间】:2016-07-26 10:51:29
【问题描述】:
我了解在复合状态下可以有多个正交区域同时并行运行。 UML 状态机中的任何时候都可以有多个活动状态吗?
【问题讨论】:
标签: state-machine
我了解在复合状态下可以有多个正交区域同时并行运行。 UML 状态机中的任何时候都可以有多个活动状态吗?
【问题讨论】:
标签: state-machine
是的,只要完成运行至完成步骤,就可以有多个活动状态。实际上可以有一整棵活动状态树:
正如您所提到的,在复合状态的正交区域中可以存在活动状态。复合状态也可以递归嵌套。这意味着如果嵌套状态处于活动状态,则其所有祖先也处于活动状态。因此,正交区域和嵌套复合状态的组合可以导致一整棵活动状态树。
UML 上层结构规范,v2.4.1 是这样解释的(第 15.3.11 章状态中的第 564 页):
活动状态配置
在分层状态机中超过 一种状态可以同时处于活动状态。如果状态机在 包含在复合状态中的简单状态,那么所有 复合状态直接或传递地包含 简单的状态也是活跃的。此外,由于状态机为 这个层次结构中的一个整体和一些复合状态可能是 正交(即包含区域),当前活动的“状态”是 实际上由一组状态树表示 根区域的最顶层状态到最里面的活动状态 子状态。我们将这样的状态树称为状态配置。
如果你很挑剔,可能会有例外:
如果状态机终止,当然根本没有活动状态,因此此时不能有多个活动状态。
注意
UML 上层结构规范 v2.4.1 是文档,用于检查您是否有此类问题。
【讨论】: