问题标签 [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.
java - Spring State Machine 在 uml 中定义 Choice 状态
我是 Spring 状态机的新手。我已经使用 UML 建模工具 (Eclipse Papyrus) 定义了状态机配置,如在 此处输入链接描述中所述。我在图表中定义了状态、事件和守卫。现在我想在我的 UML 图中定义一些选择状态(选择伪状态),但我不知道该怎么做。我真的想知道我是否可以挑选你的大脑。
java - 在 eventNotAccepted 监听器中 Spring 状态机访问 StateContext
我是 Spring 状态机的新手。我已经StateMachineListener
为我的状态机使用了一个。我如何访问方法StateContext
。eventNotAccepted
spring-statemachine - Spring State Machine中如何处理全局资源?
我正在考虑将 Spring State Machine 用于 TCP 客户端。协议本身是基于具有消息 id 和长度字段的专有 TCP 消息给出的。客户端与服务器建立 TCP 连接,发送一条消息,并在发送下一条消息之前始终等待响应。在每个州,只允许某些响应。多个客户端必须并行运行。
现在我有以下与 Spring State machine 相关的问题。
1) 在从断开连接到连接的初始转换期间,客户端通过 java.net.Socket 建立连接。如何使此套接字(或从套接字获得的 DataOutputStream 和 BufferedReader 对象)可用于其他转换的操作?
从这个意义上说,套接字将是状态机的某种全局资源。到目前为止,我看到的唯一方法是将它放在邮件标题中。但这看起来不太自然。
2) Spring State Machine 需要哪个运行时环境?
JVM 够用还是需要 Tomcat?
它是线程安全的吗?
谢谢,沃尔夫冈
java - 使用计时器时的 Spring State-Machine 附加线程
我在 java 应用程序中使用 spring 状态机。要在状态之间移动,我们应该使用一些事件(称为 Timer Event)。似乎有一个线程负责管理计时器,这些计时器设置为确定何时会发生状态之间的移动(如果在我们所处的状态下没有任何事情发生,状态机肯定会根据计时器做出决定)。在将计时器事件添加到转换后(使用 Papyrus 定义状态机),即使在 main 方法完成后,我也看到了剩余的活动线程。我有两个问题;首先,这个线程是什么(我的意思是,这个线程与管理计时器的线程相同),其次,我如何在工作结束时终止线程?
java - Spring StateMachne 对 UML 子机的支持
是否有支持UML 子机的 Spring 状态机的稳定版本?我的状态图变得如此庞大和复杂,我正在寻找在我的状态图中使用子机的解决方案。
configuration - Spring StateMachine 配置:使用 @EnableSateMachineFactory 时命名 StateMachine
我想包括几个StateMachine
使用StateMachineFactory
. 但是@EnableStateMachineFactory
注释允许命名工厂。如何命名每个 Config(即 extends EnumStateMachineConfigurerAdapter
)?
否则,如果可能的话,有一个如何setMachineID
在配置定义中使用该方法的示例将很有用。
spring-statemachine - 我如何知道警卫是否拒绝了转换
如果状态机处于状态States.S1
并且我发送事件Events.E1
,我怎么知道是否guard2()
拒绝了转换?
我目前正在检查状态机的状态:如果它还在,States.S1
那么我知道该事件被拒绝了。这是处理警卫拒绝的“正确”方式吗?
编辑:
在阅读了 Janne 的评论后,我意识到我正在尝试做的可能是对警卫的错误使用。似乎应该只使用守卫来确定机器应该转换到哪个状态,而不是是否应该进入一个状态。如果是后者,即转换被彻底拒绝,那么状态机将处于无状态。我应该知道代码允许我做什么,以及在编写工作流时具有以状态机为中心的心态。这就是我在假期前匆匆忙忙的结果!
java - Spring State Machine - 我应该创建多少?
当我收到关于我的 API 的请求时,我想做一系列步骤,每个步骤都是检查或扩充。每一步都可能成功或失败。成功后,应执行下一步。失败时,应执行结束步骤,并完成流程。为此,我考虑了 Spring State Machine,因为它似乎符合要求。
我已经阅读了文档并使用了它,但有些事情让我无法理解:
请求和状态机之间是否应该存在一对一的关系,这意味着对于每个请求,我都会创建一个新的状态机实例?或者我应该通过为下一个请求重置机器以某种方式重用已完成的状态机?
清理完成的状态机怎么样?似乎没有办法销毁和清理状态机实例。如果我为每个请求创建 1 个,我就有效地引入了内存泄漏,除非框架以某种方式处理资源。
spring-statemachine - 如何通知我状态机完成?
我有一个配置了伪终端状态的状态配置。我预计状态机会在达到该状态时完成,但我错过了一种获得通知的方式。
我已经注册了一个 StateMachineListener,但它没有收到关于状态机完成的通知。