Как работает цель перехода scxml

Я пытаюсь понять установленное целевое состояние перехода 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. Теперь приближается событие «тест», поэтому произойдет переход в целевое состояние «b2». 1) На основе раздела 3.13 XML-диаграммы состояний (SCXML): нотация конечного автомата для абстракции управления, состояния предков A и P будут затронутый. Будет выполнен выход из состояний Al, а затем повторный вход в P, или будут выполнены выходы только из состояний A1 и A? 2) если все состояния вышли и снова вошли в P, то наборы P, A, A1, B, B2, C и C1 активны или наборы P, A, A1, B, B2, C и C2 активны? (поскольку c2 был активен до перехода «тест»)


person ligtu    schedule 27.06.2018    source источник


Ответы (1)


Выходной набор состоит из всех активных состояний, которые являются правильными потомками LCCA исходного и целевого состояний. Это означает, что произойдет выход из всех состояний, включая P, поскольку LCCA должен быть , а не

Входной набор состоит из всех членов полного целевого набора перехода, которые не будут активны после выхода из состояний в выходном наборе.

Поскольку после выхода нет активных состояний, набор входов — B2, указанный в цели перехода, и два состояния по умолчанию — A1 и C1. Нет «памяти» о том, какие состояния были активны до выхода.

Итак, "P, A, A1, B, B2, C и C1" - правильный ответ.

person user2187033    schedule 28.06.2018