강의/스프링배치 (33) 썸네일형 리스트형 SimpleFlow 예 flow는 또다른 flow를 구성할 수 있다 . 아키텍처를 살펴보자. flowbuilder에서 step이라는 type의 객체를 설정했다면 내부적으로 flowbuilder는 stepstate라는 객체를 만들고 이 객체안에 step을 저장한다. on 메서드에는 Exitstatus 값과 매칭되는 값을 설정할 수 있다. flow type 객체를 생성하면 flowstate라는 객체를 생성하고 flow를 저장한다. decider type의 객체를 설정하면 내부적으로 DecisionState 객체를 생성하고 JobExecutionDecider를 저장한다. SplitState는 여러 flow를 병렬적으로 동시에 실행하고자 할 때 SplitState api를 사용한다. StateTransition이라는 클래스가 있다. .. 스프링 배치 - SimpleFlow 1. 기본 개념 simpleFlow는 state를 가지고 있고 state는 안에 있는 요소들을 (Step, Flow, JobExecutionDecider) 다시 실행시키는 형식이다. 각각의 메서드를 계속 실행시키는 메서드가 resume이다. simpleFlow가 수행하는 비중이 크고 flowjob을 구성했을 때 여기에 대한 api 와 설정들이 simpleFlow 속성들에 다 저장이 되고 simpleFlow가 모든 흐름들을 제어하기 때문에 simpleFlow의 내부적인 동작이나 원리를 이해하는 것이 중요하다. simpleFlow는 각각의 속성들을 아래와 같이 가지고 있다. simpleFlow의 중요한 속성인 state를 알아보자. state는 handle 메서드를 통해서 start, next에 설정한 요소.. Flowjob architecture Job에는 두가지 종류가 있다. SimpleJob FlowJob - 내부적인 프로세스가 차이가 있다. 조금 더 복잡하고 , SimpleFlow 객체를 가지고 있는데 이게 흐름을 handling 하고 있다. JobLauncher가 FlowJob을 실행시킨다. (JobParameters를 가지고 JobLauncher를 실행하는데, JobInstance, JobExecution Executioncontext 객체를 생성한다.) FlowJob은 FlowExecutor를 가지고 job을 실행한다. FlowExecutor가 simpleFlow를 실행시킨다. SimpleFlow가 모든 항목들을 가지고 있다. (Flow를 실행시킴으로 인해 발생되는 모든 것을 가지고 있다.) SimpleFlow는 state라는 속성이 .. 스프링 배치 - JobExecutionDecider flowJob 을 구성할 때 stop on to end를 연결하여 하나의 flow를 연결하였다. step은 일종의 buisiness 로직을 담는 부분인데 stop on to end와 강한 결합이 생기고 on to end 이런 api가 복잡하게 구성될 수 있다. 여러 step을 구성하다보면 전체적인 step을 파악하기가 어렵다. jobExecutionDecider는 Transition 처리를 위한 전용 클래스 이기 때문에 내부적인 로직을 통해 flow 흐름을 제어할 수 있다. 훨씬 간단하게 심플하게 구성할 수 있다. transitional api를 사용하는 보다 더 깔끔하게 구성할 수 있다. configuration package io.springbatch.springbatch.jobExecutionDec.. 스프링 배치 - 사용자 정의 ExitStatus 상태값이 이미 정의 되어있다. Complete Stopped Failed Executing Unknow Noop 이미 정의된 것 외에도 사용자가 직접 지정하여 사용할 수 있다. StepExecutionListener의 afterStep() 메서드에서 Custom exitCode를 생성 후 새로운 ExitStatus 반환 가능 getCompositieListener 를 호출하면 우리가 StepExecutionListener을 구현한 구현체가 호출이 된다 package io.springbatch.springbatch.customExitStatus; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.ExitStatus; i.. 스프링 배치 실행 - Transition 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의 조건부 실행이 가능하도록.. 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(), sto.. Job and flow job과 step은 고정되고 정해진 패턴과 순서 그러한 흐름들을 구성될 때 job과 step으로 구성할 수 있지만 flow라는 개념은 정해진 순서나 패턴이 아닌 유연하고 상대적으로 복잡한 흐름들을 구성할 수 있다. 이번에는 job과 flow에 대한 개념들을 이해해보자. Flow job 개념 및 api 소개 step을 순차적으로 구성하는 것이 아닌 특정한 상태에 따라 흐름을 전환하도록 구성할 수 있으며 flow job builder에 의해 생성된다. step이 실패 하더라도 job은 실패로 끝나지 않도록 해야 하는 경우 (Simple job으로는 불가능) step이 성공 했을 때 다음에 실행해야 할 step을 구분해서 실행 해야 하는 경우 특정 step은 전혀 실행되지 않게 구성 해야 하는 경우 Flow와.. 이전 1 2 3 4 5 다음