org.springframework.batch.core.partition.support
Class SimpleStepExecutionSplitter

java.lang.Object
  extended by org.springframework.batch.core.partition.support.SimpleStepExecutionSplitter
All Implemented Interfaces:
StepExecutionSplitter

public class SimpleStepExecutionSplitter
extends Object
implements StepExecutionSplitter

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

Constructor Summary
SimpleStepExecutionSplitter(JobRepository jobRepository, Step step)
           
SimpleStepExecutionSplitter(JobRepository jobRepository, Step step, Partitioner partitioner)
          Construct a SimpleStepExecutionSplitter from its mandatory properties.
 
Method Summary
 String getStepName()
          The name of the step configuration that will be executed remotely.
 Set<StepExecution> split(StepExecution stepExecution, int gridSize)
          Partition the provided StepExecution into a set of parallel executable instances with the same parent JobExecution.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SimpleStepExecutionSplitter

public SimpleStepExecutionSplitter(JobRepository jobRepository,
                                   Step step)

SimpleStepExecutionSplitter

public SimpleStepExecutionSplitter(JobRepository jobRepository,
                                   Step step,
                                   Partitioner partitioner)
Construct a SimpleStepExecutionSplitter from its mandatory properties.

Parameters:
jobRepository - the JobRepository
step - the target step (a local version of it)
partitioner - a Partitioner to use for generating input parameters
Method Detail

getStepName

public 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()

split

public Set<StepExecution> split(StepExecution stepExecution,
                                int gridSize)
                         throws JobExecutionException
Description copied from interface: StepExecutionSplitter
Partition the provided StepExecution into a set of parallel executable instances with the same parent JobExecution. The grid size will be treated as a hint for the size of the collection to be returned. It may or may not correspond to the physical size of an execution grid.

On a restart clients of the StepExecutionSplitter should expect it to reconstitute the state of the last failed execution and only return those executions that need to be restarted. Thus the grid size hint will be ignored on a restart.

Specified by:
split in interface StepExecutionSplitter
Parameters:
stepExecution - the StepExecution to be partitioned.
gridSize - a hint for the splitter if the size of the grid is known
Returns:
a set of StepExecution instances for remote processing
Throws:
JobExecutionException - if the split cannot be made
See Also:
StepExecutionSplitter.split(StepExecution, int)


Copyright © 2009 SpringSource. All Rights Reserved.