Job에는 두가지 종류가 있다.
SimpleJob
FlowJob - 내부적인 프로세스가 차이가 있다. 조금 더 복잡하고 , SimpleFlow 객체를 가지고 있는데 이게 흐름을 handling 하고 있다.
JobLauncher가 FlowJob을 실행시킨다. (JobParameters를 가지고 JobLauncher를 실행하는데, JobInstance, JobExecution Executioncontext 객체를 생성한다.)
FlowJob은 FlowExecutor를 가지고 job을 실행한다.
FlowExecutor가 simpleFlow를 실행시킨다.
SimpleFlow가 모든 항목들을 가지고 있다.
(Flow를 실행시킴으로 인해 발생되는 모든 것을 가지고 있다.)
SimpleFlow는 state라는 속성이 있고 그 내부에 Step, Flow, Decider 라는 객체를 가지고 있다.
BatchStatus, ExitStatus 라는 상태값이 있는데 이것은 job 과 step이 가지고 있는 속성이고
FlowExecutionStatus 내용을 가지고 실제 FlowJob의 상태를 결정하게 된다.
JobExecution 안에최종적으로 상태값을 반영하는 부분이 있다.
SimpleJob과 차이가 있는 부분 StepExecution에 있는 ExitStatus, BatchStatus를 통해 JobExecution을 반영하는데
FlowExecutionStatus 객체가 가지고 있는 값들을 가지고 JobExecution status의 값을 반영한다.
클래스 상속 관계도
현재 FlowJobBuilder를 통해서 만든 FlowJob을 확인하고 있다.
'강의 > 스프링배치' 카테고리의 다른 글
SimpleFlow 예 (0) | 2023.02.06 |
---|---|
스프링 배치 - SimpleFlow (0) | 2023.01.30 |
스프링 배치 - JobExecutionDecider (0) | 2023.01.29 |
스프링 배치 - 사용자 정의 ExitStatus (0) | 2023.01.29 |
스프링 배치 실행 - Transition (0) | 2023.01.27 |