후행 처리 메인

후행 처리 메인 테이블인 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.1. DOMAIN_ID(도메인ID)

후행 처리를 할 때, 멀티 도메인을 지원하기 위한 컬럼이다. 이 컬럼을 통해 후행 처리에서 멀티 도메인 기능을 사용할 수 있다.

2.2. DEFERRED_ID(후행처리ID)

후행 처리를 식별하는 유니크 한 값이다. 프로젝트에서는 DEFERRED_ID(후행처리ID) 에 대한 표준을 정의 할 필요가 있다.

예) 후행처리식별 자(1) + Application ID(3) + 일련번호(4) : DCOM0001

2.3. TRX_CD(거래코드)

후행 처리 서비스를 식별하기 위한 ID 로서, 온라인 서비스의 식별 ID 와 동일하다.

TRX_CD (거래코드) 를 정의한다면, 후행 처리 서비스 선 처리에서 거래(서비스) 파라 미터를 조회하여 BXM 어플리케이션 명, 서비스 명, 오퍼레이션 명을 조회하여 서비스를 호출 하여야 한다.

2.4. BXM_APP_ID(BXM어플리케이션ID)

후행 처리 서비스의 어플리케션의 ID. (bxm-application.xml 에 정의되어 있는 name과 동일하다.)

2.5. SVC_NM(서비스 명)

후행 처리 서비스의 서비스 명이다. (서비스 명은 BxmService Annotation에 정의된 이름이다.)

2.6. OP_NM(오퍼레이션 명)

후행 처리 서비스의 오퍼레이션 명이다. (오퍼레이션 명은 BxmServiceOperation Annotation에 정의된 이름이다.)

2.7. DEFERRED_NM(후행 처리 명)

후행 처리의 논리 명이다.

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.22. ARGET_STD_DT_NM

대상테이블의 기준일자 컬럼을 지정. 해당 컬럼으로 기준일자 조회

ex) 대상테이블의 기준일자 컬럼 명 : BIZ_DT

2.23. TABLE_READER_BEAN_NM(테이블리더빈명)

대상 테이블의 일련번호를 조회할 Bean 을 정의하는 컬럼이다.

위 컬럼에 값을 정의하지 않을 경우에는, 프레임워크의 커스터마이징으로 제공한 타겟 테이블 조회 Interface(IDeferredApTableReader) 를 호출한다.

2.24. TABLE_NUMBERING_USE_YN(테이블채번사용여부)

타겟 테이블 넘버링 Bean 을 사용할 것인지 정의하여 놓은 FLAG 값 이다.

컬럼 값 설명

Y

넘버링 Bean 사용

N

넘버링 Bean 사용하지 않음

2.25. TABLE_NUMBERING_BXM_APP_ID(넘버링 BXM 어플리케이션 ID)

넘버링 Bean 을 가져올 BXM_APP_ID 정의

2.26. TABLE_NUMBERING_BEAN_NM(테이블채번빈 명)

타겟 테이블 넘버링 Bean 명을 정의하는 컬럼이다.

2.27. ERR_REPROC_CNT(재처리 횟수)

오류재처리 횟수 정의

2.28. REPROC_ABLE_ERR_CD(재처리가능에러코드)

등록된 에러코드만 재처리 수행

예) BXME30000 등록돼있으면 BXM_DEFERRED_ERR_LOG 테이블에서 BXME30000 으로 등록된 것만 재처리 수행

2.29. 후행 처리 도중 에러 발생 시 조치 방법

후행 처리 도중 에러 발생 시 다양한 에러처리 방법을 지원하고 있다. 다음은 후행 처리 메인(Main)의 에러처리 옵션에 따른 에러처리 동작에 대한 설명이다.

2.30. 에러중지여부(ERR_STOP_YN) 및 에러SKIP여부(ERR_SKIP_YN)에 따른 처리

  1. 에러중지여부가 'Y' 인 경우

    후행 처리 서비스에서 에러가 발생할 경우에 바로 후행 처리를 중지 시킨다.

    만약, 병렬로 여러 개의 Deferred Processor 가 동시에 수행 중이라면 수행중인 것을 완료한 뒤 에러 중지 상태가 된다.

    또한, 3개의 노드 에서 후행 처리를 하고 있는데 하나의 노드 에서 에러가 났다면 다른 2개의 노드도 중지 상태가 된다.

    에러중지여부(Y)
    Figure 1. 에러중지여부(Y)
  2. 에러중지여부가 'N', 에러 SKIP 여부가 'N' 인 경우

    후행 처리 서비스에서 에러가 발생하면 에러가 발생한 실행정보를 완료가 될
    때까지 반복해서 처리한다.

    만약, 병렬로 여러 개의 Deferred Processor 가 동시에 수행되고 있다면
    에러가 발생하지 않은 Deferred Processor 는 정상적으로 후행 처리를
    수행한다.

    에러중지여부 'N'
    Figure 2. 에러중지여부 'N', 에러 SKIP 여부 'N'
  3. 에러중지여부가 'N', 에러SKIP여부가 'Y' 인 경우

    후행 처리 서비스에서 에러가 발생하면 에러정보는 후행 처리 에러로그테이블(BXM_DEFERRED_ERR_LOG)에 등록하고 정상적으로 후행 처리를 수행한다.

    후행 처리 에러로그테이블(BXM_DEFERRED_ERR_LOG)에 에러가 등록이 되면, 별도의 에러처리 Processor 가 시작되어 에러에 대하여 재처리 횟수만큼 재처리를 수행한다.

    에러중지여부 'N'
    Figure 3. 에러중지여부 'N', 에러SKIP여부 'N'

3. 넘버링 방법 설정 및 그에 따른 처리 방법

후행 처리를 수행하기 위해서는 타겟 테이블 일련번호에 대하여 넘버링이
되어 있어야 한다. 넘버링 방법은 두 가지가 있다.

  1. 노드와 상관없이 전체 대상 데이터 넘버링

  2. 노드별로 대상 데이터 넘버링

이와 관련하여 후행 처리 시 노드 실행 유형에 따라 처리 방법이 달라진다.

아래 그림은 넘버링 방법 두 가지와 노드 실행 유형에 따라 후행 처리가
어떻게 되는지 나타내는 그림이다.

넘버링 방법에 따른 처리
Figure 4. 넘버링 방법에 따른 처리

4. 후행 처리 시작 유형에 따른 처리

시작유형코드(START_TYPE_CD)에 따라 수동 혹은 자동으로 후행 처리 할 수 있다.

4.1. 수동(코드 : 0)

업무 마감 및 일자 변경이 완료된 후, 후행 처리 스스로 변경된 일자로 수행 되지 않는다. 후행 처리 Main 노드별 상태(BXM_DEFERRED_STATUS)의 영업일자를 변경해줘야 변경된 일자로 후행 처리가 수행이 된다.

4.2. 자동(코드 : 1)

업무 마감 및 일자 변경이 완료된 후, 후행 처리 스스로 변경된 일자로 수행이 된다.

단, 업무 마감 및 일자 변경 후 후행 처리 스스로 변경된 일자로 수행되도록 커스터마이징 해줘야 한다.

5. 서비스 처리코드(SVC_PROC_CD)에 따른 처리

후행 처리 서비스에서는 타겟 테이블에서 조회한 일련번호를 2가지 방법으로 처리 할 수 있다.

5.1. 단건 처리(코드 : 1)

시작 일련번호부터 종료 일련번호까지 for 문을 돌려 후행 처리 서비스를 호출 한다.

예) 시작 일련번호 : 1, 종료 일련번호 : 10 이면 총 10번의 후행 처리 서비스 호출이 수행되며, 각각의 서비스 입력 값으로 일련번호를 전달 한다.

후행 처리 서비스 단건 처리
Figure 5. 후행 처리 서비스 단건 처리

5.2. 전체 처리(코드 : 2)

시작 일련번호, 종료 일련번호를 입력 DTO 로 설정하여 후행 처리 서비스를 호출한다.

예) 시작 일련번호 : 1, 종료 일련번호 : 10 이면 1번의 후행 처리 서비스 호출이 수행되며, 서비스 입력 값으로 시작, 종료 일련번호를 전달 한다.

후행 처리 서비스 전체 처리
Figure 6. 후행 처리 서비스 전체 처리

6. 후행 처리 서비스 트랜잭션 처리

후행 처리 서비스를 처리할 때의 트랜잭션 설정에 대해 설명한다.

트랜잭션 원리에 관한 자세한 설명은 3.7 후행 처리 서비스 트랜잭션 처리를 참고한다.

6.1. 트랜잭션 설정 없음 (코드 : 1)

후행 처리 서비스 호출 시 트랜잭션을 설정하지 않는다.

이 설정을 할 경우에는 후행 처리 서비스에서 TransactionalOpreration Annotation 설정을 해줘야 한다.

트랜잭션 없음
Figure 7. 트랜잭션 없음

6.2. 트랜잭션 존재(코드 : 3)

각각의 후행 처리 서비스에 대해 트랜잭션 처리 한다.

만약, 각각의 후행 처리 서비스가 아니라 시작일련번호부터 종료일련번호까지 하나의 트랜잭션으로 묶고 싶다면, 트랜잭션 설정, 서비스 처리코드 전체 처리로 설정하고 후행 처리 서비스 입력 값으로 시작, 종료 일련번호를 넘겨주면 된다.

트랜잭션 설정
Figure 8. 트랜잭션 설정

Copyright© Bankwareglobal All Rights Reserved.