如何通知State Machine Completion?

时间:2017-01-03 08:18:51

标签: spring-statemachine

我有一个配置了伪endstate的状态配置。我期望状态机在达到该状态时完成,但我错过了获得通知的方法。

我已经注册了StateMachineListener,但它没有得到关于状态机完成情况的通知。

1 个答案:

答案 0 :(得分:0)

好的 - 我终于找到了。

要使状态机停止,必须定义具有伪状态END的状态。达到此状态时,将通知StateMachineListener机器已停止。

下面是我使用的弹簧配置的轮廓。一些细节已经被遗忘了。

@Override
public void configure(StateMachineStateConfigurer<String, String> states) throws Exception {
    states
            .withStates()
            .initial("WAITING")
            .state("FAILED", fail(), null)
            .state("SUCCESS", success(), null)
            .end("COMPLETED")

    ;
}

在转换配置中,您确实喜欢这样:

@Override
public void configure(StateMachineTransitionConfigurer<String, String> transitions) throws Exception {
    transitions
            .withExternal().source("FAILED").target("COMPLETED")
            .and().withExternal().source("SUCCESS").target("COMPLETED")
    ;
}