问题标签 [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 回答
1045 浏览

java - Spring State Machine 在 uml 中定义 Choice 状态

我是 Spring 状态机的新手。我已经使用 UML 建模工具 (Eclipse Papyrus) 定义了状态机配置,如在 此处输入链接描述中所述。我在图表中定义了状态、事件和守卫。现在我想在我的 UML 图中定义一些选择状态(选择伪状态),但我不知道该怎么做。我真的想知道我是否可以挑选你的大脑。

0 投票
1 回答
1050 浏览

spring-statemachine - 使用状态机重试和最大尝试次数

我正在尝试制作一个状态机,我想在其中构建重试和最大尝试功能。让我解释一下,到目前为止我有这个:在此处输入图像描述

从 SAVED,我想进入 VALIDATED,虽然如果有错误,它必须进入 AWAITING_VALIDATION 状态。3 分钟后,再次尝试进入 VALIDATED 状态。

  1. 我是否正确设置了重试机制?
  2. 3 次尝试后,我想回到 SAVED 状态(并暂停状态机)。是否有可能以花哨的方式做到这一点(例如使用弹簧状态机),还是我必须使用某种缓存手动做到这一点?

谢谢你的帮助

0 投票
1 回答
1086 浏览

java - 在 eventNotAccepted 监听器中 Spring 状态机访问 StateContext

我是 Spring 状态机的新手。我已经StateMachineListener为我的状态机使用了一个。我如何访问方法StateContexteventNotAccepted

0 投票
1 回答
359 浏览

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?

它是线程安全的吗?

谢谢,沃尔夫冈

0 投票
1 回答
804 浏览

java - 使用计时器时的 Spring State-Machine 附加线程

我在 java 应用程序中使用 spring 状态机。要在状态之间移动,我们应该使用一些事件(称为 Timer Event)。似乎有一个线程负责管理计时器,这些计时器设置为确定何时会发生状态之间的移动(如果在我们所处的状态下没有任何事情发生,状态机肯定会根据计时器做出决定)。在将计时器事件添加到转换后(使用 Papyrus 定义状态机),即使在 main 方法完成后,我也看到了剩余的活动线程。我有两个问题;首先,这个线程是什么(我的意思是,这个线程与管理计时器的线程相同),其次,我如何在工作结束时终止线程?

0 投票
1 回答
65 浏览

java - Spring StateMachne 对 UML 子机的支持

是否有支持UML 子机的 Spring 状态机的稳定版本?我的状态图变得如此庞大和复杂,我正在寻找在我的状态图中使用子机的解决方案。

0 投票
1 回答
937 浏览

configuration - Spring StateMachine 配置:使用 @EnableSateMachineFactory 时命名 StateMachine

我想包括几个StateMachine使用StateMachineFactory. 但是@EnableStateMachineFactory注释允许命名工厂。如何命名每个 Config(即 extends EnumStateMachineConfigurerAdapter)?

否则,如果可能的话,有一个如何setMachineID在配置定义中使用该方法的示例将很有用。

0 投票
0 回答
922 浏览

spring-statemachine - 我如何知道警卫是否拒绝了转换

我在参考文档中配置了转换:

如果状态机处于状态States.S1并且我发送事件Events.E1,我怎么知道是否guard2()拒绝了转换?

我目前正在检查状态机的状态:如果它还在,States.S1那么我知道该事件被拒绝了。这是处理警卫拒绝的“正确”方式吗?

编辑:

在阅读了 Janne 的评论后,我意识到我正在尝试做的可能是对警卫的错误使用。似乎应该只使用守卫来确定机器应该转换到哪个状态,而不是是否应该进入一个状态。如果是后者,即转换被彻底拒绝,那么状态机将处于无状态。我应该知道代码允许我做什么,以及在编写工作流时具有以状态机为中心的心态。这就是我在假期前匆匆忙忙的结果!

0 投票
1 回答
3744 浏览

java - Spring State Machine - 我应该创建多少?

当我收到关于我的 API 的请求时,我想做一系列步骤,每个步骤都是检查或扩充。每一步都可能成功或失败。成功后,应执行下一步。失败时,应执行结束步骤,并完成流程。为此,我考虑了 Spring State Machine,因为它似乎符合要求。

我已经阅读了文档并使用了它,但有些事情让我无法理解:

  1. 请求和状态机之间是否应该存在一对一的关系,这意味着对于每个请求,我都会创建一个新的状态机实例?或者我应该通过为下一个请求重置机器以某种方式重用已完成的状态机?

  2. 清理完成的状态机怎么样?似乎没有办法销毁和清理状态机实例。如果我为每个请求创建 1 个,我就有效地引入了内存泄漏,除非框架以某种方式处理资源。

0 投票
1 回答
410 浏览

spring-statemachine - 如何通知我状态机完成?

我有一个配置了伪终端状态的状态配置。我预计状态机会在达到该状态时完成,但我错过了一种获得通知的方式。

我已经注册了一个 StateMachineListener,但它没有收到关于状态机完成的通知。