Class SimpleStepExecutionSplitter

  • All Implemented Interfaces:
    StepExecutionSplitter, org.springframework.beans.factory.InitializingBean
    Direct Known Subclasses:
    JsrStepExecutionSplitter

    public class SimpleStepExecutionSplitter
    extends java.lang.Object
    implements StepExecutionSplitter, org.springframework.beans.factory.InitializingBean
    Generic implementation of StepExecutionSplitter that delegates to a Partitioner to generate ExecutionContext instances. Takes care of restartability and identifying the step executions from previous runs of the same job. The generated StepExecution instances have names that identify them uniquely in the partition. The name is constructed from a base (name of the target step) plus a suffix taken from the Partitioner identifiers, separated by a colon, e.g. {step1:partition0, step1:partition1, ...}.
    Since:
    2.0
    Author:
    Dave Syer, Mahmoud Ben Hassine
    • Method Detail

      • afterPropertiesSet

        public void afterPropertiesSet()
                                throws java.lang.Exception
        Check mandatory properties (step name, job repository and partitioner).
        Specified by:
        afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
        Throws:
        java.lang.Exception
        See Also:
        InitializingBean.afterPropertiesSet()
      • setAllowStartIfComplete

        public void setAllowStartIfComplete​(boolean allowStartIfComplete)
        Flag to indicate that the partition target step is allowed to start if an execution is complete. Defaults to the same value as the underlying step. Set this manually to override the underlying step properties.
        Parameters:
        allowStartIfComplete - the value to set
        See Also:
        Step.isAllowStartIfComplete()
      • setJobRepository

        public void setJobRepository​(JobRepository jobRepository)
        The job repository that will be used to manage the persistence of the delegate step executions.
        Parameters:
        jobRepository - the JobRepository to set
      • setPartitioner

        public void setPartitioner​(Partitioner partitioner)
        The Partitioner that will be used to generate step execution meta data for the target step.
        Parameters:
        partitioner - the partitioner to set
      • setStepName

        public void setStepName​(java.lang.String stepName)
        The name of the target step that will be executed across the partitions. Mandatory with no default.
        Parameters:
        stepName - the step name to set
      • getStepName

        public java.lang.String getStepName()
        Description copied from interface: StepExecutionSplitter
        The name of the step configuration that will be executed remotely. Remote workers are going to execute a the same step for each execution context in the partition.
        Specified by:
        getStepName in interface StepExecutionSplitter
        Returns:
        the name of the step that will execute the business logic
        See Also:
        StepExecutionSplitter.getStepName()
      • isStartable

        protected boolean isStartable​(StepExecution stepExecution,
                                      ExecutionContext context)
                               throws JobExecutionException
        Check if a step execution is startable.
        Parameters:
        stepExecution - the step execution to check
        context - the execution context of the step
        Returns:
        true if the step execution is startable, false otherwise
        Throws:
        JobExecutionException - if unable to check if the step execution is startable