====== JobOperator ======
===== 개요 =====
JobOperator는 JobRegistry, JobExplorer, JobLauncher, JobRepository 클래스를 통해 Job의 InstanceId, ExecutionId, JobName을 이용하여 job을 제어하여 일반적인 모니터링 작업을 위해 사용한다.
===== 설명 =====
JobOperator는 배치운영자가 의해 이루어지는 배치작업의 stopping, restarting, 또는 summarizing와 같은 모니터링 작업을 제공한다. Spring 배치는 JobOperator 인터페이스를 통해 아래의 작업의 유형을 제공한다.
public interface JobOperator {
List getExecutions(long instanceId) throws NoSuchJobInstanceException;
List getJobInstances(String jobName, int start, int count) throws NoSuchJobException;
Set 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 getStepExecutionSummaries(long executionId) throws NoSuchJobExecutionException;
Set 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의 설정이 필수이다.
*[[egovframework:rte2:brte:batch_core:job_launcher|JobLauncher]]: 배치 작업을 실행한다.
*[[egovframework:rte2:brte:batch_core:job_explorer|JobExplorer]]: Repository에 접근하여 배치작업에 대한 정보를 얻는다.
*[[egovframework:rte2:brte:batch_core:job_repository|JobRepository]]: 수행되는 Job에 대한 정보를 담고 있는 저장소이다.
*[[egovframework:rte2:brte:batch_core:job_registry|JobRegistry]]: 생성된 Job을 Map 형태로 추가, 삭제 등의 관리한다.
===== 참고자료 =====
* [[egovframework:rte2:brte:batch_example:batch_runner|배치 Runner 예제]]
* [[http://static.springsource.org/spring-batch/reference/html/configureJob.html#JobOperator]]