【发布时间】:2017-09-28 02:39:30
【问题描述】:
我正在评估 Spring Statemachine 并希望 了解如何从过渡中恢复 错误。
我为执行的操作定义了错误操作
在过渡期间。 S1_TO_S2_ACTION的执行
导致在S1_TO_S2_ERROR_HANDLING 中处理的异常。
我可以处理操作中的错误,但我该如何恢复
错误?我试图在错误处理程序 (context.getStateMachine().sendEvent(Events.RECOVER)) 中发送一个事件,但没有任何效果。
@Configuration
@EnableStateMachine
class StateMachineConfig
extends EnumStateMachineConfigurerAdapter<States, Events> {
Action<States, Events> S1_TO_S2_ERROR_HANDLING = context -> {
System.out.println(BO + " ERROR!!!");
System.out.println("E: " + context.getException());
System.out.println("S: " + context.getSource().getId());
System.out.println("T: " + context.getTarget().getId());
};
@Override
public void configure(StateMachineTransitionConfigurer<States, Events> transitions)
throws Exception {
transitions
.withExternal()
.source(States.SI).target(States.S1).event(Events.E1)
.action(TRANS_ACTION)
.and()
.withExternal()
.source(States.S1).target(States.S2).event(Events.E2)
.action(S1_TO_S2_ACTION, S1_TO_S2_ERROR_HANDLING)
.and()
.withExternal()
.source(States.S2).target(States.SE).event(Events.E3)
.action(TRANS_ACTION);
}
}
之后调用stateMachine.hasStateMachineError() 令人惊讶地返回false。
我可以在错误操作中从错误中恢复谁以及为什么hasStateMachineError()
如果在转换过程中抛出异常,则返回 false?
【问题讨论】:
-
我在这个话题上取得了一些进展,之后会发布我的结果。
标签: java spring spring-statemachine