相关疑难解决方法(0)

如何从运行时构建的上下文中恢复状态机?

我有一个状态机

@EnableStateMachine
@Configuration
public class StateMachineConfiguration extends EnumStateMachineConfigurerAdapter<Status, Event> {
    @Override
    public void configure(StateMachineStateConfigurer<Status, Event> states) throws Exception {
        states.withStates()
                .initial(Status.DRAFT)
                .states(EnumSet.allOf(Status.class));
    }

    @Override
    public void configure(StateMachineTransitionConfigurer<Status, Event> transitions) throws Exception {
        transitions

                .withExternal()
                .target(Status.INVITATION).source(Status.DRAFT)
                .event(Event.INVITED)
                .guard(new Guard())
                .action(new ActionInvited())
                .and()

                .withExternal()
                .target(Status.DECLINED).source(Status.INVITATION)
                .event(Event.DECLINED)
                .action(new ActionDeclined());
    }

    @Override
    public void configure(StateMachineConfigurationConfigurer<Status, Event> config) throws Exception {
        config.withConfiguration().autoStartup(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个模型,例如Order。模型保留在 DB 中。我从数据库中提取模型,现在我的模型有一个 status Order.status == INVITATION。我想用状态机继续处理模型,但状态机的实例将开始处理初始状态DRAFT但我需要从状态INVITATION继续处理。换句话说,我想执行

stateMachine.sendEvent(MessageBuilder
  .withPayload(Event.DECLINED)
  .setHeader("orderId", order.id)
  .build()
)
Run Code Online (Sandbox Code Playgroud)

并执行操作 …

java spring spring-statemachine

0
推荐指数
1
解决办法
2621
查看次数

标签 统计

java ×1

spring ×1

spring-statemachine ×1