状态机定时器自转

时间:2015-11-06 14:39:54

标签: uml statechart

enter image description here

如果我理解这3台状态机的含义,请向我解释。

1,调用StateA Enter动作(此刻没有任何动作),然后设置定时器。当计时器触发执行Acion1时,则执行StateA Exit操作(也没有任何操作),然后重复整个循环。所以StateA输入动作,设置计时器等。这使用Action1进行一种轮询

2,调用StateB Enter动作,定时器设置并在10ms后触发并执行Action2。计时器将不会更新,因此它是对状态的一种延迟动作

3,StateC输入操作,设置定时器,触发后调用Action3,然后执行StateC Exit操作,最后执行StateD Enter操作。

请确认或更正是否正确。

2 个答案:

答案 0 :(得分:1)

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

  

如果复合状态定义了退出行为,则在传出外部转换的任何效果行为之前执行(...)。

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

2:我不认为这是一个正确的UML符号,所以我不能确认或否认你的描述。

3:此状态机图未指定初始状态是StateC还是StateD。如果它是StateC,那么你的描述是正确的,除了在Action3之前执行StateC的退出操作。为了明确,该图应该有一个初始伪状态(实心圆),从初始伪状态到StateC的转换。

答案 1 :(得分:0)

通常使用圆角矩形绘制状态。

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

2)我不知道这种表示法。您可以像这样指定entry / do / exit操作 enter image description here

3)就像1,但进入一个新状态。