org.springframework.webflow.engine
Class ActionState
java.lang.Object
org.springframework.webflow.core.AnnotatedObject
org.springframework.webflow.engine.State
org.springframework.webflow.engine.TransitionableState
org.springframework.webflow.engine.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:
Action
Fields inherited from class org.springframework.webflow.engine.State |
logger |
Constructor Summary |
ActionState(Flow flow,
java.lang.String id)
Creates a new action state. |
Method Summary |
protected void |
appendToString(org.springframework.core.style.ToStringCreator creator)
Subclasses may override this hook method to print their internal state to a string. |
protected void |
doEnter(RequestControlContext context)
Specialization of State's doEnter template method that executes behavior specific to this state type
in polymorphic fashion. |
ActionList |
getActionList()
Returns the list of actions executable by this action state. |
Transition |
getRequiredTransition(RequestContext context)
Get a transition in this state for given flow execution request context. |
Methods inherited from class org.springframework.webflow.engine.State |
doPreEntryActions, enter, equals, getEntryActionList, getExceptionHandlerSet, getFlow, getId, getOwner, handleException, hashCode, isStartState, isViewState, toString |
Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
ActionState
public ActionState(Flow flow,
java.lang.String id)
throws java.lang.IllegalArgumentException
- Creates a new action state.
- Parameters:
flow
- the owning flowid
- the state identifier (must be unique to the flow)
- Throws:
java.lang.IllegalArgumentException
- when this state cannot be added to given flow, e.g. beasue the id is not unique- See Also:
getActionList()
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:
State.toString()