gpt4 book ai didi

java - Spring Statemachine StateMachineBuilder 构建空状态的状态机

转载 作者:行者123 更新时间:2023-12-01 11:16:03 31 4
gpt4 key购买 nike

由于我必须支持对状态机的并发访问,因此我无法使用通常的 Autowired 单例方法。相反,我尝试按照文档中的描述构建状态机,此处:

http://docs.spring.io/spring-statemachine/docs/1.0.0.BUILD-SNAPSHOT/reference/htmlsingle/#state-machine-via-builder

这是我非常谦虚的代码:

    Builder<SessionState, SessionEvent> builder = StateMachineBuilder.builder();
builder.configureStates().withStates().initial(SessionState.INITIAL).states(EnumSet.allOf(SessionState.class));
StateMachine<SessionState, SessionEvent> stateMachine = builder.build();
stateMachine.start();
System.out.println(stateMachine.getState()); // null !!!

这会立即失败,因为机器的状态令人惊讶地为空,而我期望 SessionState.INITIAL。

我在这里做错了什么?

我也尝试了文档中显示的代码,即:

    Builder<String, String> builder = StateMachineBuilder.builder();
builder.configureStates().withStates().initial("SI").end("SF").states(new HashSet<String>(Arrays.asList("S1", "S2", "S3", "S4")));
final StateMachine<String, String> stateMachine = builder.build();
stateMachine.start();
System.out.println(stateMachine.getState());

...相同的结果。

最佳答案

这个例子非常简单,可以让你理解这个想法。您需要配置转换以使配置不格式错误。您需要使用 builder.configureTransitions() ,它返回与基于注释的配置模型相同的配置接口(interface)。查看 http://docs.spring.io/spring-statemachine/docs/1.0.0.M3/reference/htmlsingle/#configuring-transitions如何做到这一点。

在我的待办事项列表中添加一个配置验证程序,以便在构建机器时如果配置错误或不完整,您会快速失败。

还有一些测试示例 https://github.com/spring-projects/spring-statemachine/blob/master/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/ManualBuilderTests.java

关于java - Spring Statemachine StateMachineBuilder 构建空状态的状态机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31811998/

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