问题标签 [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 - 并发用于多个线程的弹簧状态机
我在单独的线程中有 20 个并发用户处理订单。如何使用弹簧状态机维护状态?
我在尝试:
但它 on;y 告诉我状态机,而不是哪个顺序:
我对此有其他选择,但此选项对于每个事件都不是很好:
java - @WithStateMachine 与 @EnableStateMachineFactory
我试图将@WithStateMachine 与@StateMachineConfigEnums 一起使用,但我看不到我的函数被调用。
我的代码是:
可能有一个简单的答案,即它不受支持并且@WithStateMachine 仅适用于@EnableStateMachine。或者可能我错过了一些东西。
尽管其他事情如下所示或使用转换定义的操作:
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 选择”。
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)之后发生。
java - spring状态机获取bean创建异常
我的状态机工作正常,但是在我的 pom 中添加 active-mq 后,在我的配置中创建状态机工厂时,我开始收到空指针异常:
我可以看到 AutowiredAnnotationBeanPostProcessor 也包含在 activemq 库中,但不确定这是否会导致问题。
我得到的实际错误日志是:
java - 当你从你的动作中抛出异常时,弹簧状态机抛出 NullPointerException
当我从 StateMachineConfigurerAdapter 中定义的自定义操作中引发异常时,对状态机的任何后续调用都会引发 NPE,因为它获得 null currentState 。
我对状态机的调用是:
堆栈跟踪是:
原因是 this.currentState.getIds() 正在抛出 NPE,因为 currentState 即将为空。
AbstractStateMachine 中似乎存在一些代码问题
最后一行没有处理 currentState != null 条件,因为所有前一个都在处理它。您可以通过显式传递 currentState 来跳过此异常,这通常不是必需的。但是即使给出currentState之后,也不是调用persistStateChangeListener的onPersist()方法
state-machine - 状态机中的事件失败会发生什么?
我们刚刚开始一个新项目。启动该项目的人并不知道它是一个状态机应用程序。在查看了这些状态之后,我想知道事件失败会发生什么。以他的在线购物应用程序状态机示例为例,如果交付事件或收到付款事件失败怎么办?放弃、失败或重试是状态的一部分吗?
spring - 在 Spring 状态机中存储数据?
我正在制作类似游戏的多人测验。我选择使用 spring 状态机对服务器上的每个单独的游戏实例进行建模,使用@EnableStateMachineFactory
. 但是,我需要状态机的每个实例都有额外的游戏数据/状态信息,并使用一些自定义启动数据(例如玩家用户名)在状态机启动时初始化该数据。ExtendedState
用于此类东西,如果在使用工厂创建状态机时如何发送自定义初始扩展状态数据?
java - Spring 状态机错误处理不起作用
我为错误处理做了所有设置
创建拦截器来处理错误:
但是当我们从操作中抛出异常时,我看不到调用进入 OrderStateMachineFunction。
并且在该状态机以某种有线方式运行之后,就像它在 this.stateMachine.sendEvent(eventData); 之后停止调用 preStateChange 方法一样。在您从操作中抛出异常后,状态机似乎崩溃了。
在尝试了一些之后,我发现如果我评论 resetStateMachine,它会按预期工作,但没有它我无法将当前状态通知给状态机:
spring-statemachine - java.lang.IllegalStateException:Bean 工厂必须是 ListableBeanFactory 的实例,为 null
我正在使用提供的构建器创建一个状态机对象,如下所示:
10.2 状态机通过 Builder
我看到以下异常:
错误 org.springframework.statemachine.support.StateMachineObjectSupport - 无法初始化注释处理程序 java.lang.IllegalStateException:Bean 工厂必须是 ListableBeanFactory 的实例,为空
该异常并未阻止状态机按预期运行。但是,我想深入了解为什么我会看到这个。
任何人都知道我怎样才能阻止这个异常显示?
谢谢。