Spring State Machine:如何获取无法进行过渡的信息?

时间:2018-10-09 11:16:17

标签: spring spring-statemachine

当我发送在计算机的当前状态下不可能发生的事件时,我想得到类似异常或任何提示的信息。

什么都没有发生,没有例外。我唯一注意到的是:

stateMachine.sendEvent(myMessage)

返回假。但是以下方法不会返回true:

stateMachine.hasStateMachineError()

所以我想也不例外...!?

有人知道我如何得到这样的错误:“无法在状态机的当前状态下应用此事件”?

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您有未知事件,状态机将不会因错误而失败,它将忽略它。 获得有关无效事件的更多信息的唯一方法是添加状态机侦听器:

public class InvalidEventListener extends StateMachineListenerAdapter {

    @Override
    public void eventNotAccepted(Message event) {
        // it is useless to throw an exception here, it is handled at a higher level
        // here you can add custom logic, but limited.
        super.eventNotAccepted(event);
    }
}

您必须将此侦听器添加到您的状态机:

stateMachine.addStateListener(new InvalidEventListener());