gpt4 book ai didi

spring-statemachine - Spring状态机持久化

转载 作者:行者123 更新时间:2023-12-02 20:51:42 31 4
gpt4 key购买 nike

我正在测试 Spring Statemachine,特别是我对应用状态机来管理对象的状态感兴趣。

我的状态机类型为StateMachine<EpisodeState, EpisodeEvent> .

我的业务对象,Episode ,具有类型为 state 的枚举属性 ( EpisodeState ) ,它应该保存该情节的状态机状态。我有一个批处理过程,它将在初始化时获取 Statemachine 的实例。我想遵循基本流程:

  • 加载Episode来自数据库
  • EpisodeState 设置状态机的当前状态那就是Episode实例。
  • 向状态机发送事件。
  • 从状态机(事件后)获取结果状态并设置 EpisodeState在我的Episode实例。
  • 保存Episode实例。

文档提到 extendedState属性,在我的测试中是空的,但似乎支持任意对象的映射,我想我可以用它来保存我的 Episode 的主键,但我不知道如何将状态机的当前状态设置为 EpisodeState Episode 中的值.

我已经用 StateMachineInterceptorAdapter<EpisodeState, EpisodeEvent> 配置了状态机,我可以看到状态更改前/后和转换前/后的信息,以及preEvent .

最佳答案

进一步研究(不在 Spring Statemachine 文档中),我找到了一种设置状态机状态的方法:

假设您在名为 startingState 的变量中有所需的开始状态,您可以这样做:

stateMachine.stop();
stateMachine
.getStateMachineAccessor()
.doWithAllRegions(access ->
access.resetStateMachine(new DefaultStateMachineContext<>(startingState, null, null, null)));
stateMachine.start();

关于spring-statemachine - Spring状态机持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42012415/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com