2016-05-12 7 views
1

Ich habe versucht, @WithStateMachine mit @StateMachineConfigEnums zu verwenden, und ich kann nicht sehen, dass meine Funktionen aufgerufen werden.@WithStateMachine mit @EnableStateMachineFactory

Mein Code ist:

@Configuration 
@EnableStateMachineFactory 
public class StateMachineConfigEnums extends StateMachineConfigurerAdapter<String, String> { 

} 
@WithStateMachine 
public class OrderTransitionBean { 
    @OnTransition(target = "RECEIVED") 
    void toState1() { 
     System.out.println("Manish toState1"); 
    } 

Es könnte eine einfache Antwort sein, dass es nicht unterstützt wird und @WithStateMachine nur mit @EnableStateMachine arbeiten. Oder ich vermisse etwas.

Obwohl auch andere Dinge wie unten oder Aktion definiert mit Übergängen arbeiten:

public class OrderStateMachineListener extends StateMachineListenerAdapter<String, String> { 

    @Override 
    public void stateChanged(State<String, String> from, State<String, String> to) { 
     System.out.println("Order state changed to " + to.getId()); 
    } 
} 

Antwort

1

Ja, Sie haben Recht, es wird nicht unterstützt, da die Unterstützung für Anmerkungen nur mit registrierten Beans funktioniert und in diesem Fall ist Bean eine Maschine für Statusmaschinen, keine Maschine selbst. Wie Sie als erster dies anfordern, habe ich dafür gh-224 erstellt.

+0

Vielen Dank für die Bestätigung, zumindest muss ich keine Mühe geben. – krmanish007

+0

Ich habe das gleiche Problem mit 1.2.8.RELEASE. – Tim

+0

Beim Debuggen der Lösung müssen Sie den Computernamen für WithStateMachine festlegen. Vielen Dank. – Tim

0

Wenn Sie Aufzählungen anstelle von Strings verwenden, dann eine Anmerkung erstellen @StateonTransition (auf der offiziellen Federzustandsmaschine Standort für diese aufgerufen) anstelle von @OnTransition.

+0

Ich verwende String, wie wir den Zustand beibehalten müssen und und PersistStateMachineHandler.PersistStateChangeListener unterstützt Enum nicht – krmanish007