问题标签 [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.

0 投票
1 回答
355 浏览

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)。

0 投票
1 回答
894 浏览

spring - Spring 状态机分叉

到目前为止,我在状态机方面取得了不错的进展。当我想使用 fork 时,我最近的问题出现了(我正在使用 UML)。叉子没有按预期工作,我认为这是因为持久性。我将我的机器保存在redis中。参考下图。

在此处输入图像描述

这是我的顶级机器,其中 Manage-commands 是子机器参考,而顶级区域就是这样。

现在说我在 redis 中保持了一些状态,来自下面的区域,然后一个 ONLINE 事件来了,然后机器不接受该事件,显然是因为我已经要求机器使用给定的键从 redis 恢复状态。bur 我希望两个区域都被持久化,以便根据事件选择其中一个。有什么办法可以做到这一点?

以下是我坚持恢复的方式

0 投票
1 回答
550 浏览

spring - Spring 状态机 - 重用 Submachine

我很难重新使用子机图。

我需要重新使用我已链接到一个状态的一个状态机作为子机,在另一个状态下作为子机。但是当我引用它时,我得到一个空指针异常。

参考图片

在此处输入图像描述

我已经添加了对 GeneralTopup 的子机引用,我想将其添加到 Register。但这似乎是不可能的。是这样吗?

0 投票
1 回答
278 浏览

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 进行硬件交互。该框架通常使用自己的线程来监视硬件事件。如何处理并发事件。动作总是在触发事件的线程中同步运行,还是有单独的线程池?

谢谢,史蒂夫

0 投票
1 回答
1262 浏览

java - Spring状态机注释@WithStateMachine不起作用

我只是在使用spring状态机@WithStateMachine时遇到了一个问题。

@WithStateMachine 仅在我在 @EnableStateMachine 注释的类中定义的内部类上使用它时才起作用,但是当我在其他地方定义类时,它似乎不起作用。这是我的代码:

但是当我在另一个类文件中定义 Action 时,它不起作用

在此处输入图像描述

我的绒球

0 投票
0 回答
552 浏览

java - Spring Statemachine超时和持久性冲突

我注意到在 statemachinefactory 中使用超时和 redis 持久性存在问题。在此处输入图像描述

以上是我的状态机 uml 图。我在我的代码中添加了一个 stateListener 并且每次它都持续存在。

StateMachine stateMachine = factory.getStateMachine();

注意:ExitPointGQ 指向父机器的称为 WAITFORCOMMAND 的初始状态。

现在假设我需要通过发出信号 WAIT 来等待,机器会返回到 WaitForGenQueryRes,这是正确的。但是到现在,第一个计时器已经启动,并且在 60 秒后,计时器触发并通过退出点退出,并坚持认为状态现在处于 WAITFORCOMMAND 而它必须处于 WaitForGenQueryRes 因为我循环了它。

请指出我的错误,以便我可以解决这个问题。

0 投票
1 回答
124 浏览

etcd - 我们可以在 spring-statemachine 中用 etcd 替换 zookeeper 吗?

在 spring-statemachine 中使用 etcd 代替 zookeeper 需要进行哪些更改?

0 投票
2 回答
3564 浏览

java - 纠正 Spring Statemachine 中的错误处理

我正在评估 Spring Statemachine,并想了解如何从转换错误中恢复。

我为过渡期间执行的操作定义了错误操作。的执行S1_TO_S2_ACTION 会导致在 中处理的异常S1_TO_S2_ERROR_HANDLING

我可以处理操作中的错误,但如何从错误中恢复?我试图在错误处理程序 ( context.getStateMachine().sendEvent(Events.RECOVER)) 中发送一个事件,但没有任何效果。

令人惊讶的调用stateMachine.hasStateMachineError()之后返回false

我可以在错误操作中从错误中恢复谁?如果在转换期间抛出异常,为什么会hasStateMachineError() 返回?false

0 投票
1 回答
551 浏览

java - Spring状态机池错误

我已经在 UML 中实现了 Spring 状态机,并正在尝试实现一个连接池。我的配置类是

}

我得到一个错误

原因:java.lang.IllegalStateException:无法为 bean 'scopedTarget.stateMachine' 创建范围代理:在创建代理时无法确定目标类型

. 现在我尝试使用它并删除

proxyMode = ScopedProxyMode.TARGET_CLASS

错误不再存在,但未观察到预期的行为。没有游泳池,只有一台机器在运行。

我在这里看到了这个错误,但没有看到解决方案。

0 投票
1 回答
1888 浏览

java - Spring 状态机转换

我试图触发从其他状态机的转换以制作自动状态机 (SM) 但它不起作用:初始操作 (findCustomer() ) 应该更改 SM 的初始状态,然后每个操作触发一个事件,依此类推最终状态。这是我的配置: