Spring State Machine-将静态数据附加到状态

时间:2019-03-04 22:42:07

标签: spring-statemachine

使用弹簧状态机,我们有状态和事件。我找不到任何有关在配置期间是否可以将静态数据附加到状态的文档。

例如,如果存在状态S1和S2

public void configure(StateMachineStateConfigurer<String, String> states) throws Exception  {
    states.withStates()
                .initial("INIT")
                .end("END")
                .state("S1", null, exitAction())
                .state("S2", entryAction());
}

如果我们可以在上述配置过程中附加静态数据(例如,例如java Map),则在触发的操作(例如上述entryAction和exitAction)中可能很有用

我不知道是否可以采取某种方式。

1 个答案:

答案 0 :(得分:1)

这是通过状态机中的两个对象-StateContextExtendedState实现的。

StateContext就像状态机的当前快照-它通过各种方法和回调(包括动作和防护)传递。

ExtendedState基本上是带有变量的映射。

您可以从ExtendedState获得StateContext

    context.getExtendedState()
        .getVariables().put("mykey", "myvalue");

随着它作为上下文的一部分传递,您可以在每个动作,过渡,保护等中访问ExtendedStateStateMachine对象本身也具有getExtendedState()方法。

这是在StateMachine中传递静态数据的规范方法。