거래제어
BX Framework은 Client에서 요청한 거래가 수행가능한 상태인지 거래제어를 통해 확인한다. 거래제어의 기능구현은 시스템 선처리를 통해 구현하며 거래제어시 사용되는 속성은 거래파라미터를 통해 관리한다. 이번장에서는 거래파라미터를 설명하고 시스템 선처리는 "시스템 선/후처리"에서 설명한다.
BX Framework은 거래에 대한 기본정보, 거래제어를 위해 거래파라미터(DefaultControlParameter)를 제공한다. Framework을 사용하게 될 사용자환경에 기본제공 거래파라미터를 적용할 수 없는 경우 거래파라미터를 사용자환경에 적합하게 커스터마이징할 수 있다.
1. 기본 거래파라미터(DefaultControlParameter)
기본거래파라미터는 기본속성, 거래제어 속성, 동적제어 속성으로 나눌 수 있다.
데이터타입 | 길이 | 이름 | 설명 |
---|---|---|---|
String |
40 |
BXM_APP_ID |
BXM어플리케이션ID |
String |
512 |
SVC_NM |
서비스명 |
String |
512 |
OP_NM |
오퍼레이션명 |
String |
12 |
TRX_CD |
거래코드 |
String |
256 |
TRX_NM |
거래명 |
String |
1 |
FRCD_TRAN_YN |
강제트랜잭션여부. 허용값 ("Y", "N") |
int |
10 |
FRCD_TIMEOUT_MILLS |
강제타임아웃(단위:ms). 최대값 2147483647. |
int |
8 |
OUTPUT_MSG_MAX_LEN |
출력전문최대길이(단위:bytes). FLD전문인 |
String |
10 |
SYS_LOG_LV_NM |
시스템로그레벨명. 빈문자열이거나 null이면 |
String |
10 |
BIZ_LOG_LV_NM |
업무로그레벨명. 빈문자열이거나 null이면 |
String |
10 |
DB_LOG_LV_NM |
DB로그레벨명. 빈문자열이거나 null이면 |
데이터타입 | 길이 | 이름 | 설명 |
---|---|---|---|
String |
1 |
CHL_CTRL_LIST_TYPE_CD |
채널 제어목록 구분코드. 허용값 ("0" : |
String |
1024 |
CHL_CTRL_LIST |
채널 제어목록. 채널코드를 CSV형태로 |
String |
1 |
BRANCH_CTRL_LIST_TYPE_CD |
지점 제어목록 구분코드. 허용값 |
String |
1024 |
BRANCH_CTRL_LIST |
지점 제어목록. 지점코드를 CSV형태로 |
String |
1 |
USER_CTRL_LIST_TYPE_CD |
조작자 제어목록 구분코드. 허용값 |
String |
1024 |
USER_CTRL_LIST |
조작자 제어목록. 조작자코드를 CSV형태로 |
String |
1 |
HDAY_TRX_USE_YN |
휴일거래허용여부. 허용값 ("Y" : 허용, "N" : |
String |
1 |
EDAY_TRX_USE_YN |
마감후 거래허용여부. 허용값 ("Y" : 허용, |
String |
1 |
LINK_TRX_USE_YN |
연동거래허용여부. 허용값 ("Y" : 허용, "N" : |
String |
6 |
DAY_SUSP_START_TIME |
일별 중단시작시간. 형태는 DateFormat의 |
String |
6 |
DAY_SUSP_END_TIME |
일별 중단종료시간. 형태는 DateFormat의 |
데이터타입 | 길이 | 이름 | 설명 |
---|---|---|---|
String |
1 |
TRX_CTRL_CD |
거래제어코드 "0" : 미사용 "1" : 시스템장애 "2" : 거래량폭주 "3" : 시스템점검 "4" : 인터페이스장애 "5" : 응답시간장애 "7" : 업무점검 "8" : 지정기간거래불가. |
String |
14 |
TRX_CTRL_START_DTTM |
거래제어시작일시. 형태는 DateFormat의 |
String |
14 |
TRX_CTRL_END_DTTM |
거래제어종료일시. 형태는 DateFormat의 |
String |
1 |
LOGF_TYPE_CD |
로그강제변경타입코드. 허용값 ("0" : 미사용, |
String |
10 |
SYS_LOGF_LOG_LV_NM |
시스템로그강제변경로그레벨명 |
String |
10 |
BIZ_LOGF_LOG_LV_NM |
업무로그강제변경로그레벨명 |
String |
10 |
DB_LOGF_LOG_LV_NM |
DB로그강제변경로그레벨명 |
String |
30 |
LOGF_IP |
로그강제변경IP. 로그강제변경타입코드가 |
String |
4 |
LOGF_BRANCH_NO |
로그강제변경지점번호. 로그강제변경타입코드가 |
String |
4 |
LOGF_TERMINAL_NO |
로그강제변경단말번호. |
2. 거래파라미터 구현
거래파라미터는 bxm.instance.context.control.ControlParameters, bxm.instance.context.control.CachedControlParameters 인터페이스를 구현한다. (Cache를 사용하지 않는 경우는 CachedControlParameters를 구현하지 않는다.)
2.1. bxm.instance.context.control.ControlParameters
거래파라미터의 기본기능을 정의한 인터페이스이다.
…
void loadControlParameters( DataSource datasource, String applicatioName, String serviceName, String operationName);
String getApplicationName();
String getServiceName();
String getOperationName();
boolean isTrLock();
Date getTranAvailalbeBegin();
Date getTranAvailableEnd();
Date getTranSuspendBegin();
Date getTranSuspendEnd();
boolean isAuthCheck();
String getAuditLevelString();
boolean isBranSuspend();
ApplicationLogLevel getAppliedLogLevel(String remoteAddr);
ApplicationLogLevel getAppliedLogLevel(ContextHeader header);
boolean isForcedTransactional();
int getForcedTimeout();
2.1.1. loadControlParameters
거래파라미터를 Database에서 읽어들여 거래파라미터 객체에 파라미터 값을 저장한다. 거래 파라미터 조회에 사용되는 거래 Key값으로 거래코드를 단독으로 사용하는 방법과 application, service, operation 조합하는 방법 두가지가 존재한다.
입력/출력구분 | 파라미터 | 설명 |
---|---|---|
입력파라미터 |
DataSource datasource |
거래파라미터 테이블을 조회하기 위한 Datasource |
String applicatioName |
거래의 applicaton 이름 |
|
String serviceName |
거래의 service이름 |
|
String operationName |
거래의 operation이름 |
|
반환값 |
void |
조회한 거래파라미터는 현재객체에 값이 지정된다. |
2.1.2. 로그레벨 제어 method
거래수행시 적용될 로그레벨을 동적으로 제어하기위해 로그레벨 접근 메소드를 구현한다.
메소드 이름 | 반환 값 | 설명 |
---|---|---|
getSysAppliedLogLevel(String remoteAddr) |
ApplicationLogLevel |
지정된 |
getSysAppliedLogLevel(ContextHeader header) |
ApplicationLogLevel |
지정된 ContextHeader값에 적용될 시스템로그레벨을 반환한다. IP가 아닌 |
getBizAppliedLogLevel(String remoteAddr) |
ApplicationLogLevel |
지정된 |
getBizAppliedLogLevel(ContextHeader header) |
ApplicationLogLevel |
지정된 ContextHeader값에 적용될 업무로그레벨을 반환한다. IP가 아닌 |
getDBAppliedLogLevel(String remoteAddr) |
ApplicationLogLevel |
지정된 |
getDBAppliedLogLevel(ContextHeader header) |
ApplicationLogLevel |
지정된 |
2.1.3. 거래파라미터 getter method
ControlParameters에 정의된 getter method를 구현한다.
메소드 이름 | 반환 값 | 설명 |
---|---|---|
getApplicationName() |
String |
어플리케이션 이름 |
getServiceName() |
String |
서비스 이름 |
getOperationName() |
String |
오퍼레이션이름 |
String operationName |
String |
거래의 operation이름 |
isForcedTransactional() |
boolean |
강제트랜잭션 시작여부. true이면 Framework @TransactionalOperation이 오퍼레이션에 지정되지 않아도 ServiceExecutor에서 트랜잭션을 시작한다. |
getForcedTimeout() |
int |
강제타임아웃 시간 . 단위는 ms. |
isTrLock() |
boolean |
더 이상 사용하지 않음. |
getTranAvailalbeBegin() |
Date |
|
getTranAvailableEnd() |
Date |
|
getTranSuspendBegin() |
Date |
|
getTranSuspendEnd() |
Date |
|
isAuthCheck() |
boolean |
|
getAuditLevelString() |
String |
|
isBranSuspend() |
boolean |
2.2. bxm.instance.context.control.CachedControlParameters
거래파라미터의 캐시기능을 사용할 때 필요한 기능을 정의한 인터페이스이다. 거래파라미터정보를 캐시에 등록하는 기능은 거래파라미터의 loadControlParameters메소드에서 구현한다.
…
void clearCache( String applicationName, String serviceName, String operationName);
void clearCache();
2.2.1. 캐시 clear method
거래파라미터 캐시를 레코드 하나 또는 전체를 삭제한다.
메소드 이름 | 설명 |
---|---|
void clearCache( String applicationName, String serviceName, String |
(applicationName, serviceName, operationName)에 해당하는 거래파라미터를 거래코드를 사용하는 경우 applicationName에 거래코드를 지정하고 |
void clearCache() |
전체 거래파라미터를 캐시에서 삭제한다. |