动态配置弹簧状态机



弹簧状态机上的一些查询。

  1. 在一个弹簧项目中,我们可以拥有多个状态机吗,在一种状态下,机器用于一个工作流(可以是CD玩家工作流程),另一个用于旋转栅门?

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

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

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();
}

官方文档链接:动态弹簧状态机

最新更新