主要内容

在包含内部转换的状态中处理事件

处理处于Exclusive (OR)状态的内部转换事件

这个例子展示了在exclusive (OR)状态下使用内部转换处理三个事件时会发生什么。

处理一个处于Exclusive (OR)状态的事件

这个例子展示了内部转换的行为。图表使用了传出转换的隐式排序(见隐式排序).

一开始,图表处于休眠状态。状态一个是活跃的。条件(C_one)是假的。事件E_one发生并唤醒图表,该图表从根到层次结构依次处理事件:

  1. 图表根检查是否有一个有效的转换作为结果E_one.一个潜在的有效的状态转换一个B检测到。然而,这种转换是无效的,因为(C_one)是假的。

  2. 状态一个在操作(硬脑膜())执行并完成。

  3. 状态一个检查其子节点是否存在有效的转换,并检测有效的内部转换。

  4. 状态一个仍然活跃。内转移作用A_two执行并完成。因为它是一个内在的过渡,状态一个的退出和进入操作不执行。

  5. 图表回到睡眠状态。

这个序列完成了这个状态流的执行®事件关联图E_one

处理处于Exclusive (OR)状态的第二个事件

使用前面的示例,本示例展示了第二个事件发生时的情况E_one发生。图表使用了传出转换的隐式排序(见隐式排序).

一开始,图表处于休眠状态。状态一个仍然是活跃的。条件(C_one)是真的。事件E_one发生并唤醒图表,该图表从根到层次结构依次处理事件:

  1. 图表根检查是否有一个有效的转换作为结果E_one

    从状态的转变一个B现在是有效的(C_one)是真的。

  2. 状态一个退出操作(exitA ())执行并完成。

  3. 状态一个标记为非活动。

  4. 过渡行动A_one执行并完成。

  5. 状态B活跃的标记。

  6. 状态B输入操作(entB ())执行并完成。

  7. 图表回到睡眠状态。

此序列完成与事件关联的状态流图的执行E_one

在Exclusive (OR)状态下处理第三个事件

使用前面的例子,这个例子展示了第三个事件,E_two,发生。图表使用了传出转换的隐式排序(见隐式排序).

一开始,图表处于休眠状态。状态B现在已经激活。条件(C_two)是假的。事件E_two发生并唤醒图表,该图表从根到层次结构依次处理事件:

  1. 图表根检查是否有一个有效的转换作为结果E_two

    一个潜在的有效的状态转换B一个检测到。这个过渡是无效的,因为(C_two)是假的。然而,活动状态B具有有效的自循环过渡。

  2. 状态B退出操作(exitB ())执行并完成。

  3. 状态B标记为非活动。

  4. 自循环过渡动作,A_four,执行并完成。

  5. 状态B活跃的标记。

  6. 状态B输入操作(entB ())执行并完成。

  7. 图表回到睡眠状态。

此序列完成与事件关联的状态流图的执行E_two.这个例子展示了内部循环和自循环转换之间的行为差异。

处理具有内部过渡到连接结点的事件

这个示例展示了使用内部转换到连接连接处理重复事件的行为。

处理第一个事件与一个内部过渡到一个连接结点

这个例子展示了第一个事件的内部转换到连接结点的行为。图表使用了传出转换的隐式排序(见隐式排序).

一开始,图表处于休眠状态。状态A1是活跃的。条件(C_two)是真的。事件E_one发生并唤醒图表,该图表从根到层次结构依次处理事件:

  1. 图根检查根级别是否有一个有效的转换E_one.没有有效的过渡。

  2. 状态一个在操作(硬脑膜())执行并完成。

  3. 状态一个检查自身是否存在有效的转换,并检测是否存在到连接结点的有效内部转换。

    对条件进行评估,以确定其中一个转换是否有效。由于采用隐式排序,带有条件标记的段在未标记的段之前计算。评估从十字路口的12点位置开始,按顺时针方向进行。因为(C_two)是真的吗,内部过渡到交点然后到状态一个A2是有效的。

  4. 状态一个A1退出操作(exitA1 ())执行并完成。

  5. 状态一个A1标记为非活动。

  6. 状态一个A2活跃的标记。

  7. 状态一个A2输入操作(entA2 ())执行并完成。

  8. 图表回到睡眠状态。

此序列完成与事件关联的状态流图的执行E_one当状态A1是主动的和条件的(C_two)是真的。

通过内部过渡到连接结点处理第二个事件

继续前面的示例,这个示例显示了第二个事件发生时内部转换到连接的行为E_one发生。图表使用了传出转换的隐式排序(见隐式排序).

一开始,图表处于休眠状态。状态A2是活跃的。条件(C_two)是真的。事件E_one发生并唤醒图表,该图表从根到层次结构依次处理事件:

  1. 图根检查根级别是否有一个有效的转换E_one.没有有效的过渡。

  2. 状态一个在操作(硬脑膜())执行并完成。

  3. 状态一个检查自身是否有效转换,并检测到连接结点的有效内部转换。

    对条件进行评估,以确定其中一个转换是否有效。由于采用隐式排序,带有条件标记的段在未标记的段之前计算。评估从十字路口的12点位置开始,按顺时针方向进行。因为(C_two)是真的吗,内部过渡到交点然后到状态A.A2是有效的。

  4. 状态一个A2退出操作(exitA2 ())执行并完成。

  5. 状态一个A2标记为非活动。

  6. 状态一个A2活跃的标记。

  7. 状态一个A2输入操作(entA2 ())执行并完成。

  8. 图表回到睡眠状态。

此序列完成与事件关联的状态流图的执行E_one当状态A2是主动的和条件的(C_two)是真的。对于具有有效内部转换的状态,可以立即退出并重新进入活动的子状态。

内部过渡到历史枢纽

这个例子展示了到历史结点的内部转换的行为。

一开始,图表处于休眠状态。状态A.A1是活跃的。历史信息的存在是因为超国家一个是活跃的。事件E_one发生并唤醒图表,该图表从根到层次结构依次处理事件:

  1. 图表根检查是否有一个有效的转换作为结果E_one.没有有效的过渡。

  2. 状态一个在操作执行和完成期间。

  3. 状态一个检查自身是否存在有效的转换,并检测是否存在到历史连接的有效内部转换。根据历史信息,最近的活动状态,A.A1,是目标状态。

  4. 状态A.A1退出动作的执行和完成。

  5. 状态A.A1标记为非活动。

  6. 状态A.A1活跃的标记。

  7. 状态A.A1输入操作执行并完成。

  8. 图表回到睡眠状态。

此序列完成与事件关联的状态流图的执行E_one当有一个内在的过渡,一个历史的衔接和状态A.A1是活跃的。对于具有有效内部转换的状态,可以立即退出并重新进入活动的子状态。