动态配置 spring 状态机

Dynamically configuring spring state machine

关于 spring 状态机的一些查询。

  1. 我们能否在一个 spring 项目中拥有多个状态机, 其中一个状态机服务于一个工作流程(可能是一张 CD 播放器工作流程)和另一个旋转栅门?

  2. 我能否在我的配置 class 中动态加载配置,例如从具有 JSON 格式数据的大数据源,我们存储我们的状态、事件、转换等等

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

1) 你可以有多台机器。 @EnableStateMachineid 属性 作为 bean 名称。您可以将配置公开为 @EnableStateMachineFactory。如果您想在 javaconfig 之外工作,可以使用手动构建器模型。

2/3)javaconfig和statemachine之间有一个public配置api。此配置模型的一个用户(在 javaconfig 之外)是基于 uml 的建模,它使用 eclipse's 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();
}

Link转官方文档:Dynamic Spring State Machine