본문 바로가기

강의/스프링배치

SpringBatch - Transition - 배치상태 유형 (BatchStatus / ExitStatus / FlowExecutionStatus)

 

Transition

스프링 배치에서 transition은 전환한다 또는 전이된다 라는 개념을 가지고 있다.

조건에 따라서 job이 실행되고 step이 실행될 때

해당 흐름들을 a또는 b또는 c로 전환 시킬 수 있는 기능들을 가지고 있고

a 상태에 따라서 b가 호출되고 b 상태에 따라서 c로 넘어가는 등에

상태 전이의 개념을 가지고 있다.

 

배치 상태에는 배치가 최종적으로 어떻게 실행을 마치는지 (최종 결과 상태, step과 job이 어떤 상태로 종료 되었는)

batch status 상태 정보가 있고

 

현재 배치가 어떤 종료 코드를 가지고 있는지에 대한

Exit status 상태 정보가 있다.

 

Transition이 가지고 있는 api인

on() / to() / stop() , fail(), end(), stopAndRestart()

 

총 3가지의 배치 상태 유형이 존재한다.

BatchStatus, ExitStatus, FlowExecutionStatus

 

우선 batchStatus 부터 살펴보자

 

flow는 step을 포함하고 있고

flow 내에서 step이 실행되고

마지막 step의 exitstatus 값을

flowexecutionStatus 값으로 저장하고

마지막 flow의 FlowExecutionStatus 값을 job의 최종 batchstatus 값으로 반영

 

batchStatus는 총 8개의 상태값을 가지고 있다.

ABANDONED는 처리를 완료했지만 성공하지 못한 단계(Failed)와 재시작시 건너 뛰어야하는 단계를 의미한다.

일반적으로 fail이면 재시작이 가능하지만

ABANDONED는 실패한 것은 맞지만 재시작은 불가능한 단계이다.

 

BatchStatus는 batch 실행 상태

ExitStatus는 종료 코드

기본적으로 BatchStatus와 ExitStatus는 동일

ExitStatus가 failed 이면 BatchStatus는 failed

ExitStatus가 Completed이면 BatchStatus는 Completed

 

임의의 값을 우리가 설정을 해서 batchStatus와 exitStatus가 쌍으로 똑같이 가지 않고

개별적으로 값을 저장하는 기능도 구현은 가능하다.

 

ExitStatus 값을 설정하는 것은

BatchStatus 값을 설정하는 로직과 동일하다.

 

FlowJob에는 내부에 Flow가 있고 그 안에는 FlowExecution이 있다.

 

 

 

 

'강의 > 스프링배치' 카테고리의 다른 글

스프링 배치 - 사용자 정의 ExitStatus  (0) 2023.01.29
스프링 배치 실행 - Transition  (0) 2023.01.27
Job and flow  (0) 2023.01.25
JobStep  (0) 2023.01.21
TaskletStep 아키텍처  (0) 2023.01.21