动态配置弹簧状态机

时间:2016-05-05 06:13:36

标签: spring-statemachine

对弹簧状态机的一些疑问。

  1. 我们可以在一个弹簧项目中拥有多个状态机, 在一个状态机中用于一个工作流程的地方(可能是CD 玩家工作流程)和另一个旋转门?

  2. 我可以动态加载配置类中的配置,例如来自具有JSON格式数据的大数据源,我们存储状态,事件,转换等。

  3. 我的一个要求是我可能经常更换工作流程或模型,我需要在春季项目中进行配置。如何使用弹簧状态机有效地做到这一点。

2 个答案:

答案 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