Ich verwende einen State Machine Builder, um State Machine in meiner App zu erstellen. Auch die Anwendung verfügt über Aktionsklassen, die org.springframework.statemachine.action.Action implementiert. Diese Aktionsklassen dienen zum Ausführen von Eingabeaktionen für jede Phase. Wenn irgendeine Ausnahme von diesen Aktionsklassen ausgelöst wird, dh von der execute (StateContext paramStateContext) -Methode, wollte ich diese Ausnahme abfangen und ein Ereignis (Terminated) senden und die Zustandsmaschine in den Endzustand fahren, nachdem die db mit Fehlerdetails aktualisiert wurde. Ich habe versucht, den Listener der Statusmaschine zu verwenden, indem ich die Methode stateMachineError (StateMachine stateMachine, Exception e) außer Kraft setzte. Aber leider funktioniert das nicht. Jede andere Spring State Machine-Komponente zum Abfangen von Ausnahmen, bevor ich den gesamten Code in Aktionsklassen mit try catch umbrechen und innerhalb von catch blockiere das Terminated-Ereignis, so dass die Zustandsmaschine den End-Zustand durchläuft. Hier ist der Builder, den ich benutze.Behandeln von Code/Konfigurationsfehler von Eingabeaktionsklassen in Spring State Machine
Builder<String, String> builder = StateMachineBuilder
.<String, String> builder();
builder.configureConfiguration()
.withConfiguration()
.autoStartup(false)
.listener(listener())
.beanFactory(
this.applicationContext.getAutowireCapableBeanFactory());
private StateMachineListener<String, String> listener() {
return new StateMachineListenerAdapter<String, String>() {
@Override
public void stateChanged(
org.springframework.statemachine.state.State<String, String> from,
org.springframework.statemachine.state.State<String, String> to) {
LOGGER.debug("State change to " + to.getId());
}
@Override
public void stateMachineError(
StateMachine<String, String> stateMachine, Exception e) {
e.printStackTrace();
LOGGER.debug("Ah... I am not getting executed when exception occurs from entry actions");
LOGGER.debug("Error occured from " + stateMachine.getState()
+ "and the error is" + e.toString());
}
};
}
Iam 1.1.0.RELEASE Version des Frühlings-state-Kern mit
Jede Hilfe .. sehr geschätzt – user2330825