【问题标题】:UML state charts: completion transitionsUML 状态图:完成转换
【发布时间】:2016-02-28 17:50:29
【问题描述】:

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

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

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

我理解正确吗?

【问题讨论】:

    标签: uml state-machine statechart boost-statechart


    【解决方案1】:

    答案更接近于 #2(“完成一个状态会立即触发“完成转换””),但是您随后提到了“每个显式步进的多个步骤”。我不明白你的意思。

    UML 2.5 规范在第 14.2.38.3 节中说:

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

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

    规范还说“完成事件具有调度优先级。也就是说,它们在任何未决事件发生之前调度 事件池。”因此,不会调度其他定义的转换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多