public class SimpleJobRepository extends java.lang.Object implements JobRepository
Implementation of JobRepository
that stores JobInstances,
JobExecutions, and StepExecutions using the injected DAOs.
JobRepository
,
JobInstanceDao
,
JobExecutionDao
,
StepExecutionDao
Constructor and Description |
---|
SimpleJobRepository(JobInstanceDao jobInstanceDao,
JobExecutionDao jobExecutionDao,
StepExecutionDao stepExecutionDao,
ExecutionContextDao ecDao) |
Modifier and Type | Method and Description |
---|---|
void |
add(StepExecution stepExecution)
Save the
StepExecution and its ExecutionContext . |
void |
addAll(java.util.Collection<StepExecution> stepExecutions)
Save a collection of
StepExecution s and each ExecutionContext . |
JobExecution |
createJobExecution(JobInstance jobInstance,
JobParameters jobParameters,
java.lang.String jobConfigurationLocation)
Create a new
JobExecution based upon the JobInstance it's associated
with, the JobParameters used to execute it with and the location of the configuration
file that defines the job. |
JobExecution |
createJobExecution(java.lang.String jobName,
JobParameters jobParameters)
|
JobInstance |
createJobInstance(java.lang.String jobName,
JobParameters jobParameters)
Create a new
JobInstance with the name and job parameters provided. |
JobExecution |
getLastJobExecution(java.lang.String jobName,
JobParameters jobParameters) |
StepExecution |
getLastStepExecution(JobInstance jobInstance,
java.lang.String stepName) |
int |
getStepExecutionCount(JobInstance jobInstance,
java.lang.String stepName) |
boolean |
isJobInstanceExists(java.lang.String jobName,
JobParameters jobParameters)
Check if an instance of this job already exists with the parameters
provided.
|
void |
update(JobExecution jobExecution)
Update the
JobExecution (but not its ExecutionContext ). |
void |
update(StepExecution stepExecution)
Update the
StepExecution (but not its ExecutionContext ). |
void |
updateExecutionContext(JobExecution jobExecution)
Persist the updated
ExecutionContext of the given
JobExecution . |
void |
updateExecutionContext(StepExecution stepExecution)
Persist the updated
ExecutionContext s of the given
StepExecution . |
public SimpleJobRepository(JobInstanceDao jobInstanceDao, JobExecutionDao jobExecutionDao, StepExecutionDao stepExecutionDao, ExecutionContextDao ecDao)
public boolean isJobInstanceExists(java.lang.String jobName, JobParameters jobParameters)
JobRepository
isJobInstanceExists
in interface JobRepository
jobName
- the name of the jobjobParameters
- the parameters to matchJobInstance
already exists for this job name
and job parameterspublic JobExecution createJobExecution(java.lang.String jobName, JobParameters jobParameters) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException
JobRepository
Create a JobExecution
for a given Job
and
JobParameters
. If matching JobInstance
already exists,
the job must be restartable and it's last JobExecution must *not* be
completed. If matching JobInstance
does not exist yet it will be
created.
If this method is run in a transaction (as it normally would be) with
isolation level at Isolation.REPEATABLE_READ
or better, then this
method should block if another transaction is already executing it (for
the same JobParameters
and job name). The first transaction to
complete in this scenario obtains a valid JobExecution
, and
others throw JobExecutionAlreadyRunningException
(or timeout).
There are no such guarantees if the JobInstanceDao
and
JobExecutionDao
do not respect the transaction isolation levels
(e.g. if using a non-relational data-store, or if the platform does not
support the higher isolation levels).
createJobExecution
in interface JobRepository
jobName
- the name of the job that is to be executedjobParameters
- the runtime parameters for the jobJobExecution
for the arguments providedJobExecutionAlreadyRunningException
- if there is a
JobExecution
already running for the job instance with the
provided job and parameters.JobRestartException
- if one or more existing JobInstance
s
is found with the same parameters and Job.isRestartable()
is
false.JobInstanceAlreadyCompleteException
- if a JobInstance
is
found and was already completed successfully.public void update(JobExecution jobExecution)
JobRepository
JobExecution
(but not its ExecutionContext
).
Preconditions: JobExecution
must contain a valid
JobInstance
and be saved (have an id assigned).update
in interface JobRepository
jobExecution
- JobExecution
instance to be updated in the repo.public void add(StepExecution stepExecution)
JobRepository
StepExecution
and its ExecutionContext
. ID will
be assigned - it is not permitted that an ID be assigned before calling
this method. Instead, it should be left blank, to be assigned by a
JobRepository
.
Preconditions: StepExecution
must have a valid Step
.add
in interface JobRepository
stepExecution
- StepExecution
instance to be added to the repo.public void addAll(java.util.Collection<StepExecution> stepExecutions)
JobRepository
StepExecution
s and each ExecutionContext
. The
StepExecution ID will be assigned - it is not permitted that an ID be assigned before calling
this method. Instead, it should be left blank, to be assigned by JobRepository
.
Preconditions: StepExecution
must have a valid Step
.addAll
in interface JobRepository
stepExecutions
- collection of StepExecution
instances to be added to the repo.public void update(StepExecution stepExecution)
JobRepository
StepExecution
(but not its ExecutionContext
).
Preconditions: StepExecution
must be saved (have an id assigned).update
in interface JobRepository
stepExecution
- StepExecution
instance to be updated in the repo.public void updateExecutionContext(StepExecution stepExecution)
JobRepository
ExecutionContext
s of the given
StepExecution
.updateExecutionContext
in interface JobRepository
stepExecution
- StepExecution
instance to be used to update the context.public void updateExecutionContext(JobExecution jobExecution)
JobRepository
ExecutionContext
of the given
JobExecution
.updateExecutionContext
in interface JobRepository
jobExecution
- JobExecution
instance to be used to update the context.@Nullable public StepExecution getLastStepExecution(JobInstance jobInstance, java.lang.String stepName)
getLastStepExecution
in interface JobRepository
jobInstance
- JobInstance
instance containing the step executions.stepName
- the name of the step execution that might have run.public int getStepExecutionCount(JobInstance jobInstance, java.lang.String stepName)
getStepExecutionCount
in interface JobRepository
jobInstance
- JobInstance
instance containing the step executions.stepName
- the name of the step execution that might have run.@Nullable public JobExecution getLastJobExecution(java.lang.String jobName, JobParameters jobParameters)
getLastJobExecution
in interface JobRepository
jobName
- the name of the job that might have runjobParameters
- parameters identifying the JobInstance
public JobInstance createJobInstance(java.lang.String jobName, JobParameters jobParameters)
JobRepository
JobInstance
with the name and job parameters provided.createJobInstance
in interface JobRepository
jobName
- logical name of the jobjobParameters
- parameters used to execute the jobJobInstance
public JobExecution createJobExecution(JobInstance jobInstance, JobParameters jobParameters, java.lang.String jobConfigurationLocation)
JobRepository
JobExecution
based upon the JobInstance
it's associated
with, the JobParameters
used to execute it with and the location of the configuration
file that defines the job.createJobExecution
in interface JobRepository
jobInstance
- JobInstance
instance to initialize the new JobExecution.jobParameters
- JobParameters
instance to initialize the new JobExecution.jobConfigurationLocation
- String
instance to initialize the new JobExecution.JobExecution
.