是否有可能构建一个状态机,只有下一个状态本身会触发一个事件来调用下一个状态转换?像隐式转换一样。我不想在外部定义它们我想创建类似级联的东西。
如果我正确地理解了这一点,你需要对状态转换产生“多米诺”效果(级联转换 - 以便当前状态触发转换到下一个状态,从而触发转换到下一个状态,依此类推)。
这与SM行动直接相关。每个SM Action都可以访问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);
}