我试图了解scxml转换目标状态集。这是我的一些示例代码:
<parallel id="p">
<state id="A" initial="A1">
<state id="A1">
<transition event="test" target="B2" />
</state>
<state id="A2" />
</state>
<state id="B" initial="B1">
<state id="B1" />
<state id="B2" />
</state>
<state id="C" initial="C1">
<state id="C1" />
<state id="C2" />
</state>
</parallel>
如果P,A,A1,B,B1,C和C2当前处于活动状态。现在事件“ test”即将到来,因此将转换到目标状态“ b2” 1)基于状态图XML(SCXML)的3.13节:控制抽象的状态机符号,祖先状态A和P将受到影响。 Al状态将退出,然后重新输入P,还是仅A1和A退出? 2)如果所有状态都已退出并在P处重新进入,则设置P,A,A1,B,B2,C和C1处于活动状态,或者设置P,A,A1,B,B2,C和C2处于活动状态? (因为c2在转换“测试”发生之前是活动的)
答案 0 :(得分:0)
出口集包含所有活动状态,这些活动状态是源状态和目标状态的LCCA的正确后代。这意味着所有状态(包括P)都将退出,因为LCCA必须为,而不是
入口集包含过渡的完整目标集的所有成员,一旦退出了出口集的状态,这些成员将不活动。
由于退出后没有活动状态,因此条目集为B2(在转换目标中指定)以及两个默认状态A1和C1。退出前没有活动状态的“内存”。
所以“ P,A,A1,B,B2,C和C1”是正确的答案