Transition에 대해 알아보자.
Transition: 조건에 따라 흐름을 전환시키는 역할을 하는 api (on(), to() , stop() / fail() / end() / stopAndRestart())
on : 문자열을 이용하여 패턴을 지정할 수 있다. ->
step이 종료되면 나서 exitStatus라는 종료코드를 저장하는 속성이 있는데
이 값은 complete, failed, executing stop 등의 속성이 있다.
최종 결과의 상태값이 (ExitStatus) on의 패턴과 같다면 to 로 넘어가라는 뜻이다.
to 부터 stop, fail, end, stopRestart는 transitionBuilder에 존재한다.
Transition
- Flow내 Step의 조건부 실행이 가능하도록 하게 함 (정해진 순서나 규칙에 따라서 실행하는 것이 아닌 조건에 따라서 다양한 step이 실행되도록 구성할 수 있음)
- Job의 API 설정에서 on(String pattern) 메소드를 호출하면 TransitionBuilder가 반환되어 Transition Flow를 구성할 수 있음
- Step의 종료상태(ExitStatus)가 어떤 pattern과도 매칭되지 않으면 스프링 배치에서 예외를 발생하고 Job은 실패
- 매칭이 되게 구성을 해야 한다, 매칭이 되지 않으면 다음 단계를 알 수 없기 때문에 예외가 발생하는 것이다.
-
Flow가 실행되면 FlowExecutionStatus에 상태값이 저장되고 최종적으로 Job의 BatchStatus와 ExitStatus에 반영된다.
Step에 batchStatus 및 ExitStatus에는 아무런 영향을 주지 않고 job의 상태만을 변경한다.
SimpleJobBuilder에서 on 메서드를 호출하게 되면
flowjob을 구성할 수 있는 JobFlowBuilder 가 return된다.
start에 step을 넣는다고 해도 on 메서드를 이용해서 flowjob으로 만들 수 있는 것이다.
'강의 > 스프링배치' 카테고리의 다른 글
스프링 배치 - JobExecutionDecider (0) | 2023.01.29 |
---|---|
스프링 배치 - 사용자 정의 ExitStatus (0) | 2023.01.29 |
SpringBatch - Transition - 배치상태 유형 (BatchStatus / ExitStatus / FlowExecutionStatus) (0) | 2023.01.25 |
Job and flow (0) | 2023.01.25 |
JobStep (0) | 2023.01.21 |