Class ActionState

All Implemented Interfaces:
Annotated, StateDefinition, TransitionableStateDefinition

public class ActionState extends TransitionableState
A transitionable state that executes one or more actions when entered. When the action(s) are executed this state responds to their result(s) to decide what state to transition to next.

If more than one action is configured they are executed in an ordered chain until one returns a result event that matches a state transition out of this state. This is a form of the Chain of Responsibility (CoR) pattern.

The result of an action's execution is typically the criteria for a transition out of this state. Additional information in the current RequestContext may also be tested as part of custom transitional criteria, allowing for sophisticated transition expressions that reason on contextual state.

Author:
Keith Donald, Erwin Vervaet
See Also:
  • Constructor Details

  • Method Details

    • getActionList

      public ActionList getActionList()
      Returns the list of actions executable by this action state. The returned list is mutable.
      Returns:
      the state action list
    • getRequiredTransition

      public Transition getRequiredTransition(RequestContext context) throws NoMatchingTransitionException
      Description copied from class: TransitionableState
      Get a transition in this state for given flow execution request context. Throws and exception when there is no corresponding transition.
      Overrides:
      getRequiredTransition in class TransitionableState
      Throws:
      NoMatchingTransitionException - when a matching transition cannot be found
    • doEnter

      protected void doEnter(RequestControlContext context) throws FlowExecutionException
      Specialization of State's doEnter template method that executes behavior specific to this state type in polymorphic fashion.

      This implementation iterates over each configured Action instance and executes it. Execution continues until an Action returns a result event that matches a transition in this request context, or the set of all actions is exhausted.

      Specified by:
      doEnter in class State
      Parameters:
      context - the control context for the currently executing flow, used by this state to manipulate the flow execution
      Throws:
      FlowExecutionException - if an exception occurs in this state
    • appendToString

      protected void appendToString(org.springframework.core.style.ToStringCreator creator)
      Description copied from class: State
      Subclasses may override this hook method to print their internal state to a string. This default implementation does nothing.
      Overrides:
      appendToString in class TransitionableState
      Parameters:
      creator - the toString creator, to print properties to string
      See Also: