对弹簧状态机的一些疑问。
我们可以在一个弹簧项目中拥有多个状态机, 在一个状态机中用于一个工作流程的地方(可能是CD 玩家工作流程)和另一个旋转门?
我可以动态加载配置类中的配置,例如来自具有JSON格式数据的大数据源,我们存储状态,事件,转换等。
我的一个要求是我可能经常更换工作流程或模型,我需要在春季项目中进行配置。如何使用弹簧状态机有效地做到这一点。
答案 0 :(得分:1)
1)您可以拥有多台机器。 @EnableStateMachine
具有bean名称的id
属性。您可以将配置公开为@EnableStateMachineFactory
。如果你想在javaconfig之外工作,那么就有一个手动构建器模型。
2/3)javaconfig和statemachine之间有一个公共配置api。此配置模型的一个用户(javaconfig之外)是基于uml的建模,它使用eclipse's uml xml文件加载配置。 Uml是你最好的选择,因为我们目前没有其他内置配置挂钩。贡献欢迎;)
答案 1 :(得分:1)
您可以使用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();
}`
链接到官方文档:Dynamic Spring State Machine