Class SimpleFlow
- java.lang.Object
- org.springframework.batch.core.job.flow.support.SimpleFlow
- All Implemented Interfaces:
Flow
,org.springframework.beans.factory.InitializingBean
- Direct Known Subclasses:
JsrFlow
public class SimpleFlow extends java.lang.Object implements Flow, org.springframework.beans.factory.InitializingBean
AFlow
that branches conditionally depending on the exit status of the lastState
. The input parameters are the state transitions (in no particular order). The start state name can be specified explicitly (and must exist in the set of transitions), or computed from the existing transitions, if unambiguous.- Since:
- 2.0
- Author:
- Dave Syer, Michael Minella
Constructor Summary
Constructors Constructor Description SimpleFlow(java.lang.String name)
Create a flow with the given name.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterPropertiesSet()
Locate start state and pre-populate data structures needed for execution.java.lang.String
getName()
Get the name for this flow.State
getStartState()
State
getState(java.lang.String stateName)
Retrieve the State with the given name.protected java.util.Map<java.lang.String,State>
getStateMap()
java.util.Collection<State>
getStates()
Convenient accessor for clients needing to explore the states of this flow.protected java.util.Map<java.lang.String,java.util.Set<StateTransition>>
getTransitionMap()
protected boolean
isFlowContinued(State state, FlowExecutionStatus status, StepExecution stepExecution)
protected State
nextState(java.lang.String stateName, FlowExecutionStatus status, StepExecution stepExecution)
FlowExecution
resume(java.lang.String stateName, FlowExecutor executor)
void
setStateTransitionComparator(java.util.Comparator<StateTransition> stateTransitionComparator)
void
setStateTransitions(java.util.List<StateTransition> stateTransitions)
Public setter for the stateTransitions.FlowExecution
start(FlowExecutor executor)
Method Detail
setStateTransitionComparator
public void setStateTransitionComparator(java.util.Comparator<StateTransition> stateTransitionComparator)
getStartState
public State getStartState()
getName
public java.lang.String getName()
Get the name for this flow.- Specified by:
getName
in interfaceFlow
- Returns:
- the name of the flow
- See Also:
Flow.getName()
setStateTransitions
public void setStateTransitions(java.util.List<StateTransition> stateTransitions)
Public setter for the stateTransitions.- Parameters:
stateTransitions
- the stateTransitions to set
getState
public State getState(java.lang.String stateName)
Retrieve the State with the given name. If there is no State with the given name, then return null.
getStates
public java.util.Collection<State> getStates()
Convenient accessor for clients needing to explore the states of this flow.
afterPropertiesSet
public void afterPropertiesSet() throws java.lang.Exception
Locate start state and pre-populate data structures needed for execution.- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
- Throws:
java.lang.Exception
- See Also:
InitializingBean.afterPropertiesSet()
start
public FlowExecution start(FlowExecutor executor) throws FlowExecutionException
- Specified by:
start
in interfaceFlow
- Parameters:
executor
- theFlowExecutor
instance to use for the flow execution.- Returns:
- a
FlowExecution
containing the exit status of the flow. - Throws:
FlowExecutionException
- thrown if error occurs during flow execution.- See Also:
Flow.start(FlowExecutor)
resume
public FlowExecution resume(java.lang.String stateName, FlowExecutor executor) throws FlowExecutionException
- Specified by:
resume
in interfaceFlow
- Parameters:
stateName
- the name of the state to resume on.executor
- the context to be passed into each state executed.- Returns:
- a
FlowExecution
containing the exit status of the flow. - Throws:
FlowExecutionException
- thrown if error occurs during flow execution.- See Also:
Flow.resume(String, FlowExecutor)
getTransitionMap
protected java.util.Map<java.lang.String,java.util.Set<StateTransition>> getTransitionMap()
getStateMap
protected java.util.Map<java.lang.String,State> getStateMap()
nextState
protected State nextState(java.lang.String stateName, FlowExecutionStatus status, StepExecution stepExecution) throws FlowExecutionException
- Parameters:
stateName
- the name of the next state.status
-FlowExecutionStatus
instance.stepExecution
-StepExecution
instance.- Returns:
- the next
Step
(or null if this is the end) - Throws:
FlowExecutionException
- thrown if error occurs during nextState processing.
isFlowContinued
protected boolean isFlowContinued(State state, FlowExecutionStatus status, StepExecution stepExecution)