通过使用内部转换控制图表执行
一个内心的转变是不退出源状态的转换。当定义为具有排他(OR)分解的超状态时,内部转换功能非常强大。使用内部转换可以极大地简化状态流®图表,如下例所示:
在使用内部转换之前
这个图表展示了如何使用内部转换简化逻辑。
发生任何事件并唤醒状态流图。到连接连接的默认转换是有效的。转换的目的地由[c1 > 0]
而且[c2 > 0]
.如果[c1 > 0]
是真的,过渡到A1
是真的。如果[c2 > 0]
是真的,过渡到A2
是有效的。如果既不[c1 > 0]
也不[c2 > 0]
是真的,过渡到A3
是有效的。之间的转换A1
,A2
,A3
是由E
,[c1 > 0]
,[c2 > 0]
.
在使用内部转换到连接连接后
此示例使用到连接结的内部转换简化了前面的示例。
一个事件发生并唤醒图表。到连接连接的默认转换是有效的。转换的目的地由[c1 > 0]
而且[c2 > 0]
.
您可以通过使用内部转换来代替原始示例中所有状态之间的转换来简化图表。如果状态一个
已经是主动的,内部过渡是用来重新评估哪个状态的次状态一个
就是要积极主动。当事件E
发生时,内部转换可能有效。如果[c1 > 0]
是真的,过渡到A1
是有效的。如果[c2 > 0]
是真的,过渡到A2
是有效的。如果既不[c1 > 0]
也不[c2 > 0]
是真的,过渡到A3
是有效的。这个图表的设计比之前的简单。
请注意
当您使用到连接结的内部转换时,活动子状态可以退出并在该子状态的转换条件有效时重新进入。例如,if substateA1
是活动的,并且[c1 > 0]
是真的,过渡到A1
是有效的。在这种情况下:
退出操作
A1
执行并完成。A1
变得不活跃。A1
变得活跃。输入操作
A1
执行并完成。
看到处理具有到连接连接的内部转换的第一个事件有关此符号语义的更多信息。
使用内部过渡到历史节点
这个例子显示了一个到历史节点的内部转换。
状态Power_on。高
最初是活动的。当事件重置
发生时,向历史节点的内部转换是有效的。因为内部转换是有效的,当前的活动状态,Power_on。高
,退出。当内部过渡到历史节点时,最后一个活动状态,Power_on。高
,变为活动(重新进入)。如果Power_on。低
在同样的情况下也很活跃Power_on。低
会退出,然后再进入。本例中的内部转换相当于在两者上绘制外部自循环转换Power_on。低
而且Power_on。高
.
看到向历史交汇点的内部过渡有关此符号语义的更多信息。