Spring Statemachine StateMachineBuilder 构建一个状态为空的状态机
Spring Statemachine StateMachineBuilder builds a state machine with null state
因为我必须支持对状态机的并发访问,所以我不能使用通常的 Autowired 单例方法。相反,我正在尝试按照文档中的描述构建状态机,此处:
这是我非常谦虚的代码:
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());
...相同的结果。
这个例子是一个非常简单的想法。您需要为 config 配置转换而不是格式错误。您需要使用 builder.configureTransitions() 其中 returns 与基于注解的配置模型相同的配置接口。从 http://docs.spring.io/spring-statemachine/docs/1.0.0.M3/reference/htmlsingle/#configuring-transitions 查看操作方法。
在我的待办事项列表中添加一个配置验证程序,这样如果配置错误或不完整,您将在构建机器时快速失败。
因为我必须支持对状态机的并发访问,所以我不能使用通常的 Autowired 单例方法。相反,我正在尝试按照文档中的描述构建状态机,此处:
这是我非常谦虚的代码:
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());
...相同的结果。
这个例子是一个非常简单的想法。您需要为 config 配置转换而不是格式错误。您需要使用 builder.configureTransitions() 其中 returns 与基于注解的配置模型相同的配置接口。从 http://docs.spring.io/spring-statemachine/docs/1.0.0.M3/reference/htmlsingle/#configuring-transitions 查看操作方法。
在我的待办事项列表中添加一个配置验证程序,这样如果配置错误或不完整,您将在构建机器时快速失败。