Я хотел бы использовать Синхронный планировщик задач, но я не думаю, что есть такая вещь.
Да, есть - State State Machine Spring использует TaskExecutor для выполнения областей ипо умолчанию это синхронно.И похоже, что вы используете его - вы можете увидеть это в своей трассировке стека:
org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50)
Есть ли другой способ убедиться, что мои действия входа / выхода выполнены после перехода?
По сути, нет - переход "оборачивает" действие exit состояния, из которого вы выходите, и действие entry состояния, в которое вы входите.
Действия в СМ бывают двух типов - состояние или переход действия.Я предполагаю, что вы говорите о состоянии входа / выхода.Вот порядок последовательности, в которой выполняются эти типы действий.
Приведенный ниже сценарий выполняется синхронно:
- два состояния
A
и B
- действие входа и выхода из состояния на
A
, состояние входа идействие выхода на B
- действие перехода на
A
-> B
переход
SM находится в состоянии A
- это означает, что вход в состояниедействие на A
уже выполнено.Мы отправляем событие, которое инициирует переход от A
-> B
.
Transition started: from: A to: B
Action on transition from A to B //when transition starts, the transition action kicks in, before exiting state A
State A exit action on state //before exiting state A, the state A exit action kicks in
State exited: A
State entered: B
State B entry action on state
Transition ended: from: A to: B
Вы можете воспроизвести те же результаты, предоставив настраиваемый SM-прослушиватель для конфигурации SM.