Center-Cut 커스터마이징 클래스
BXM Center-Cut에서 제공하는 커스터마이징에 대하여 설명한다.
1. System Header 커스터마이징
BXM Web Admin 및 Center-Cut 메인 서비스에서 리모트콜을 실행할 때 사용할 헤더를 정의한다.
구현 Interface: bxm.centercut.inf.ISysHeaderGenerator
package bxm.centercut.inf;
import bxm.request.ContextHeader;
public interface ISysHeaderGenerator {
public ContextHeader createSystemHeader(String domainId, String trxCd) throws Exception;
}
구현 예시: bxm-centercut-default-extension의 DefaultCcutHeaderGenImpl 클래스 참조
적용 방법: WebAdmin의 Admin 설정 화면을 이용하여 등록한다.
설정 키: bxm.centercut.header.generator
적용 예시
2. Center-Cut Executor 커스터마이징
Center-Cut에서 사용하는 여러 종류의 Executor를 정의한다.
구현 Interface: bxm.centercut.inf.ICcutExecutor
package bxm.centercut.inf;
import bxm.centercut.dto.SCC200101In;
import bxm.centercut.dto.SCC200101Out;
import bxm.centercut.dto.SCC300101In;
import bxm.centercut.dto.SCC300101Out;
import bxm.omm.root.IOmmObject;
import bxm.request.ContextHeader;
public interface ICcutExecutor {
public <R, S> S executeOnline(String trxCd, R requestData) throws Exception;
public void executeAsyncCcut(String trxCd, IOmmObject input, int timeout) throws Exception;
public SCC200101Out executeCcutMain(String mainUrl, final ContextHeader header, final SCC200101In requestData) throws Exception;
public SCC300101Out executeCcutProcess(String processUrl, final ContextHeader header, final SCC300101In requestData) throws Exception;
}
-
<R, S> S executeOnline(String trxCd, R requestData) throws Exception
Center-Cut 처리 서비스에서 온라인 업무 서비스를 호출하는 로직을 구현한다. 반드시 Sync 거래로 작성한다.
-
void executeAsyncCcut(String trxCd, IOmmObject input, int timeout) throws Exception
Center-Cut 메인 및 처리에서 실행 서비스를 호출하는 로직을 구현한다. 반드시 Async 거래로 작성한다.
-
SCC200101Out executeCcutMain(String mainUrl, final ContextHeader header, final SCC200101In requestData) throws Exception
Center-Cut 실행을 위하여 메인 서비스를 리모트콜하는 로직을 작성한다.
-
SCC300101Out executeCcutProcess(String processUrl, final ContextHeader header, final SCC300101In requestData) throws Exception
Center-Cut 메인 서비스에서 처리 서비스를 리모트콜하는 로직을 작성한다.
구현 예시: bxm-centercut-default-extension의 DefaultCcutExecutorImpl 클래스 참조
적용 방법: WebAdmin의 Admin 설정 화면을 이용하여 등록한다.
설정 키: bxm.centercut.remote.executor
적용 예시
3. Center-Cut Main Control Loader 커스터마이징
Center-Cut으로 등록된 작업의 파라미터를 로드한다.
구현 Interface: bxm.centercut.inf.ICcutMainControl
public interface ICcutMainControl {
/**
* Load Ccut Main Parameters
* @param dataSource
* @param domainId
* @param ccId
*/
public void loadCcutMainParameter(DataSource dataSource, String domainId, String ccId) throws Exception;
/**
* Return DomainId
* @return domainId
*/
public String getDomainId();
/**
* Return CentercutId
* @return ccId
*/
public String getCcId();
/**
* @return useYn
*/
public String getUseYn();
...
-
public void loadCcutMainParameter(DataSource dataSource, String domainId, String ccId) throws Exception
BXM_CC_MAIN, BXM_CC_MAIN_NODE 테이블에 등록된 Center-Cut 파라미터 내용을 로드한다.
-
그 외 getter 메소드들
Center-cut 파라미터 항목들을 리턴한다.
구현 예시: bxm-centercut-default-extension의 DefaultCcutMainControlImpl 클래스 참조
적용 방법: WebAdmin의 Admin 설정 화면을 이용하여 등록한다.
설정 키: bxm.centercut.main.parameter
적용 예시
4. Center-Cut 메인 선/후처리 커스터마이징
Center-Cut 메인의 선/후처리를 정의한다.
구현 Interface: bxm.centercut.inf.ICcutMainPrePostProcessor
public interface ICcutMainPrePostProcessor {
public void preProcess(CcutMainInput mainInput, ICcutMainControl mainControl) throws Exception;
public void postProcess(CcutMainInput mainInput, ICcutMainControl mainControl, CcutMainStatus mainStatus) throws Exception;
public void onException(CcutMainInput mainInput, ICcutMainControl mainControl, CcutMainStatus mainStatus);
}
-
public void preProcess(CcutMainInput mainInput, ICcutMainControl mainControl) throws Exception
Center-Cut 메인의 선처리 내용을 정의한다.
-
public void postProcess(CcutMainInput mainInput, ICcutMainControl mainControl, CcutMainStatus mainStatus) throws Exception
Center-Cut 메인의 후처리 내용을 정의한다. Center-Cut 작업이 정상 종료될
시에만 호출된다. -
public void onException(CcutMainInput mainInput, ICcutMainControl mainControl, CcutMainStatus mainStatus)
Center-Cut 작업이 비정상종료 될 때에 호출되어야 할 내용을 정의한다.
구현 예시: bxm-centercut-default-extension의 DefaultCcutMainProcessorImpl 클래스 참조
적용 방법: WebAdmin의 Admin 설정 화면을 이용하여 등록한다.
설정 키: bxm.centercut.pre.post.processor
적용 예시
5. Center-Cut 처리 모듈 커스터마이징
Center-Cut 처리에 필요한 내용을 정의한다.
구현 Interface: bxm.centercut.inf.ICcutProcProcessor
public interface ICcutProcProcessor {
public IOmmObject createOnlineRequest(String inputDtoFql, byte[] inputData) throws Exception;
public void preProcess(ContextHeader cheader, ICcutMainControl ccutMain, CcutInpb inputInfo, IOmmObject requestData) throws Exception;
public void postProcess(ContextHeader cheader, ICcutMainControl ccutMain, CcutInpb inputInfo, IOmmObject requestData, IOmmObject responseData) throws Exception;
}
-
public IOmmObject createOnlineRequest(String inputDtoFql, byte[] inputData) throws Exception
DB에 저장된 입력 데이터를 서비스 호출을 위한 IO로 변환한다.
-
public void preProcess(ContextHeader cheader, ICcutMainControl ccutMain, CcutInpb inputInfo, IOmmObject requestData) throws Exception
Center-Cut 처리의 선처리를 정의한다. 온라인 서비스 실행 전에 호출된다.
-
public void postProcess(ContextHeader cheader, ICcutMainControl ccutMain, CcutInpb inputInfo, IOmmObject requestData, IOmmObject responseData) throws Exception
Center-Cut 처리의 후처리를 정의한다. 온라인 서비스 실행 후에 호출된다.
구현 예시: bxm-centercut-default-extension의 DefaultCcutProcProcessorImpl 클래스 참조
적용 방법: WebAdmin의 Admin 설정 화면을 이용하여 등록한다.
설정 키: bxm.centercut.proc.processor
적용 예시
6. Center-Cut 입력 데이터 커스터마이징
Center-Cut 입력 데이터에 관한 내용을 정의한다.
구현 Interface: bxm.centercut.inf.ICcutInputController
public interface ICcutInputController {
public void insertCcutInputData(List<CcutInpb> inputList, String dbEncoding, Connection con) throws Exception;
public List<CcutInpb> selectCcutTargetList(CcutInputDataSelector inputDataSelector) throws Exception;
public void insertErrorInputData(List<CcutErrorDataInfo> errorDataInfoList) throws Exception;
public void updateProcessResult(CcutInpb input) throws Exception;
public CcutInputSummarizedInfo getInputSummarizedInfo(CcutWorkStatus workStatus) throws Exception;
public List<CcutSvccHist> getInputSummaryByNode(CcutBasicInfo info) throws Exception;
public String generateMessage(IOmmObject object) throws Exception;
public long selectLastProcNo(CcutWorkStatus workStatus, Connection con) throws Exception;
}
-
public void insertCcutInputData(List<CcutInpb> inputList, String dbEncoding, Connection con) throws Exception
발췌 대상 데이터를 DB에 입력한다.
-
public List<CcutInpb> selectCcutTargetList(CcutInputDataSelector inputDataSelector) throws Exception
센터컷 처리 서버에서 온라인 서비스 호출에 사용할 입력 데이터를 검색한다.
-
public void insertErrorInputData(List<CcutErrorDataInfo> errorDataInfoList) throws Exception
처리 오류가 발생한 데이터의 재 처리를 위하여 재 발췌시 호출되어 입력 데이터 테이블에 입력한다.
-
public void updateProcessResult(CcutInpb input) throws Exception
센터컷 처리 서비스에서 온라인 서비스 호출 결과를 입력 데이터 테이블에 기록한다.
-
public CcutInputSummarizedInfo getInputSummarizedInfo(CcutWorkStatus workStatus) throws Exception
비정상종료된 작업을 재 실행했을 때, 실행 번호 별로 처리 건수 등을 집계하기 위하여 입력 데이터 테이블을 검색한다.
-
public List<CcutSvccHist> getInputSummaryByNode(CcutBasicInfo info) throws Exception
비정상종료된 작업을 재 실행했을 때, 처리 서비스 노드 별로 처리 건수 등을 집계하기 위하여 입력 데이터 테이블을 검색한다.
-
public String generateMessage(IOmmObject object) throws Exception
입력으로 받은 IOmmObject 객체를 DB에 입력하기 위한 String 형태로 변형한다. String 포맷은 각 사이트에서 정한 형태로 한다.(ex: FLD, Json 등)
-
public long selectLastProcNo(CcutWorkStatus workStatus, Connection con) throws Exception
입력 데이터 테이블의 데이터를 조회하여 최종 접수 번호를 반환한다.
구현 예시: bxm-centercut-default-extension의 DefaultCcutInputControllerImpl 클래스 참조
적용 방법: WebAdmin의 Admin 설정 화면을 이용하여 등록한다.
설정 키: bxm.centercut.input.controller
적용 예시