Spring State Machine: Как получить информацию о том, что переход невозможен? - PullRequest
0 голосов
/ 09 октября 2018

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

Вместо исключения ничего не происходит.Единственное, что я заметил, это:

stateMachine.sendEvent(myMessage)

возвращает false.Но следующий метод не возвращает true:

stateMachine.hasStateMachineError()

, поэтому я думаю, что нет никаких исключений ...!?

Кто-нибудь знает, как я мог получить ошибку типа "Это событие можетне применяется в текущем состоянии конечного автомата "?

Заранее большое спасибо!

1 Ответ

0 голосов
/ 09 октября 2018

Если у вас есть неизвестное событие, конечный автомат не выйдет из строя с ошибкой, он проигнорирует его.Единственный способ получить больше информации о недопустимом событии - добавить слушатель конечного автомата:

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...