我知道文档中提到了“ a”语句机,还提到了“用于简单用例”的状态的进一步状态。这些示例定义了@StateMachine批注,这对我的问题而言并不是一个好兆头。
如果我希望每个业务流程拥有不同的StateMachine而不是尝试定义一个越来越复杂的状态机怎么办?
答案 0 :(得分:0)
可以使用StateMachine factory并在每个业务流程中获取新实例。
@Configuration
@EnableStateMachineFactory
public class BusinessProcessStateMachineConfig
extends EnumStateMachineConfigurerAdapter<States, Events> {
@Override
public void configure(StateMachineStateConfigurer<States, Events> states)
throws Exception {
states
.withStates()
.initial(States.S1)
.end(States.SF)
.states(EnumSet.allOf(States.class));
}
}
然后可以将工厂注入服务中并获取实例。 您甚至可以拥有多个工厂(例如,如果您想在同一代码库中拥有完全不同的状态机)。
@EnableStateMachineFactory(name = "one")
指定名称可允许存在多个工厂,并将每个工厂的多个sm实例注入服务中。