概述
流程图中转移的类型
在执行活动图或状态的转移前,Stateflow将转移按以下类型进行分组:
- 默认转移:从相同父级状态开始的所有默认转移;
- 内部转移:源自状态,并完全驻留在该状态内的所有转移;
- 外部转移:源自相应的状态,但至少部分地位于该状态之外。
每一组都可能会包含其他组的转移段。比如,下面这个例子:
在此示例中,状态A包含内部转移和默认转移。这些转移连接到一个结点,结点有连接到A.A1和A.A2的外部转移。如果状态A处于活动状态,则其内部转移流程包括:
- 从状态A到结点的内部转移
- 从结点到状态A.A1和A.A2外部转移
此外,状态A的默认转移流程包括:
- 指向结点的默认转移
- 从结点到状态A.A1和A.A2外部转移
在这种情况下,源自结点的两个外部转移是多组流程图类型的成员。
一组流程图的执行顺序
每个流程图组按组优先级顺序执行,直到出现有效转换。首先执行默认转移组,然后执行外部转移组,最后执行内部转移组。每个流程图组执行如下:
- 对活动状态的某一组的转移段排序。活动状态可以具有多个可能的外部转移。流程图在检查有效性之前会对这些转移进行排序。
- 选择排序后的下一个转移段。
- 测试转移段的有效性。
- 如果该段无效,则转到步骤2.
- 如果转移段的目标对象是一个状态,则执行以下操作:【由于排版原因,请参见后面的备注】
- 如果目标对象是没有指向外部转移段的结点,则:测试停止,不执行任何状态的进入和退出动作。
- 如果目标对象是具有传出转移段的结点,则对传出转移段的集合重复步骤1.
- 在测试完成结点的所有传出转移段后,执行如下操作:
- a.回溯,返回至来到该结点的上一个转移段。
- b.继续步骤2,从备份段之后的下一个转移段开始。
当测试了所有开始的转移时,该组流程图执行完成。
备注:目标对象为状态的转移操作
-
a.停止转移段的测试,备份并包含每个从前面的结点到开始转移的转移段,形成转移路径。
-
b.退出作为转移路径的直接子状态的父状态(请参阅退出状态)。
-
c.执行来自最终转换段的完整转移路径上的转移动作。
-
d.目标状态变为活动状态(请参阅进入图表或状态)。
参考资料
处理转移的分组与执行
Process for Grouping and Executing Transitions
https://ww2.mathworks.cn/help/stateflow/ug/process-for-grouping-and-executing-transitions.html
转移的评估
Evaluate Transitions
https://ww2.mathworks.cn/help/stateflow/ug/evaluate-transitions.html
进入图或状态
Enter a Chart or State
https://ww2.mathworks.cn/help/stateflow/ug/chart-initialization-and-entry-actions.html
流程图的执行
Execution of a Stateflow Chart
https://ww2.mathworks.cn/help/stateflow/ug/chart-during-actions.html
退出状态
Exit a State
https://ww2.mathworks.cn/help/stateflow/ug/chart-exit-actions.html
最后
以上就是花痴冰棍为你收集整理的Stateflow学习笔记之流程图转移的决策(判定)及执行顺序 流程图中转移的类型一组流程图的执行顺序参考资料的全部内容,希望文章能够帮你解决Stateflow学习笔记之流程图转移的决策(判定)及执行顺序 流程图中转移的类型一组流程图的执行顺序参考资料所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复