1. 배치작업 플로우 정의
배치작업의 정의는 Job의 기본 속성과 Step 플로우를 정의하는 것으로 구분된다. 다음은 프레임워크에서 지원 가능한 속성과 Step 플로우를 설명한다.
2. 배치작업 속성
restartable: 이전에 실행되어 오류상태로 중단된 배치가 재시작될 수 있는지를 설정값이다.
※ 주의 : 웹어드민 배치 작업관리에서 파라미터 중복 실행 설정이 "Y" 인 경우에는 처음부터 재실행 하여 해당 옵션이 적용되지 않는다.
<job id="BMdpLoadCustData" restartable="true">
<step id="BMdpLoadCustData100" next="BMdpLoadCustData200"/>
…
</job>
3. Step 플로우
3.1. Step 순차 플로우
배치작업에서 가장 일반적으로 정의할 수 있는 Step의 실행 플로우로 프레임워크는 가장 먼저 정의된 Step을 실행한 후 "next" 속성에 이름이 지정된 Step을 찾아 순차적으로 실행한다. Step의 실행 중 오류가 발생하면 배치작업은 더 이상 진행되지 않고 실행 오류를 발생시킨다.
<job id="BMdpLoadCustData" restartable="true">
<step id="BMdpLoadCustData100" next="BMdpLoadCustData200"/>
<step id="BMdpLoadCustData200" next="BMdpLoadCustData300"/>
<step id="BMdpLoadCustData300"/>
</job>
3.2. Step 실행 결과 분기 플로우
배치작업의 실행은 일반적으로는 단위 Step에서 오류가 발생한 경우 실행오류가 발생하면서 배치작업이 중단되는 것으로 진행된다. 그러나 "특정 파일을 읽어서 처리하는 Step이 실패하면 DB에서 데이터를 조회하여 처리하는 Step이 실행되도록 해야 하는 예"와 같은 업무요건에서는 다음과 같이 Step의 실패를 판단하여 다른 Step을 실행하는 형태로 플로우를 정의할 수 있다.
<job id="BMdpLoadCustData">
<step id="BMdpLoadCustData100">
<next on="COMPLETED" to="BMdpLoadCustData200"/> <!-- 정상 -->
<next on="*" to="BMdpLoadCustData300"/> <!-- 정상 이외의 결과 값 -->
</step>
<step id="BMdpLoadCustData200"/>
<step id="BMdpLoadCustData300"/>
</job>
3.3. Step 병렬 실행 플로우
배치작업의 특성상 내부에서 실행되는 일부 단위 Step들은 순서와 상관없이 처리될 수 있는 경우가 있다.
예를 들어 B업무데이터를 파일에서 DB에 저장하는 Step B와 C업무데이터를 파일에서 DB로 저장하는 Step C, 그리고 Step B와 Step C의 결과로 저장된 B업무데이터와 C업무데이터를 조회하여 리포트를 생성하는 Step D로 구성된 배치작업에서는 Step B와 Step C는 작업순서에 상관없이 동시에 실행될 수 있으며, Step C는 앞선 Step들이 모두 완료된 후 실행되어야 한다. 이러한 요건을 반영하기 위해 아래의 예제처럼 순서에 상관없는 Step들을 동시에 처리하여 다음 Step으로 진행하도록 하는 플로우를 정의할 수 있다.
<job id="BMdpLoadCustData">
<split id="BMdpLoadCustData100" next="BMdpLoadCustData200">
<flow>
<step id="BMdpLoadCustData101">
<tasklet tm-datasource="MainDS"/>
</step>
</flow>
<flow>
<step id="BMdpLoadCustData102">
<tasklet tm-datasource="MainDS"/>
</step>
</flow>
</split>
<step id="BMdpLoadCustData200"/>
</job>
참고로, Split을 사용하는 경우에는 해당 Step에서 사용하는 DataSource를 "tm-datasource" 속성 값을 이용하여 정의하여야 한다.