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

标签 java fsm

使用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);

我遇到的问题是,即使我没有更改状态,我的状态的退出和进入操作也会触发。

有更好的方法吗?

最佳答案

也许你可以在.ignoreIf(Trigger,guard)的保护条件下执行你的操作。

关于java - 我可以在不更改 stateless4j 中的状态的情况下执行操作来响应事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44205819/

相关文章:

java - 如何使用LatLng从Google Place API查找最近的地方

java - 正则表达式查找字符返回 5 次

libvlc - VLC libvlc_state_t 状态机?

erlang - 为什么 gen_fsm 状态方法必须返回一些东西?

java - 在maven中如何添加本地maven项目作为源代码的依赖

java - 错误 : cannot assign a value to final variable

java - Android - 如何在服务重新启动时保留套接字连接