2016-10-28 5 views
0

私はA→X_choiceからの遷移があり、X_choiceはBまたはCのどちらかに行きます。A→B ||から遷移を記録できるようにインターセプタを使いたいと思います。 C.可能なイベント(preStateChangedなど)のいずれかにフックしようとすると、A - > X_choiceから遷移するだけです。コールバックは、X_choice - > BまたはX_choiceに行くときに起動されません。私が簡単にこれを行う方法はありますか?StateMachineInterceptorが一時的な状態で起動しました

@Override 
public void configure(StateMachineStateConfigurer<States, Events> states) throws Exception { 
    states.withStates() 
      .initial(States.A) 
      .junction(States.X_choice) 
      .state(States.B) 
      .state(States.C) 
@Override 
public void configure(StateMachineTransitionConfigurer<States, Events> transitions) throws Exception { 
    transition 
     .withExternal().source(States.A).target(States.X_choice).event(Events.E).and() 
     .withJunction() 
       .source(States.X_choice) 
       .first(States.B, guard()) 
       .last(States.C).and() 

そして、次のように私はStateMachinerInteceptorを定義している:

private class PersistingStateChangeInterceptor extends StateMachineInterceptorAdapter<States, Events> { 
    @Override 
    public void preStateChange(State<AppCfgBreatheAgain.States, AppCfgBreatheAgain.Events> state, Message<AppCfgBreatheAgain.Events> message, Transition<AppCfgBreatheAgain.States, AppCfgBreatheAgain.Events> transition, StateMachine<AppCfgBreatheAgain.States, AppCfgBreatheAgain.Events> stateMachine) { 
     transition.getSource(); //A 
     transition.getTarget(); //X_Choice 
    } 

私がしたいことはこれです:

transition.getSource(); //A 
transition.getTarget(); //B 

または代わりに2つのコールバック、行くから1 - > X_choice、およびX_choice - > B.から1つこれは実現可能ですか?私はPersistレシピを使用しているので、これが必要です。実際のターミナル状態ではなく、Choice状態を維持しています。

答えて

関連する問題