在@OnTransition注解的方法中获取StateContext

Get StateContext in @OnTransition annotated method

在Spring Statemachine reference doc中是这个示例代码:

@WithStateMachine
static class Bean1 {

    @OnTransition(source = "S1", target = "S2")
    public void fromS1ToS2() {
    }
}

是否可以从使用 @OnTransition 注释的方法访问 StateContext 对象?也许我不明白注释的正确用法...我认为它可以以与 Action 类似的方式使用,在那里我可以访问存储在 ExtendedState.[=16 中的数据=]

看来我完全忘记了在我们的文档中添加这些特定信息。我们无法访问 StateContext,但 event headersExtendedState 可用。

MethodAnnotationTests 中有一个单元测试。

简而言之,处理器处理方法调用会检测参数类型 ExtendedStateMap(如果它用 @EventHeaders 注释)。我也一直在考虑通过方法参数以相同的方式支持 StateContext,但还没有做到这一点。

@WithStateMachine
public class Bean2 {

  @OnTransition(source = "S1", target = "S2")
  public void method1(@EventHeaders Map<String, Object> headers, ExtendedState extendedState) {
  }

}

我也会为此整理文档,感谢您指出这一点!

他们的文档说:

A method annotated with @OnTransition may accept a parameter of type ExtendedState, Map if map argument itself is annotated with EventHeaders, StateMachine, Message or Exception.

https://docs.spring.io/spring-statemachine/docs/current/api/org/springframework/statemachine/annotation/OnTransition.html