主要内容

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

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

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

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

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

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

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

  2. 状态一个行动期间(硬脑膜())执行并完成。

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

  4. 状态一个仍然活跃。内部转换动作A_two执行并完成。因为它是一个内部转换,所以图表不执行退出而且条目国家行动一个

  5. 图表继续沉睡。

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

处理排他(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

处理排他(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是活跃的。对于具有有效内部转换的状态,可以立即退出并重新进入活动子状态。