후행 처리 메인
후행 처리 메인 테이블인 BXM_DEFERRED_MAIN 과 각 컬럼의 기능에 대해서 설명한다.
1. BXM_DEFERRED_MAIN 테이블
BXM_DEFERRED_MAIN 테이블에는 후행 처리를 동작 시키기 위한 설정 및 후행 처리 제어 기능 등이 정의 되어 있다.
BXM_DEFERRED_MAIN 테이블 구조는 다음과 같다.
컬럼(물리 명) | 컬럼(논리 명) | PK여부 | 타입 |
---|---|---|---|
DOMAIN_ID |
도메인 ID |
PK1 |
VARCHAR2(14) |
DEFERRED_ID |
후행 처리 ID |
PK2 |
VARCHAR2(20) |
TRX_CD |
거래코드 |
VARCHAR2(12) |
|
BXM_APP_ID |
BXM어플리케이션ID |
VARCHAR2(40) |
|
SVC_NM |
서비스 명 |
VARCHAR2(512) |
|
OP_NM |
오퍼레이션 명 |
VARCHAR2(512) |
|
DEFERRED_NM |
후행 처리 명 |
VARCHAR2(100) |
|
USE_YN |
사용여부 |
VARCHAR2(1) |
|
ERR_STOP_YN |
에러중지여부 |
VARCHAR2(1) |
|
ERR_SKIP_YN |
에러SKIP여부 |
VARCHAR2(1) |
|
NODE_EXEC_YN |
노드별실행여부 |
VARCHAR2(1) |
|
START_TYPE_CD |
시작유형코드 |
VARCHAR2(1) |
|
SVC_PROC_CD |
서비스처리코드 |
VARCHAR2(1) |
|
DEFERRED_TRAN_CD |
후행처리트랜잭션코드 |
VARCHAR2(1) |
|
EXEC_INTERVAL_SEC |
실행주기 초 |
NUMBER(8) |
|
DELAY_INTERVAL_SEC |
지연주기 초 |
NUMBER(8) |
|
FETCH_CNT |
조회 건수 |
NUMBER(5) |
|
PARLL_EXEC_CNT |
병렬실행 수 |
NUMBER |
|
TARGET_TABLE_NM |
대상테이블 명 |
VARCHAR2(100) |
|
DAY_TABLE_YN |
일별테이블여부 |
VARCHAR2(1) |
|
TARGET_COLUMN_NM |
대상컬럼 명 |
VARCHAR2(100) |
|
TARGET_STD_DT_NM |
기준일자 명 |
VARCHAR2(100) |
|
TABLE_READER_BEAN_NM |
테이블리더빈 명 |
VARCHAR2(100) |
|
TABLE_NUMBERING_USE_YN |
테이블채번사용여부 |
VARCHAR2(1) |
|
TABLE_NUMBERING_BXM_APP_ID |
BXM어플리케이션ID |
VARCHAR2(40) |
|
TABLE_NUMBERING_BEAN_NM |
테이블채번빈 명 |
VARCHAR2(100) |
|
ERR_REPROC_CNT |
재처리횟수 |
NUMBER |
|
REPROC_ABLE_ERR_CD |
재처리가능에러코드 |
VARCHAR2(512) |
|
MODIFY_USER_ID |
사용자ID |
VARCHAR2(32) |
|
MODIFY_OCCUR_DTTM |
발생 일시 |
VARCHAR2(23) |
2. BXM_DEFERRED_MAIN 테이블 컬럼 설명
2.2. DEFERRED_ID(후행처리ID)
후행 처리를 식별하는 유니크 한 값이다. 프로젝트에서는 DEFERRED_ID(후행처리ID) 에 대한 표준을 정의 할 필요가 있다.
예) 후행처리식별 자(1) + Application ID(3) + 일련번호(4) : DCOM0001
2.3. TRX_CD(거래코드)
후행 처리 서비스를 식별하기 위한 ID 로서, 온라인 서비스의 식별 ID 와 동일하다.
TRX_CD (거래코드) 를 정의한다면, 후행 처리 서비스 선 처리에서 거래(서비스) 파라 미터를 조회하여 BXM 어플리케이션 명, 서비스 명, 오퍼레이션 명을 조회하여 서비스를 호출 하여야 한다.
2.8. USE_YN(사용여부)
등록된 후행 처리를 수행할지에 대하여 판단한다. 'N’으로 설정되어 있으면 후행 처리는 동작하지 않는다.
컬럼 값 | 설명 |
---|---|
Y |
후행 처리 수행 |
N |
후행 처리 수행하지 않음 |
2.9. ERR_STOP_YN(에러중지여부)
후행 처리 서비스에서 에러가 발생할 경우 후행 처리를 중지 할 것인지, 계속 후행 처리를 수행 할 것인지에 대한 FLAG이다. ERR_STOP_YN = 'Y' 일 경우 에러 발생 시 다른 노드도 중단된다.
에러 중지 상태일 때는, WebAdmin 화면을 통해 해당 노드를 재수행 해줘야 후행 처리가 재실행된다.
컬럼 값 | 설명 |
---|---|
Y |
에러 발생 시 후행 처리 중지 |
N |
에러 발생 시 후행 처리 중지하지 않음 |
2.10. ERR_SKIP_YN(에러SKIP여부)
후행 처리 서비스에서 에러가 발생할 경우 에러가 발생한 실행 정보를 반복해서 재처리 할 것인지, 에러가 발생한 실행정보를 SKIP하고 계속 진행 할 것이지 에 대한 FLAG이다.
'Y’로 설정되어 있는 경우, 에러가 발생하면 별도의 에러처리 Processor 가 동작하여 에러에 대한 재처리를 수행한다.
참고로, ERR_SKIP_YN(에러SKIP여부)는 ERR_STOP_YN(에러중지여부) 값이 'N’으로 설정되어 있는 경우에만 동작한다.
컬럼 값 | 설명 |
---|---|
Y |
에러 SKIP 하지 않음 |
N |
에러 SKIP 함 |
2.11. NODE_EXEC_YN(노드별실행여부)
후행 처리를 노드별로 수행할지에 대하여 처리하는 FLAG 값 이다.
해당 컬럼 값은 타겟 테이블과 관련 있다. 타겟 테이블의 일련번호가 노드별로 넘버링이 되어 있는 경우에는 'Y’로 설정하여, 후행 처리가 노드별로 동작할 수 있도록 하여야 하고, 그렇지 않은 경우에는 'N’으로 설정하여야 한다.
컬럼 값 | 설명 |
---|---|
Y |
단일 노드 처리 |
N |
분산 처리 |
2.12. START_TYPE_CD(시작유형코드)
후행 처리 시작 시 자동/수동 시작인지 판단하는 코드이다.
자동(1) 으로 설정한 경우에는 업무마감이 완료되고, 일자가 새로운 영업일자로 변경이 되었을 경우 자동으로 후행 처리 영업일자를 변경하여 수행. (커스텀 영역) 수동(0) 으로 설정한 경우에는 업무마감 후에 영업일자를 배치 혹은 Command 등으로 변경해야 후행 처리가 다시 시작이 된다.
코드 | 코드명 |
---|---|
0 |
수동 |
1 |
자동 |
2.13. SVC_PROC_CD(서비스처리코드)
후행 처리 서비스 입력 값으로 타겟 테이블에서 조회(Fetch)한 일련번호를 1개씩 전달 할 것인지, 혹은 시작일련번호, 종료일련번호를 전달할 것인지 판단하는 코드 이다.
1개씩 전달은 조회한 일련번호 개수만큼 서비스를 호출 한다. 시작일련번호, 종료일련번호를 전달은 서비스를 1번만 호출하여 후행 처리 서비스에서 Fetch 대상에 대해서 처리한다.
코드 | 코드명 |
---|---|
1 |
서비스 호출(1건) |
2 |
서비스 호출(전체) |
2.14. DEFERRED_TRAN_CD(후행처리트랜잭션코드)
후행 처리 서비스 호출 시 후행 처리의 트랜잭션 처리를 어떻게 할 것인지 정의하여 놓은 코드이다.
코드 | 코드명 |
---|---|
1 |
트랜잭션 처리 하지 않음 |
3 |
트랜잭션 처리 |
2.15. EXEC_INTERVAL_SEC(실행주기 초)
Deferred Processor 가 타겟 테이블 일련번호를 조회 하여 대상 건수가 없을 경우 실행 주기 초 만큼 대기 후 종료 한다. 단위는 초 이다.
대상 건수가 없을 경우 Deferred Processor 는 종료한다.
2.16. DELAY_INTERVAL_SEC(지연주기 초)
타겟 테이블을 일정 시간 이후에 조회하기 위한 컬럼 이다.
예를 들면, 타겟 테이블에 일련번호가 12:30:30초 에 등록돼있고 지연주기초가 30초라면, 해당 일련번호는 12:31:00 이후에 조회가 된다.
2.17. FETCH_CNT(FETCH건수)
타겟 테이블에서 일련번호를 조회 하는 개수이다.
만일 타겟 테이블의 대상 건수가 조회 건수보다 적을 경우에는 타겟테이블의 대상 건수만큼 가져온다.
예) FETCH 건수가 100 으로 설정 : 시작일련번호 1, 종료일련번호 100 을 가져온다.
2.18. PARLL_EXEC_CNT(병렬실행 수)
Deferred Processor, Deferred Error Processor 의 최대 실행 개수를 정의하는 컬럼 이다. (스레드 단위)
2.19. TARGET_TABLE_NM(대상테이블 명)
대상테이블명에 해당하는 테이블에서 일련번호를 조회한다.
후행 처리 메인 테이블에 TABLE_READER_BEAN_NM (테이블리더빈명) 이 정의되어 있지 않은 경우에는 프레임워크에서 제공하는 타겟테이블 조회 Interface(IDeferredApTableReader)에서 일련번호 조회 쿼리를 이용하여 일련번호를 조회 한다.
2.20. DAY_TABLE_YN(일별테이블여부)
후행 처리 타겟 테이블이 일별파티션으로 구성되어져 있는지를 판단하는 컬럼이다.
'Y’로 설정할 경우에는 타겟 테이블 조회 Interface(IDeferredApTableReader) 에서 영업일자를 기존으로 타겟 테이블을 재정의 한다.
예) 테이블 명 : APTABLE, 일별테이블여부 : Y, 영업일자 : 20160509 인 경우
- APTABLE_01
2.21. TARGET_COLUMN_NM(대상컬럼 명)
일련번호 명 = 대상컬럼 명
예) 대상컬럼 명 : LOG_SEQ 이면 대상테이블 명에서 LOG_SEQ 를 조회해온다. 단, 넘버링이 되 있어야 된다.
2.23. TABLE_READER_BEAN_NM(테이블리더빈명)
대상 테이블의 일련번호를 조회할 Bean 을 정의하는 컬럼이다.
위 컬럼에 값을 정의하지 않을 경우에는, 프레임워크의 커스터마이징으로 제공한 타겟 테이블 조회 Interface(IDeferredApTableReader) 를 호출한다.
2.24. TABLE_NUMBERING_USE_YN(테이블채번사용여부)
타겟 테이블 넘버링 Bean 을 사용할 것인지 정의하여 놓은 FLAG 값 이다.
컬럼 값 | 설명 |
---|---|
Y |
넘버링 Bean 사용 |
N |
넘버링 Bean 사용하지 않음 |
2.28. REPROC_ABLE_ERR_CD(재처리가능에러코드)
등록된 에러코드만 재처리 수행
예) BXME30000 등록돼있으면 BXM_DEFERRED_ERR_LOG 테이블에서 BXME30000 으로 등록된 것만 재처리 수행
2.29. 후행 처리 도중 에러 발생 시 조치 방법
후행 처리 도중 에러 발생 시 다양한 에러처리 방법을 지원하고 있다. 다음은 후행 처리 메인(Main)의 에러처리 옵션에 따른 에러처리 동작에 대한 설명이다.
2.30. 에러중지여부(ERR_STOP_YN) 및 에러SKIP여부(ERR_SKIP_YN)에 따른 처리
-
에러중지여부가 'Y' 인 경우
후행 처리 서비스에서 에러가 발생할 경우에 바로 후행 처리를 중지 시킨다.
만약, 병렬로 여러 개의 Deferred Processor 가 동시에 수행 중이라면 수행중인 것을 완료한 뒤 에러 중지 상태가 된다.
또한, 3개의 노드 에서 후행 처리를 하고 있는데 하나의 노드 에서 에러가 났다면 다른 2개의 노드도 중지 상태가 된다.
-
에러중지여부가 'N', 에러 SKIP 여부가 'N' 인 경우
후행 처리 서비스에서 에러가 발생하면 에러가 발생한 실행정보를 완료가 될
때까지 반복해서 처리한다.만약, 병렬로 여러 개의 Deferred Processor 가 동시에 수행되고 있다면
에러가 발생하지 않은 Deferred Processor 는 정상적으로 후행 처리를
수행한다. -
에러중지여부가 'N', 에러SKIP여부가 'Y' 인 경우
후행 처리 서비스에서 에러가 발생하면 에러정보는 후행 처리 에러로그테이블(BXM_DEFERRED_ERR_LOG)에 등록하고 정상적으로 후행 처리를 수행한다.
후행 처리 에러로그테이블(BXM_DEFERRED_ERR_LOG)에 에러가 등록이 되면, 별도의 에러처리 Processor 가 시작되어 에러에 대하여 재처리 횟수만큼 재처리를 수행한다.
3. 넘버링 방법 설정 및 그에 따른 처리 방법
후행 처리를 수행하기 위해서는 타겟 테이블 일련번호에 대하여 넘버링이
되어 있어야 한다. 넘버링 방법은 두 가지가 있다.
-
노드와 상관없이 전체 대상 데이터 넘버링
-
노드별로 대상 데이터 넘버링
이와 관련하여 후행 처리 시 노드 실행 유형에 따라 처리 방법이 달라진다.
아래 그림은 넘버링 방법 두 가지와 노드 실행 유형에 따라 후행 처리가
어떻게 되는지 나타내는 그림이다.