送受信ログユーザープログラム
ユーザーデータカスタム
プログラムの用途 | 実装するJavaインターフェース | 注意事項 |
---|---|---|
ユーザー呼び出しプログラム | ImageLoggingUserProcess | プログラムIDをimageLoggingUserProcessor で登録 |
イメージログを保存する際に、必要なユーザーデータを追加保存できる。
この方法で保存したユーザーデータは、必要に応じて、BXIのTransaction History
で検索条件に使用できる。
送受信ログユーザープログラムは、送受信ログをロギングする機能をカスタマイズする場合に使用する。
開発方法
下記は、送受信ログに、ユーザーデータの取引GUIDや元取引GUIDを追加する例である。
caution
プログラム情報を登録する際に、プログラム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)をカスタムできる。
開発方法
開発したプログラムは、Program Information
に登録し、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);
return realData.replaceAll(str + ".*22", "");
}
}