Spring Statemachine - неявные переходы состояний - PullRequest
0 голосов
/ 26 октября 2018

Можно ли каким-то образом построить машину состояний, в которой только следующее состояние само запускает событие для вызова перехода следующего состояния?Как и неявные переходы.Я не хочу определять их внешне, я хочу создать что-то вроде каскада.

1 Ответ

0 голосов
/ 15 февраля 2019

Если я правильно понимаю, вам нужен эффект, похожий на «домино», на переходы состояний (каскадные переходы - чтобы текущее состояние инициировало переход к следующему состоянию, которое, в свою очередь, запускает переход к следующему состоянию и т. Д. ).

Это прямо связано с действиями SM. Каждое действие SM имеет доступ к StateContext<State, Event>, из которого вы можете получить экземпляр конечного автомата и запустить следующее событие:

//Domino Effect
void actionForS1(StateContext<State, Event> context) {
  //do actions
  Message transitionToS2 = MessageBuilder.withPayload(...).build();
  context.getStateMachine().sendEvent(transitionToS2);
}

void actionForS2(StateContext<State, Event> context) {
  //do actions
  Message transitionToS3 = MessageBuilder.withPayload(...).build();
  context.getStateMachine().sendEvent(transitionToS3);
}
...