2

关于弹簧状态机的一些查询。

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

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

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

4

2 回答 2

3

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

2/3) javaconfig 和 statemachine 之间有一个公共的配置 api。此配置模型的一个用户(javaconfig 之外)是基于 uml 的建模,它使用eclipse 的 uml xml文件来加载配置。Uml 是您最好的选择,因为我们目前没有其他内置配置挂钩。欢迎投稿;)

于 2016-05-05T09:48:13.510 回答
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

于 2020-04-28T06:34:35.650 回答