본문으로 건너뛰기
버전: 3.4.4

송수신로그 사용자프로그램

사용자 데이터 커스텀

프로그램용도구현할 Java인터페이스유의사항
사용자호출프로그램ImageLoggingUserProcess프로그램ID를 imageLoggingUserProcessor으로 등록

이미지로그 저장 시 필요한 사용자 데이터를 추가 저장할 수 있다.

이렇게 저장한 사용자 데이터는 필요 시 BXI의 거래내역조회에서 검색 조건으로 사용할 수 있다. 송수신로그 사용자 프로그램은 송수신 로그를 로깅하는 기능을 커스터마이징 할 때 사용한다.

개발방법

아래는 송수신로그에 사용자 데이터인 거래 GUID나 원거래 GUID를 추가하는 예제이다.

주의

프로그램정보 등록 시 반드시 프로그램ID를 imageLoggingUserProcessor로 입력해야 한다.

@Component
public class ImageLoggingUserProcessor implements ImageLoggingUserProcess {

@Override
public BxiSrLogIO setUserData(BxiSrLogIO srLog, Map<String, String> userData) {
if (userData == null) {
return null;
}

srLog.setUserTrxGuid(userData.get("guid"));
srLog.setUserOrntxGuid(userData.get("fstGuid"));

return srLog;
}
}

실데이터 커스텀

프로그램용도구현할 Java인터페이스유의사항
사용자호출프로그램RealDataCustomProcess엔진의 ApplicationContext.xml에 적용

거래 시 발생하는 이미지로그의 실데이터(BXI_SR_LOG.IMG_DATA)를 커스텀할 수 있다.

개발방법

개발한 프로그램은 프로그램정보에 등록하고, ApplicationContext.xml에 빈을 추가한다.

${BXIHOME}/config/ApplicationContext.xml
<bean id="realDataCustomProcess" class="bxi.logging.process.DefaultRealDataCustomProcess" />

아래는 JSON 전문 마지막에 fileContent 필드가 존재할 경우, 해당 필드를 삭제하는 전문 데이터 커스텀 프로그램 예시이다.

package bxi.extension.customizing.api;
import java.nio.charset.Charset;
import bxi.api.RealDataCustomProcess;
import bxi.common.utility.ByteUtil;
import bxi.common.utility.CharsetUtil;
/**
* Ok RealDataCustom Process
* JSON 전문 마지막에 "fileContent" 필드가 존재할 경우
* , 해당 필드를 삭제하는 전문 데이터 커스텀 프로그램
*
* ------------------- 입력 전문 예시 --------------------
* {"maxSrMsgLen":65536,"chlBizCd":"IA","bizRmk":null,"fileContent":"ABCDEFGHI12345678"}
* ------------------------------------------------
*
* @author sample
* @history
* 2016.05.19 initial
*/
public class OkRealDataCustomProcess implements RealDataCustomProcess {
@Override
public String process(String realData, String charsetName) {
Charset charset = CharsetUtil.getCharsetWithDefault(charsetName);
// 전문이 헥사바이트로 되어있으므로 정규식 패턴도 헥사바이트로 변경
byte[] regx = ",\"fileContent\"".getBytes(charset);
String str = ByteUtil.byte2hex(regx, regx.length);
// .* 은 정규식 패턴을 사용해야 하므로 그대로 표현하고 마지막 쌍따옴표(")도
// 헥사바이트로 표현해야하므로 쌍따옴표의 헥사바이트인 22를 하드코딩
return realData.replaceAll(str + ".*22", "");
}
}