org.springframework.webflow.engine
Class SubflowState

java.lang.Object
  extended by org.springframework.webflow.engine.AnnotatedObject
      extended by org.springframework.webflow.engine.State
          extended by org.springframework.webflow.engine.TransitionableState
              extended by org.springframework.webflow.engine.SubflowState
All Implemented Interfaces:
Annotated, StateDefinition, TransitionableStateDefinition

public class SubflowState
extends TransitionableState

A transitionable state that spawns a subflow when executed. When the subflow this state spawns ends, the ending result is used as grounds for a state transition out of this state.

A subflow state may be configured to map input data from its flow -- acting as the parent flow -- down to the subflow when the subflow is spawned. In addition, output data produced by the subflow may be mapped up to the parent flow when the subflow ends and the parent flow resumes. See the FlowAttributeMapper interface definition for more information on how to do this. The logic for ending a subflow is located in the EndState implementation.

Author:
Keith Donald, Erwin Vervaet
See Also:
FlowAttributeMapper, EndState

Field Summary
 
Fields inherited from class org.springframework.webflow.engine.State
logger
 
Fields inherited from class org.springframework.webflow.engine.AnnotatedObject
CAPTION_PROPERTY, DESCRIPTION_PROPERTY
 
Constructor Summary
SubflowState(Flow flow, java.lang.String id, Flow subflow)
          Create a new subflow state.
 
Method Summary
protected  void appendToString(org.springframework.core.style.ToStringCreator creator)
          Subclasses may override this hook method to stringify their internal state.
protected  MutableAttributeMap createSubflowInput(RequestContext context)
          Create the input data map for the spawned subflow session.
protected  ViewSelection doEnter(RequestControlContext context)
          Specialization of State's doEnter template method that executes behaviour specific to this state type in polymorphic fashion.
 FlowAttributeMapper getAttributeMapper()
          Returns the attribute mapper used to map data between the parent and child flow, or null if no mapping is needed.
 Flow getSubflow()
          Returns the subflow spawned by this state.
 ViewSelection onEvent(RequestControlContext context)
          Called on completion of the subflow to handle the subflow result event as determined by the end state reached by the subflow.
 void setAttributeMapper(FlowAttributeMapper attributeMapper)
          Set the attribute mapper used to map model data between the parent and child flow.
 
Methods inherited from class org.springframework.webflow.engine.TransitionableState
exit, getExitActionList, getRequiredTransition, getTransitions, getTransitionSet, reenter
 
Methods inherited from class org.springframework.webflow.engine.State
enter, equals, getEntryActionList, getExceptionHandlerSet, getFlow, getId, getOwner, handleException, hashCode, isStartState, toString
 
Methods inherited from class org.springframework.webflow.engine.AnnotatedObject
getAttributeMap, getAttributes, getCaption, getDescription, setCaption, setDescription
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.springframework.webflow.definition.StateDefinition
getId, getOwner
 
Methods inherited from interface org.springframework.webflow.definition.Annotated
getAttributes, getCaption, getDescription
 

Constructor Detail

SubflowState

public SubflowState(Flow flow,
                    java.lang.String id,
                    Flow subflow)
             throws java.lang.IllegalArgumentException
Create a new subflow state.

Parameters:
flow - the owning flow
id - the state identifier (must be unique to the flow)
subflow - the subflow to spawn
Throws:
java.lang.IllegalArgumentException - when this state cannot be added to given flow, e.g. because the id is not unique
See Also:
setAttributeMapper(FlowAttributeMapper)
Method Detail

getSubflow

public Flow getSubflow()
Returns the subflow spawned by this state.


getAttributeMapper

public FlowAttributeMapper getAttributeMapper()
Returns the attribute mapper used to map data between the parent and child flow, or null if no mapping is needed.


setAttributeMapper

public void setAttributeMapper(FlowAttributeMapper attributeMapper)
Set the attribute mapper used to map model data between the parent and child flow. Can be null if no mapping is needed.


doEnter

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

Entering this state, creates the subflow input map and spawns the subflow in the current flow execution.

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
Returns:
a view selection containing model and view information needed to render the results of the state execution
Throws:
FlowExecutionException - if an exception occurs in this state

createSubflowInput

protected MutableAttributeMap createSubflowInput(RequestContext context)
Create the input data map for the spawned subflow session. The returned map will be passed to Flow.start(RequestControlContext, MutableAttributeMap).


onEvent

public ViewSelection onEvent(RequestControlContext context)
Called on completion of the subflow to handle the subflow result event as determined by the end state reached by the subflow.

Overrides:
onEvent in class TransitionableState
Parameters:
context - the flow execution control context
Returns:
the selected view

appendToString

protected void appendToString(org.springframework.core.style.ToStringCreator creator)
Description copied from class: State
Subclasses may override this hook method to stringify their internal state. This default implementation does nothing.

Overrides:
appendToString in class TransitionableState
Parameters:
creator - the toString creator, to stringify properties


Copyright © 2004-2007. All Rights Reserved.