JobOperator는 JobRegistry, JobExplorer, JobLauncher, JobRepository 클래스를 통해 Job의 InstanceId, ExecutionId, JobName을 이용하여 job을 제어하여 일반적인 모니터링 작업을 위해 사용한다.
JobOperator는 배치운영자가 의해 이루어지는 배치작업의 stopping, restarting, 또는 summarizing와 같은 모니터링 작업을 제공한다. Spring 배치는 JobOperator 인터페이스를 통해 아래의 작업의 유형을 제공한다.
public interface JobOperator { List<Long> getExecutions(long instanceId) throws NoSuchJobInstanceException; List<Long> getJobInstances(String jobName, int start, int count) throws NoSuchJobException; Set<Long> getRunningExecutions(String jobName) throws NoSuchJobException; String getParameters(long executionId) throws NoSuchJobExecutionException; Long start(String jobName, String parameters) throws NoSuchJobException, JobInstanceAlreadyExistsException, JobParametersInvalidException; Long restart(long executionId) throws JobInstanceAlreadyCompleteException, NoSuchJobExecutionException, NoSuchJobException, JobRestartException, JobParametersInvalidException; Long startNextInstance(String jobName) throws NoSuchJobException, JobParametersNotFoundException, JobRestartException, JobExecutionAlreadyRunningException, JobInstanceAlreadyCompleteException, UnexpectedJobExecutionException, JobParametersInvalidException; boolean stop(long executionId) throws NoSuchJobExecutionException, JobExecutionNotRunningException; String getSummary(long executionId) throws NoSuchJobExecutionException; Map<Long, String> getStepExecutionSummaries(long executionId) throws NoSuchJobExecutionException; Set<String> getJobNames(); }
JobOperator 인터페이스의 구현클래스로는 SimpleJobOperator가 제공된다. JobLauncher,JobRepository, JobExplorer 및 JobRegistry를 사용하여 아래의 기능들을 제공한다.
메소드명 | 설 명 | 파라미터 |
---|---|---|
getExecutions | instanceId를 이용하여 JobExecutions의 id들을 얻는다. | instanceId |
getJobInstances | start 인덱스부터 count만큼의 JobInstances의 id들을 얻는다. | jobName,int start,int count |
getRunningExecutions | jobName을 이용하여 실행중인 Job의 JobExecutions의 id을 얻는다. | jobName |
getParameters | Job의 Execution id를 이용하여 Parameters를 얻는다. | executionId |
start | Job 이름, Job Parameter를 이용하여 Job을 시작한다. | jobName,parameters |
restart | JobExecution의 ID를 이용하여, 정지되었거나 이미 종료 된 Job 중 재실행 가능한 Job 을 재시작한다. | executionId |
startNextInstance | jobName를 이용하여 다음 instance를 얻은 후 Job을 실행한다. | jobName |
stop | Job의 Execution ID를 이용하여, 실행 중인 Job을 정지시킨다. | executionId |
getSummary | Job의 Execution ID를 이용하여, JobExecution의 정보를 String 형태로 얻는다. | executionId |
getStepExecutionSummaries | Job의 Execution ID를 이용하여, Job에 해당하는 StepExecution들의 정보를 String으로 변환하여 MAP의 형태로 얻는다. | executionId |
getJobNames | 실행가능한 Job들의 이름을 얻는다. |
SimpleJobOperator클래스를 이용한 JobOperator의 설정은 아래와 같다. jobLauncher, jobExplorer, jobRepository, jobRegistry의 설정이 필수이다.
<bean id="jobOperator" class="org.springframework.batch.core.launch.support.SimpleJobOperator" p:jobLauncher-ref="jobLauncher" p:jobExplorer-ref="jobExplorer" p:jobRepository-ref="jobRepository" p:jobRegistry-ref="jobRegistry" />