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

java - 并发用于多个线程的弹簧状态机

我在单独的线程中有 20 个并发用户处理订单。如何使用弹簧状态机维护状态?

我在尝试:

但它 on;y 告诉我状态机,而不是哪个顺序:

我对此有其他选择,但此选项对于每个事件都不是很好:

0 投票
3 回答
1845 浏览

java - @WithStateMachine 与 @EnableStateMachineFactory

我试图将@WithStateMachine 与@StateMachineConfigEnums 一起使用,但我看不到我的函数被调用。

我的代码是:

可能有一个简单的答案,即它不受支持并且@WithStateMachine 仅适用于@EnableStateMachine。或者可能我错过了一些东西。

尽管其他事情如下所示或使用转换定义的操作:

0 投票
1 回答
260 浏览

java - 选择中的错误评估导致状态机暂停

The state machine pauses at the choice state when the evaluation inside the choice state returns false, instead of moving to the next state.

下面的代码:

国家定义:

过渡/选择/动作:

主要类:

以下是捕获的输出示例:

工作项状态更改为 init

信息:开始 S2 S1 结束初始化 S3 S1Choice S3Choice S2Choice / init /

在 s1 选择

如您所见,它停在状态 -“s1 选择”而不是移动到新状态 -“s2 选择”。

0 投票
1 回答
449 浏览

spring-statemachine - 需要帮助来构建状态机配置

我试图为附加的状态图构建一个配置状态图。问题是我无法将入口操作注册到分叉内区域中的状态。即对于状态 S41、S41E、S42、S42E。

配置如下所示。

Builder builder = StateMachineBuilder.builder();

另一项帮助。在上面的状态机配置中,每个状态都有嵌套的状态机。

S1 有 step0 和 step1。两者都是正交的 step0 具有状态 task1 并且任务 2 step1 具有状态 task3 并且任务 4 step0 应该在并行区域 task1 和 task2 完成其执行时完成。step1 应该在并行区域 task3 和 task4 完成执行时完成。事实上,task1、task2、task3、task4 这四个状态都应该并行执行

如果 step0 和 step2 完成,则 S1 完成。

从 S1 到 S2 的转换只会在完成所有并行状态后发生,即(步骤 0(任务 1 和任务 2)和步骤 2(任务 3 和任务 4))

另请注意,S1 是我的配置的初始状态。

我已经更新了状态配置,如下所示

如何配置从 S1 到 S2 的转换?(S1 是初始状态,S1 到 S2 应该在完成 S1 中的所有并行任务(即任务 1、任务 2、任务 3、任务 4)之后发生。

0 投票
1 回答
1453 浏览

java - spring状态机获取bean创建异常

我的状态机工作正常,但是在我的 pom 中添加 active-mq 后,在我的配置中创建状态机工厂时,我开始收到空指针异常:

我可以看到 AutowiredAnnotationBeanPostProcessor 也包含在 activemq 库中,但不确定这是否会导致问题。

我得到的实际错误日志是:

0 投票
1 回答
710 浏览

java - 当你从你的动作中抛出异常时,弹簧状态机抛出 NullPointerException

当我从 StateMachineConfigurerAdapter 中定义的自定义操作中引发异常时,对状态机的任何后续调用都会引发 NPE,因为它获得 null currentState 。

我对状态机的调用是:

堆栈跟踪是:

原因是 this.currentState.getIds() 正在抛出 NPE,因为 currentState 即将为空。

AbstractStateMachine 中似乎存在一些代码问题

最后一行没有处理 currentState != null 条件,因为所有前一个都在处理它。您可以通过显式传递 currentState 来跳过此异常,这通常不是必需的。但是即使给出currentState之后,也不是调用persistStateChangeListener的onPersist()方法

0 投票
1 回答
603 浏览

state-machine - 状态机中的事件失败会发生什么?

我们刚刚开始一个新项目。启动该项目的人并不知道它是一个状态机应用程序。在查看了这些状态之后,我想知道事件失败会发生什么。以他的在线购物应用程序状态机示例为例,如果交付事件或收到付款事件失败怎么办?放弃、失败或重试是状态的一部分吗?

0 投票
1 回答
787 浏览

spring - 在 Spring 状态机中存储数据?

我正在制作类似游戏的多人测验。我选择使用 spring 状态机对服务器上的每个单独的游戏实例进行建模,使用@EnableStateMachineFactory. 但是,我需要状态机的每个实例都有额外的游戏数据/状态信息,并使用一些自定义启动数据(例如玩家用户名)在状态机启动时初始化该数据。ExtendedState用于此类东西,如果在使用工厂创建状态机时如何发送自定义初始扩展状态数据?

0 投票
2 回答
2809 浏览

java - Spring 状态机错误处理不起作用

我为错误处理做了所有设置

创建拦截器来处理错误:

但是当我们从操作中抛出异常时,我看不到调用进入 OrderStateMachineFunction。

并且在该状态机以某种有线方式运行之后,就像它在 this.stateMachine.sendEvent(eventData); 之后停止调用 preStateChange 方法一样。在您从操作中抛出异常后,状态机似乎崩溃了。

在尝试了一些之后,我发现如果我评论 resetStateMachine,它会按预期工作,但没有它我无法将当前状态通知给状态机:

0 投票
2 回答
1690 浏览

spring-statemachine - java.lang.IllegalStateException:Bean 工厂必须是 ListableBeanFactory 的实例,为 null

我正在使用提供的构建器创建一个状态机对象,如下所示:

10.2 状态机通过 Builder

我看到以下异常:

错误 org.springframework.statemachine.support.StateMachineObjectSupport - 无法初始化注释处理程序 java.lang.IllegalStateException:Bean 工厂必须是 ListableBeanFactory 的实例,为空

该异常并未阻止状态机按预期运行。但是,我想深入了解为什么我会看到这个。

任何人都知道我怎样才能阻止这个异常显示?

谢谢。