处理包含内部转换的状态中的事件
处理内部转换处于排他(OR)状态的事件
这个例子展示了在排他(OR)状态下使用内部转换处理三个事件时会发生什么。
处理一个处于排他(OR)状态的事件
这个例子展示了内部转换的行为。该图表使用隐式输出转换排序(参见隐式排序).
最初,图表处于休眠状态。状态一个
是活跃的。条件(C_one)
是假的。事件E_one
发生并唤醒图表,图表从根到层次结构处理事件:
的结果,图根检查是否存在有效的转换
E_one
.从状态的潜在有效转换一个
州B
检测到。然而,转换是无效的,因为(C_one)
是假的。状态
一个
行动期间(硬脑膜()
)执行并完成。状态
一个
检查它的子节点是否有有效的转换,并检测有效的内部转换。状态
一个
仍然活跃。内部转换动作A_two
执行并完成。因为它是一个内部转换,所以图表不执行退出
而且条目
国家行动一个
.图表继续沉睡。
这个序列完成了这个状态流的执行®与事件相关的图表E_one
.
处理排他(OR)状态下的第二个事件
使用前面的例子,这个例子显示了第二个事件发生时发生的情况E_one
发生。该图表使用隐式输出转换排序(参见隐式排序).
最初,图表处于休眠状态。状态一个
仍然活跃。条件(C_one)
是真的。事件E_one
发生并唤醒图表,图表从根到层次结构处理事件:
的结果,图根检查是否存在有效的转换
E_one
.从状态的转变
一个
州B
现在有效,因为(C_one)
是真的。状态
一个
退出操作(exitA ()
)执行并完成。状态
一个
标记为非活动。过渡动作
A_one
执行并完成。状态
B
标记为活动。状态
B
输入操作(entB ()
)执行并完成。图表继续沉睡。
此序列完成了与事件关联的状态流图的执行E_one
.
处理排他(OR)状态下的第三个事件
使用前面的例子,这个例子展示了当第三个事件,E_two
,发生。该图表使用隐式输出转换排序(参见隐式排序).
最初,图表处于休眠状态。状态B
现在是活动的。条件(C_two)
是假的。事件E_two
发生并唤醒图表,图表从根到层次结构处理事件:
的结果,图根检查是否存在有效的转换
E_two
.从状态的潜在有效转换
B
州一个
检测到。转换是无效的,因为(C_two)
是假的。然而,活动状态B
具有有效的自循环转换。状态
B
退出操作(exitB ()
)执行并完成。状态
B
标记为非活动。自循环转换动作,
A_four
,执行并完成。状态
B
标记为活动。状态
B
输入操作(entB ()
)执行并完成。图表继续沉睡。
此序列完成了与事件关联的状态流图的执行E_two
.这个示例显示了内部循环和自循环转换之间的行为差异。
具有内部转换到连接连接的处理事件
此示例展示了使用到连接连接的内部转换处理重复事件的行为。
处理具有到连接连接的内部转换的第一个事件
此示例显示了第一个事件的内部转换到连接结的行为。该图表使用隐式输出转换排序(参见隐式排序).
最初,图表处于休眠状态。状态A1
是活跃的。条件(C_two)
是真的。事件E_one
发生并唤醒图表,图表从根到层次结构处理事件:
的结果,图表根检查根级别是否存在有效的转换
E_one
.没有有效的转换。状态
一个
行动期间(硬脑膜()
)执行并完成。状态
一个
检查自身是否有有效的转换,并检测到存在到连接结的有效内部转换。评估条件以确定其中一个转换是否有效。因为采用隐式排序,所以用条件标记的段在未标记的段之前计算。评估从12点钟位置的交界处开始,并以顺时针方向进行。因为
(C_two)
内部过渡到结合点,然后到状态,是真的吗一个
.A2
是有效的。状态
一个
.A1
退出操作(exitA1 ()
)执行并完成。状态
一个
.A1
标记为非活动。状态
一个
.A2
标记为活动。状态
一个
.A2
输入操作(entA2 ()
)执行并完成。图表继续沉睡。
此序列完成了与事件关联的状态流图的执行E_one
当状态A1
是活动的和条件的(C_two)
是真的。
处理具有内部转换到连接连接的第二个事件
继续前面的例子,这个例子显示了第二个事件发生时内部转换到结的行为E_one
发生。该图表使用隐式输出转换排序(参见隐式排序).
最初,图表处于休眠状态。状态A2
是活跃的。条件(C_two)
是真的。事件E_one
发生并唤醒图表,图表从根到层次结构处理事件:
的结果,图表根检查根级别是否存在有效的转换
E_one
.没有有效的转换。状态
一个
行动期间(硬脑膜()
)执行并完成。状态
一个
检查自身是否有有效的转换,并检测到连接结的有效内部转换。评估条件以确定其中一个转换是否有效。因为采用隐式排序,所以用条件标记的段在未标记的段之前计算。评估从12点钟位置的交界处开始,并以顺时针方向进行。因为
(C_two)
内部过渡到结合点,然后到状态,是真的吗A.A2
是有效的。状态
一个
.A2
退出操作(exitA2 ()
)执行并完成。状态
一个
.A2
标记为非活动。状态
一个
.A2
标记为活动。状态
一个
.A2
输入操作(entA2 ()
)执行并完成。图表继续沉睡。
此序列完成了与事件关联的状态流图的执行E_one
当状态A2
是活动的和条件的(C_two)
是真的。对于具有有效内部转换的状态,可以立即退出并重新进入活动子状态。
向历史交汇点的内部过渡
这个例子展示了内部转换到历史节点的行为。
最初,图表处于休眠状态。状态A.A1
是活跃的。历史信息的存在是因为超状态一个
是活跃的。事件E_one
发生并唤醒图表,图表从根到层次结构处理事件:
的结果,图根检查是否存在有效的转换
E_one
.没有有效的转换。状态
一个
在操作执行和完成期间。状态
一个
检查自身是否有有效的转换,并检测到存在到历史节点的有效内部转换。根据历史信息,最后一次活动状态,A.A1
,为目的状态。状态
A.A1
退出操作执行并完成。状态
A.A1
标记为非活动。状态
A.A1
标记为活动。状态
A.A1
输入操作执行并完成。图表继续沉睡。
此序列完成了与事件关联的状态流图的执行E_one
当有一个内在的过渡到一个历史的交叉点和状态A.A1
是活跃的。对于具有有效内部转换的状态,可以立即退出并重新进入活动子状态。