问题标签 [spring-statemachine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - 使用连接工厂时,Spring 状态机超时总是执行
这次我有一个关于状态机超时的问题。我的场景是这样的,参考下图
进入 StateBasic 时,我执行一些操作,工厂提供的机器在 WaitForTemplateResult 等待,直到 VAS_QRY_RES 或 MAIN_QRY_RES 事件之一。
现在还有一个超时,它会在 30 秒后触发。所以现在发生的事情是即使 VAS_QRY_RES 或 MAIN_QRY_RES 出现,也会触发超时。
我研究了这个问题,我能够给出的解释是,当我第一次进入 StateBasic 时,StateMachineFactory 分配了一台带有 uuid 的机器,当 VAS_QRY_RES 或 MAIN_QRY_RES 出现时,它分配了另一台我确认是不同 uuid 的机器。无论如何都会触发前一台机器的超时(使用第一个 uuid)。
spring-boot - 基于状态机的 Spring Boot 应用程序总是退出而不是等待事件
我想使用弹簧状态机作为我的应用程序的主处理器。我想启动应用程序,将引导作为初始状态的动作,并作为结束状态的动作拆除。在中间,应用程序应该等待事件。
因此,我开始按照http://docs.spring.io/spring-statemachine/docs/current/reference/html/developing-your-first-spring-statemachine-application.html中所示的方式进行操作,
除了退出该run
方法后,整个应用程序停止并且不再监听进一步的事件。
如何实现这种行为?是否有可用的蓝图/模板?我没有找到一个。类似于 web 组件,监听请求,我希望状态机等待配置的事件。我的应用程序在 Raspberry Pi 上运行,这些事件由“按下按钮”、“连接的设备提供测量结果”等外部操作触发。
在我问自己的主要问题旁边,弹簧状态机制是否会在我的环境中正常工作:我使用 Pi4J 进行硬件交互。该框架通常使用自己的线程来监视硬件事件。如何处理并发事件。动作总是在触发事件的线程中同步运行,还是有单独的线程池?
谢谢,史蒂夫
java - Spring状态机注释@WithStateMachine不起作用
我只是在使用spring状态机@WithStateMachine时遇到了一个问题。
@WithStateMachine 仅在我在 @EnableStateMachine 注释的类中定义的内部类上使用它时才起作用,但是当我在其他地方定义类时,它似乎不起作用。这是我的代码:
但是当我在另一个类文件中定义 Action 时,它不起作用
我的绒球
java - Spring Statemachine超时和持久性冲突
我注意到在 statemachinefactory 中使用超时和 redis 持久性存在问题。
以上是我的状态机 uml 图。我在我的代码中添加了一个 stateListener 并且每次它都持续存在。
StateMachine stateMachine = factory.getStateMachine();
注意:ExitPointGQ 指向父机器的称为 WAITFORCOMMAND 的初始状态。
现在假设我需要通过发出信号 WAIT 来等待,机器会返回到 WaitForGenQueryRes,这是正确的。但是到现在,第一个计时器已经启动,并且在 60 秒后,计时器触发并通过退出点退出,并坚持认为状态现在处于 WAITFORCOMMAND 而它必须处于 WaitForGenQueryRes 因为我循环了它。
请指出我的错误,以便我可以解决这个问题。
etcd - 我们可以在 spring-statemachine 中用 etcd 替换 zookeeper 吗?
在 spring-statemachine 中使用 etcd 代替 zookeeper 需要进行哪些更改?
java - 纠正 Spring Statemachine 中的错误处理
我正在评估 Spring Statemachine,并想了解如何从转换错误中恢复。
我为过渡期间执行的操作定义了错误操作。的执行S1_TO_S2_ACTION
会导致在 中处理的异常S1_TO_S2_ERROR_HANDLING
。
我可以处理操作中的错误,但如何从错误中恢复?我试图在错误处理程序 ( context.getStateMachine().sendEvent(Events.RECOVER)
) 中发送一个事件,但没有任何效果。
令人惊讶的调用stateMachine.hasStateMachineError()
之后返回false
。
我可以在错误操作中从错误中恢复谁?如果在转换期间抛出异常,为什么会hasStateMachineError()
返回?false
java - Spring状态机池错误
我已经在 UML 中实现了 Spring 状态机,并正在尝试实现一个连接池。我的配置类是
}
我得到一个错误
原因:java.lang.IllegalStateException:无法为 bean 'scopedTarget.stateMachine' 创建范围代理:在创建代理时无法确定目标类型
. 现在我尝试使用它并删除
proxyMode = ScopedProxyMode.TARGET_CLASS
错误不再存在,但未观察到预期的行为。没有游泳池,只有一台机器在运行。
我在这里看到了这个错误,但没有看到解决方案。
java - Spring 状态机转换
我试图触发从其他状态机的转换以制作自动状态机 (SM) 但它不起作用:初始操作 (findCustomer() ) 应该更改 SM 的初始状态,然后每个操作触发一个事件,依此类推最终状态。这是我的配置: