spring-statemachine - Spring StateMachine 可以有多少个 StateMachine?
问题描述
我知道文档提到了“a”语句机器和“用于简单用例”的状态的进一步状态。这些示例定义了注释@StateMachine,这对我的问题来说不是个好兆头。
如果我想为每个业务流程使用不同的 StateMachine 而不是尝试定义一个日益复杂的状态机怎么办?
解决方案
可以使用StateMachine 工厂并为每个业务流程获取新实例。
@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 实例注入服务中。
推荐阅读
- stripe-payments - Stripe PaymentElement 组件:仅允许使用美国信用卡
- python - 在 Jupyter 笔记本中导入时出现 TQDM progress_apply 错误
- r - 创建一个虚拟对象,测试多列中的 na 值
- r - dummyVars() 和 predict() 的问题
- apache-kafka - 在不同主机上运行消费者时,Kafka 延迟不断增加
- html - svg 图像未显示在 Firefox、Chrome 中
- flutter - 在 Flutter 中传递和比较控制器
- ruby - 如何将变量推送到 Ruby 中的 API 请求正文中?
- django - django表单请求帖子未加载数据
- rust - 在作用域线程池中生成线程是否需要额外的时间?