我可以在不更改stateless4j中的状态的情况下执行响应事件的操作吗?

时间:2017-05-26 16:02:58

标签: java fsm 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 个答案:

答案 0 :(得分:1)

也许你可以在.ignoreIf(触发器,后卫)的防护条件下执行你的动作。