Spring State Machine - Присоединение статических данных к состояниям - PullRequest
0 голосов
/ 05 марта 2019

С машиной состояний пружины у нас есть состояния и событияЯ не смог найти никакой документации о том, можно ли прикрепить статические данные к состоянию во время конфигурации.

Например, если есть состояния S1 и S2

public void configure(StateMachineStateConfigurer<String, String> states) throws Exception  {
    states.withStates()
                .initial("INIT")
                .end("END")
                .state("S1", null, exitAction())
                .state("S2", entryAction());
}

Если бы мы моглиприкреплять статические данные во время вышеуказанной конфигурации (например, Java-карта), это может быть полезно в действиях, которые запускаются (например, entryAction и exitAction выше)

Я не знаю, возможно ли это сделатькак-то.

1 Ответ

0 голосов
/ 05 марта 2019

Это достигается с помощью двух объектов конечного автомата - StateContext и ExtendedState .

StateContext похоже на текущий снимокState Machine - он передается в различных методах и обратных вызовах, включая действия и охрану.

ExtendedState - это в основном карта с переменными.

Вы можете получить ExtendedState из StateContext:

    context.getExtendedState()
        .getVariables().put("mykey", "myvalue");

Поскольку он передается как часть контекста, вы можете получить доступ к ExtendedState в каждом действии,переход, защита и т. д. Сам объект StateMachine также имеет метод getExtendedState().

Это канонический способ передачи статических данных в StateMachine.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...