org.springframework.batch.core.job.flow.support

## 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

  A `Flow` that branches conditionally depending on the exit status of the last `State`. 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 and 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 and 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)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SimpleFlow

          public SimpleFlow(java.lang.String name)

      Create a flow with the given name.
      Parameters:
        `name` - the name of the flow

  - ### 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 interface `Flow`
      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.
      Specified by:
        `getState` in interface `Flow`
      Returns:
        the State

    - #### getStates

          public java.util.Collection<State> getStates()

      Convenient accessor for clients needing to explore the states of this flow.
      Specified by:
        `getStates` in interface `Flow`
      Returns:
        the states

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws java.lang.Exception

      Locate start state and pre-populate data structures needed for execution.
      Specified by:
        `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`
      Throws:
        `java.lang.Exception`
      See Also:
        `InitializingBean.afterPropertiesSet()`

    - #### start

          public FlowExecution start(FlowExecutor executor)
                              throws FlowExecutionException

      Specified by:
        `start` in interface `Flow`
      Throws:
        `FlowExecutionException`
      See Also:
        `Flow.start(FlowExecutor)`

    - #### resume

          public FlowExecution resume(java.lang.String stateName,
                                      FlowExecutor executor)
                               throws FlowExecutionException

      Specified by:
        `resume` in interface `Flow`
      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`
      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

      Returns:
        the next `Step` (or null if this is the end)
      Throws:
        `FlowExecutionException`

    - #### isFlowContinued

          protected boolean isFlowContinued(State state,
                                            FlowExecutionStatus status,
                                            StepExecution stepExecution)