2017-05-26 12 views
0

stateless4jの使用特定の状態のパラメータを持つイベントに応答してアクションを実行しようとしています。イベントを処理した後、私は状態を変更したくありません。stateless4jの状態を変更せずにイベントに応答してアクションを実行できますか?

stateless4jはイベントのアクションをサポートしていないため、私は代わりにpermitDynamic()を悪用し、セレクタを使用して自分のアクションを実行しています。私はセレクタで同じ状態を返します。だから、action_activated_serviceRegisteredのコードではFsmState.ACTIVATEDを返します。

activationFsmConfig 
     .configure(FsmState.ACTIVATED) 
     .onEntry(fsmFunctions::action_activated_entry) 
     .onExit(fsmFunctions::action_activated_exit) 
     .permitDynamic(new TriggerWithParameters1<>(Trigger.SERVICE_REGISTERED, ServiceReference.class), fsmFunctions::action_activated_serviceRegistered); 

私が午前問題は、私の状態への出口とエントリのアクションが、私は状態を変更するわけではないにもかかわらず、発射されていることです。

これを行うには良い方法がありますか?

答えて

1

恐らく、.ignoreIf(Trigger、guard)のガード状態でアクションを実行できます。

+0

ほとんどの場合、https://github.com/oxo42/stateless4j/issues/28でリクエストされているパラメータを持つトリガーを受け取る 'ignoreIf()'が必要です。 – pauli

関連する問題