弹簧状态机上的一些查询。
-
在一个弹簧项目中,我们可以拥有多个状态机吗,在一种状态下,机器用于一个工作流(可以是CD玩家工作流程),另一个用于旋转栅门?
-
我可以在配置类中动态加载配置吗?例如,从具有JSON格式数据的大数据源加载配置,我们在其中存储状态、事件、转换等。
-
我的一个要求是,我可能有一个经常变化的工作流或模型,我需要在春季项目中配置它。如何使用弹簧状态机有效地做到这一点。
1)您可以拥有多台机器。对于bean名称,@EnableStateMachine
具有id
属性。您可以将配置公开为@EnableStateMachineFactory
。如果你想在javaconfig之外工作,有一个手动的构建器模型
2/3)在javaconfig和statemachine之间有一个公共配置api。这个配置模型的一个用户(javaconfig之外)是基于uml的建模,它使用eclipse的uml-xml文件来加载配置。Uml是您的最佳选择,因为我们目前没有其他内置配置挂钩。欢迎捐款;)
您可以使用Builder动态配置状态机。Builder在幕后使用的配置接口与使用适配器类的@configuration模型相同。示例:
StateMachine<String, String> buildMachine1() throws Exception {
Builder<String, String> builder = StateMachineBuilder.builder();
builder.configureStates()
.withStates()
.initial("S1")
.end("SF")
.states(new HashSet<String>(Arrays.asList("S1","S2","S3","S4")));
return builder.build();
}
官方文档链接:动态弹簧状态机