19. Using StateContext
StateContext在处理状态机时是最重要的对象之一,因为它被传递到各种方法和回调中,以给出状态机的当前状态以及它可能发生的情况。 如果简化一点,它可以被认为是StateContext传递的当前状态机阶段的快照。
在Spring Statemachine 1.0.x中,StateContext的用法相对简单,就如何将它用作简单的POJO来传递东西而言。 从Spring Statemachine 1.1.x开始,它的角色通过使其成为状态机中的一等公民而得到了极大的改善。
在整体StateContext中可以用作。
- 如果已知,则访问当前消息,事件或其MessageHeaders。
- 访问状态机扩展状态。
- 访问StateMachine本身。
- 访问可能的状态机错误
- 如果适用,访问当前的转换。
- 访问状态机可能从中进入和去往的源和目标状态。
- 按照第19.1节“阶段”中的描述访问当前阶段。
StateContext被传入与Action和Guard等用户交互的各种组件中。
19.1 Stages
阶段是状态机当前与用户交互的阶段的表示。
当前阶段是
EVENT_NOT_ACCEPTED,
EXTENDED_STATE_CHANGED,
STATE_CHANGED,
STATE_ENTRY,
STATE_CHIT,
STATEMACHINE_ERROR,
STATEMACHINE_START,
STATEMACHINE_STOP,
TRANSITION,
TRANSITION_START和TRANSITION_END,它们看起来非常熟悉,因为这些匹配用户可以如何与监听器进行交互,如第21章监听状态机事件中所述。