状态机定时器自转换

State machine timer self transition

如果我对这3个状态机的含义理解正确,请向我解释。

1、调用StateA Enter动作(暂时没什么),然后设置定时器。当定时器触发器 Acion1 被执行时,然后 StateA Exit 动作(也什么都没有)被执行,然后整个循环重复。所以 StateA 输入动作,设置定时器等。这与 Action1

进行了一种轮询

2、StateB Enter action被调用,定时器设置,10ms后触发,执行Action2。定时器不会被更新,所以它是一种对状态的延迟动作

3、StateC进入动作,设置Timer,触发时调用Action3,然后StateC退出动作,最后执行StateD进入动作。

如有误请确认或更正

一般状态都是用圆角矩形绘制的。

1) 沿过渡的符号是<trigger>/<effect>After(10) 的语义为解释留下了一些空间。因此,当 <trigger> 触发时,它将执行 <effect> 和 return 相同的状态。

2) 我不知道这个符号。您可以像这样指定 entry/do/exit 操作

3) 和1一样但是进入了一个新的状态

1:您的描述是正确的,但有一个例外:exit 操作在 before 执行 Action1 之前执行,至少我是这样解释 UML 2.5 规范的。第 14.2.3.4.6 节说:

If the composite State has an exit Behavior defined, it is executed (...) before any effect Behavior of the outgoing external Transition.

我认为您可以安全地假设对于非复合状态也是如此,但是 UML 2.5 规范在这方面应该更加明确。

2:我认为这不是正确的 UML 表示法,因此我无法证实或否认您的描述。

3:这个状态机图没有说明初始状态是StateC还是StateD。如果是StateC,那么你的描述是正确的,只是StateC的退出动作是在Action3之前执行的。为明确起见,该图应具有初始伪状态(实心圆)以及从初始伪状态到 StateC 的过渡。