【发布时间】:2023-03-18 21:50:01
【问题描述】:
我有如下图所示的弹簧状态机:
我希望在应用启动时启动状态机。之后它应该进入重新状态,在某个时间(计划)它进入状态 GetOrders 与子状态(GetA、GetB 和 GetC)。之后,如果有一些错误,它应该进入错误,否则如果一切正常,它应该进入 Re-State,它应该等待调度程序。
这是我的配置
@Override
public void configure(StateMachineConfigurationConfigurer<States, Events> config) throws Exception {
config.withConfiguration()
.autoStartup(true)
.machineId("orderMachine");
}
这是调度器的方法:
@Scheduled(cron = "0 0 1 1 * *")
public void startStateMachine() {
StateMachine<States, Events> sm = factory.getStateMachine();
sm.start();
sm.sendEvent(Events.ReState);
}
一切正常,但我注意到每次执行此方法时,正在启动的 stateMachine 与前一个的 UUID 不同,但 Id 相同。所以我想我正在制作状态机的多个实例。是否可以重用相同的状态机或不完成该过程。因为在我的情况下,大多数时候机器的状态应该处于重新状态。可以认为是等待状态。
【问题讨论】:
标签: java spring state-machine spring-statemachine