Class SimpleJobOperator
java.lang.Object
org.springframework.batch.core.launch.support.SimpleJobOperator
- All Implemented Interfaces:
JobOperator,org.springframework.beans.factory.InitializingBean
public class SimpleJobOperator
extends Object
implements JobOperator, org.springframework.beans.factory.InitializingBean
Simple implementation of the JobOperator interface. Due to the amount of functionality
the implementation is combining, the following dependencies are required:
This class can be instantiated with a
JobOperatorFactoryBean to create a
transactional proxy around the job operator.- Since:
- 2.0
- Author:
- Dave Syer, Lucas Ward, Will Schipp, Mahmoud Ben Hassine
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabandon(long jobExecutionId) Mark theJobExecutionas ABANDONED.voidCheck mandatory properties.getExecutions(long instanceId) List theJobExecutionsassociated with a particularJobInstance, in reverse order of creation (and therefore usually of execution).getJobInstance(String jobName, JobParameters jobParameters) getJobInstances(String jobName, int start, int count) List theJobInstancesfor a given job name, in reverse order of creation (and therefore usually of first execution).List the available job names that can be launched withJobOperator.start(String, Properties).getParameters(long executionId) Get theJobParametersas a human readable String (new line separated key=value pairs).getRunningExecutions(String jobName) Get the id values of all the runningJobExecutionswith the given job name.getStepExecutionSummaries(long executionId) Summarise theStepExecutioninstances belonging to theJobExecutionwith the supplied id, giving details of status, start and end times etc.getSummary(long executionId) Summarise theJobExecutionwith the supplied id, giving details of status, start and end times etc.restart(long executionId) Restart a failed or stoppedJobExecution.voidsetJobExplorer(JobExplorer jobExplorer) Public setter for theJobExplorer.voidsetJobLauncher(JobLauncher jobLauncher) Public setter for theJobLauncher.voidsetJobParametersConverter(JobParametersConverter jobParametersConverter) Public setter for theJobParametersConverter.voidsetJobRegistry(ListableJobLocator jobRegistry) Public setter for theListableJobLocator.voidsetJobRepository(JobRepository jobRepository) start(String jobName, Properties parameters) Start a new instance of a job with the parameters specified.startNextInstance(String jobName) Launch the next in a sequence ofJobInstancedetermined by theJobParametersIncrementerattached to the specified job.booleanstop(long executionId) Send a stop signal to theJobExecutionwith the supplied id.
-
Constructor Details
-
SimpleJobOperator
public SimpleJobOperator()
-
-
Method Details
-
afterPropertiesSet
Check mandatory properties.- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception- See Also:
-
InitializingBean.afterPropertiesSet()
-
setJobParametersConverter
Public setter for theJobParametersConverter.- Parameters:
jobParametersConverter- theJobParametersConverterto set
-
setJobRegistry
Public setter for theListableJobLocator.- Parameters:
jobRegistry- theListableJobLocatorto set
-
setJobExplorer
Public setter for theJobExplorer.- Parameters:
jobExplorer- theJobExplorerto set
-
setJobRepository
-
setJobLauncher
Public setter for theJobLauncher.- Parameters:
jobLauncher- theJobLauncherto set
-
getExecutions
Description copied from interface:JobOperatorList theJobExecutionsassociated with a particularJobInstance, in reverse order of creation (and therefore usually of execution).- Specified by:
getExecutionsin interfaceJobOperator- Parameters:
instanceId- the id of aJobInstance- Returns:
- the id values of all the
JobExecutionsassociated with this instance - Throws:
NoSuchJobInstanceException- if theJobInstanceassociated with theinstanceIdcannot be found.
-
getJobNames
Description copied from interface:JobOperatorList the available job names that can be launched withJobOperator.start(String, Properties).- Specified by:
getJobNamesin interfaceJobOperator- Returns:
- a set of job names
-
getJobInstances
Description copied from interface:JobOperatorList theJobInstancesfor a given job name, in reverse order of creation (and therefore usually of first execution).- Specified by:
getJobInstancesin interfaceJobOperator- Parameters:
jobName- the job name that all the instances havestart- the start index of the instancescount- the maximum number of values to return- Returns:
- the id values of the
JobInstances - Throws:
NoSuchJobException- is thrown if noJobInstances for the jobName exist.
-
getJobInstance
- Specified by:
getJobInstancein interfaceJobOperator- Parameters:
jobName-Stringname of the job.jobParameters-JobParametersparameters for the job instance.- Returns:
- the
JobInstancewith the given name and parameters, ornull.
-
getParameters
Description copied from interface:JobOperatorGet theJobParametersas a human readable String (new line separated key=value pairs).- Specified by:
getParametersin interfaceJobOperator- Parameters:
executionId- the id of an existingJobExecution- Returns:
- the job parameters that were used to launch the associated instance
- Throws:
NoSuchJobExecutionException- if the id was not associated with anyJobExecution
-
getRunningExecutions
Description copied from interface:JobOperatorGet the id values of all the runningJobExecutionswith the given job name.- Specified by:
getRunningExecutionsin interfaceJobOperator- Parameters:
jobName- the name of the job to search under- Returns:
- the id values of the running
JobExecutioninstances - Throws:
NoSuchJobException- if there are noJobExecutionswith that job name
-
getStepExecutionSummaries
public Map<Long,String> getStepExecutionSummaries(long executionId) throws NoSuchJobExecutionException Description copied from interface:JobOperatorSummarise theStepExecutioninstances belonging to theJobExecutionwith the supplied id, giving details of status, start and end times etc.- Specified by:
getStepExecutionSummariesin interfaceJobOperator- Parameters:
executionId- the id of an existingJobExecution- Returns:
- a map of step execution id to String summarising the state of the execution
- Throws:
NoSuchJobExecutionException- if there is noJobExecutionwith the supplied id
-
getSummary
Description copied from interface:JobOperatorSummarise theJobExecutionwith the supplied id, giving details of status, start and end times etc.- Specified by:
getSummaryin interfaceJobOperator- Parameters:
executionId- the id of an existingJobExecution- Returns:
- a String summarising the state of the job execution
- Throws:
NoSuchJobExecutionException- if there is noJobExecutionwith the supplied id
-
restart
public Long restart(long executionId) throws JobInstanceAlreadyCompleteException, NoSuchJobExecutionException, NoSuchJobException, JobRestartException, JobParametersInvalidException Description copied from interface:JobOperatorRestart a failed or stoppedJobExecution. Fails with an exception if the id provided does not exist or corresponds to aJobInstancethat in normal circumstances already completed successfully.- Specified by:
restartin interfaceJobOperator- Parameters:
executionId- the id of a failed or stoppedJobExecution- Returns:
- the id of the
JobExecutionthat was started - Throws:
JobInstanceAlreadyCompleteException- if the job was already successfully completedNoSuchJobExecutionException- if the id was not associated with anyJobExecutionNoSuchJobException- if theJobExecutionwas found, but its correspondingJobis no longer available for launchingJobRestartException- if there is a non-specific error with the restart (e.g. corrupt or inconsistent restart data)JobParametersInvalidException- if the parameters are not valid for this job
-
start
public Long start(String jobName, Properties parameters) throws NoSuchJobException, JobInstanceAlreadyExistsException, JobParametersInvalidException Description copied from interface:JobOperatorStart a new instance of a job with the parameters specified.- Specified by:
startin interfaceJobOperator- Parameters:
jobName- the name of theJobto launchparameters- the parameters to launch it with- Returns:
- the id of the
JobExecutionthat is launched - Throws:
NoSuchJobException- if there is noJobwith the specified nameJobInstanceAlreadyExistsException- if a job instance with this name and parameters already existsJobParametersInvalidException- thrown if any of the job parameters are invalid.
-
startNextInstance
public Long startNextInstance(String jobName) throws NoSuchJobException, UnexpectedJobExecutionException, JobParametersInvalidException Description copied from interface:JobOperatorLaunch the next in a sequence ofJobInstancedetermined by theJobParametersIncrementerattached to the specified job. If the previous instance is still in a failed state, this method should still create a new instance and run it with different parameters (as long as theJobParametersIncrementeris working).
The last three exception described below should be extremely unlikely, but cannot be ruled out entirely. It points to some other thread or process trying to use this method (or a similar one) at the same time.- Specified by:
startNextInstancein interfaceJobOperator- Parameters:
jobName- the name of the job to launch- Returns:
- the
JobExecutionid of the execution created when the job is launched - Throws:
NoSuchJobException- if there is no such job definition availableUnexpectedJobExecutionException- if an unexpected condition arisesJobParametersInvalidException- thrown if some of the job parameters are invalid.
-
stop
public boolean stop(long executionId) throws NoSuchJobExecutionException, JobExecutionNotRunningException Description copied from interface:JobOperatorSend a stop signal to theJobExecutionwith the supplied id. The signal is successfully sent if this method returns true, but that doesn't mean that the job has stopped. The only way to be sure of that is to poll the job execution status.- Specified by:
stopin interfaceJobOperator- Parameters:
executionId- the id of a runningJobExecution- Returns:
- true if the message was successfully sent (does not guarantee that the job has stopped)
- Throws:
NoSuchJobExecutionException- if there is noJobExecutionwith the id suppliedJobExecutionNotRunningException- if theJobExecutionis not running (so cannot be stopped)
-
abandon
public JobExecution abandon(long jobExecutionId) throws NoSuchJobExecutionException, JobExecutionAlreadyRunningException Description copied from interface:JobOperatorMark theJobExecutionas ABANDONED. If a stop signal is ignored because the process died this is the best way to mark a job as finished with (as opposed to STOPPED). An abandoned job execution cannot be restarted by the framework.- Specified by:
abandonin interfaceJobOperator- Parameters:
jobExecutionId- the job execution id to abort- Returns:
- the
JobExecutionthat was aborted - Throws:
NoSuchJobExecutionException- thrown if there is no job execution for the jobExecutionId.JobExecutionAlreadyRunningException- if the job is running (it should be stopped first)
-