UML 状态图表:完成转换



在具有运行到完成模型的 UML 状态图上下文中,如何处理"完成转换"?

    状态的完成在事件
  1. 队列的开头插入一个"完成事件",因此只有在状态机显式步进时才执行"完成转换",或者
  2. 状态
  3. 的完成会立即触发"完成转换"(以及可能的后续"完成转换"),因此状态机可以为每个显式步进执行多个步骤。

这两种情况都表明,一个状态的无保护的"完成转换"实际上使任何其他定义的转换(无论是事件触发的还是受保护的)都是多余的。

我理解正确吗?

答案更接近#2("状态的完成立即触发"完成转换"),但你随后提到"每个显式步骤的多个步骤"。我不知道你这是什么意思。

UML 2.5规范在第14.2.38.3节中说:

一种特殊的过渡是完成过渡,它有一个隐式触发器。启用此触发器的事件 称为完成事件,它表示与完成的源状态关联的所有行为 转换已完成执行。对于简单状态,当关联的条目生成完成事件时 和 doActivity 行为已完成执行。如果未定义此类行为,则生成完成事件 进入该州时。

该规范继续描述如何为复合或子机器状态生成完成事件。既然你问的是这个更简单的情况,我就跳过它。

规范还说"完成事件具有调度优先级。也就是说,它们在事件池。因此,不会调度其他定义的转换。

最新更新