私は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状態を維持しています。