Как работает цель перехода scxml - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь понять набор целевых состояний перехода 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. Все состояния будут выходить, затем повторно вводить P, или выходы будут только A1 и A? 2) если все состояния выходят и снова входят в P, тогда активны настройки P, A, A1, B, B2, C и C1 или активны настройки P, A, A1, B, B2, C и C2? (потому что c2 был активен до того, как произошел переход "test")

1 Ответ

0 голосов
/ 28 июня 2018

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

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

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

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

...