개발자 편의성을 위하여 Step의 설정 항목을 입력받아 배치 작업 파일 템플릿을 자동으로 생성해주는 마법사를 제공한다.
배치 작업 설정 항목 중 Step 내에 설정할 수 있는 기본적인 항목을 사용자가 입력하는 마법사를 제공한다.
항목 | 설명 | 기본값 |
---|---|---|
Job ID | 배치 작업 파일 생성시 하나의 프로세스를 나타내는 작업명 | Step을 Add할 Job의 ID |
Step Type | 한번에 하나의 Step을 처리하는 Normal과 여러 쓰레드가 분산 수행되어 파일을 나눠 처리할 수 있는 Partition(File) 중 택일하여 설정 가능 | Normal |
Step ID | 하나의 Job내부에서 독립적으로 일어나는 프로세스명 | 사용자 지정 |
next | Step 혹은 Decision이 하나이상 등록되어진 상태에서 현재 등록 중인 Step 다음 수행될 Step 또는 Decision 지정 | 사용자 지정 |
Reader | 입력 자원의 타입에 따라 Item을 입력받기 위한 설정 | 사용자 지정 |
Writer | 출력 자원의 타입에 따라 Item을 출력하기 위한 설정 | 사용자 지정 |
Commit-Interval | 한 transaction에 처리되는 자원의 양 (1이상) | 사용자 지정 |
Step Listeners | Step 수행 중 발생한 이벤트를 처리하기 위한 설정 | 사용자 지정 |
Chunk Listeners | Chunk 수행 중 발생한 이벤트를 처리하기 위한 설정 | 사용자 지정 |
Shared values | 하나의 Job내에 여러 Step들이 하나의 Key를 통해 정보를 공유하기 위한 Key 설정 | 사용자 지정 |
배치 작업의 구성요소에 대해 더 자세한 설명이 필요한 경우 다음을 참고한다.
주의
✔ 하나의 Job 내에 두 개 이상의 Step을 등록할 경우 반드시 Next를 지정해주어야 한다.
✔ next 등록시 무한 루프를 돌지 않도록 Step 혹은 Decision을 등록해야 한다.
✔ Spring의 경우 bean id 중복을 불허하기 때문에 전자정부 프레임워크 배치개발환경에서도 기존에 등록된 bean id의 중복 등록을 방지하고 있다.
SampleStep1 설정 | SampleStep2 설정 |
---|---|
위의 위자드 사용 예제를 통해 Shared Value를 설정한 XML이다. XML에 보이듯이 TestStep1에서 설정한 'FlatFileItemReader.read.count'가 Key값으로 설정 되있는 것을 볼 수 있다.
결과적으로 TestStep1에서 'FlatFileItemReader.read.count' Key에 해당하는 정보를 TestStep2에서 'FlatFileItemReader.read.count' Key를 통해 사용할 수 있게 된다.
<job id="TestJob" restartable="true" xmlns="http://www.springframework.org/schema/batch"> <step id="TestStep1" next="TestStep2"> <tasklet> <chunk reader="TestJob.TestStep1.FixedFlatFileItemReader" writer="TestJob.TestStep1.DelimitedFlatFileItemWriter" commit-interval="3" /> </tasklet> <listeners> <listener> <bean class="org.springframework.batch.core.listener.ExecutionContextPromotionListener" xmlns="http://www.springframework.org/schema/beans"> <property name="keys"> <list> <value>FlatFileItemReader.read.count</value> </list> </property> </bean> </listener> </listeners> </step> <step id="TestStep2"> <tasklet> <chunk reader="TestJob.TestStep2.FixedFlatFileItemReader" writer="TestJob.TestStep2.DelimitedFlatFileItemWriter" commit-interval="3" /> </tasklet> </step> </job>