メインコンテンツまでスキップ

インターフェースの要求・応答ユーザープログラム

プログラムの用途実装するJavaインターフェース適用する設定画面
ユーザー呼び出しプログラムBusinessProcessInterface Management > Online Interface

対外機関やチャネルから受信した要求/応答電文に対して、インターフェース別に特殊な処理が必要な場合に開発して適用する。

caution

インターフェースの特化ロジックは業務プログラムにインターフェース呼び出し時に処理することを推奨し、できるだけ使用しない。

開発方法

インターフェース要求ユーザープログラム

BusinessProcess APIは、入力と出として、れぞれBusinessProcessInとBusinessProcessOutを使用する。 入力と出力のモデルは、APIプロジェクトのbxi.api.modelに定義されており、それぞれの項目についての説明は、下記のとおりである。

BusinessProcessIn

設定項目フィールド名説明
システムIDsysId電文を送信した対内システムID、またはチャネル要求電文を処理するシステムIDを意味する。
機関コードinstCd電文を送信した機関コード、または対内システム電文を対外機関に送信する機関コードを意味する。FEPでのみ使用される項目である。
業務コードbizCd機関や対内システムの業務コードを意味する。
コネクションIDcnntId電文を受信したコネクションのIDを意味する。
ヘッダー部データheader要求で受信した電文のうち、ヘッダー部をUnmarshalしたデータを意味する。
メッセージ部データerrMessage要求では使用しない
個別部データbody要求で受信した電文のうち、個別部データを意味する。個別部データは、インターフェース情報の要求トレイアウトを登録してUnmarshalになればMap形式であり、そうでなければPlain textデータである。

BusinessProcessOut

設定項目フィールド名説明
ヘッダー部データheader入力で伝達されたヘッダー部データに対して、ユーザーが変更、または追加したヘッダー部データを意味する。もし、要求ユーザープログラム処理中にエラーが発生した場合、チャネルへのエラー応答送信のためのエラー情報を設定することもできる。
メッセージ部データerrMessage要求ユーザープログラム処理中にエラーが発生した場合、チャネルに保存されている、エラー応答メッセージデータである。正常処理した場合、nullを返す。MCI、EAIでのみ使用される項目であり、FEPではnullと応答する。
個別部データbody入力で伝達された個別部データにユーザーが変更、または追加した個別部データを意味する。
エラーであるかどうかerror要求ユーザープログラム処理中にエラーが発生したかどうかを意味する。trueと応答すると、エラーと判断してエラー応答電文をチャネルに送信する。処理中にエラーが発生した場合、エラー応答するメッセージを作成して返す必要がある。

下記の例は、対外機関から受信した要求電文に対して、要求ユーザープログラムで入力項目を検証するプログラムである。

要求電文のうち、特定項目の値がなければエラー処理し、対外機関から受信した電文なので、共通部にエラー情報を保存して対外機関に応答する。

@Component
public class RequestCustomProgram implements BusinessProcess {

@Override
public BusinessProcessOut process(BusinessProcessIn in) {
BusinessProcessOut out = new BusinessProcessOut();
out.setError(false);
out.setHeader(in.getHeader());
out.setBody(in.getBody());

if (header.get("intrfcId") == null) {
out.setError(true);
out.getHeader().put("rspsCd", "01");
}

return out;
}
};

下記の例は、対内チャネルから受信した要求電文に対して要求ユーザープログラムで入力項目を検証するプログラムである。

要求電文のうち、特定項目の値がなければエラーに処理し、エラー発生時に対内チャネルから受信した電文であるため、エラーメッセージを作成して応答する。

@Component
public class RequestCustomProgram implements BusinessProcess {

@Override
public BusinessProcessOut process(BusinessProcessIn in) {
BusinessProcessOut out = new BusinessProcessOut();
out.setError(false);
out.setHeader(in.getHeader());
out.setBody(in.getBody());

if (header.get("intrfcId") == null) {
out.setError(true);
Map<String, Object> errMessage = in.getErrMessage();
if (errMessage == null)
errMessage = in.getErrMessage();
}
errMessage.set("errCode", "BXIE08431");
errMessage.set("errMsg", "Interface Id is null");
out.setErrMessage(errMessage);
}

return out;
}
};

インターフェース応答ユーザープログラム

BusinessProcess APIは、入力と出力として、それぞれBusinessProcessInとBusinessProcessOutを使用する。 入力と出力のモデルは、APIプロジェクトのbxi.api.modelに定義されており、それぞれの項目についての説明は、下記のとおりである。

BusinessProcessIn

設定項目フィールド名説明
システムIDsysId電文を送信した対内システムID、またはチャネル応答電文を処理するシステムIDを意味する。
機関コードinstCd電文を送信した機関コード、または対内システム電文を対外機関に送信する機関コードを意味する。FEPでのみ使用される項目である。
業務コードbizCd機関や対内システムの業務コードを意味する。
コネクションIDerror電文を受信したコネクションのIDを意味する。
ヘッダー部データheader応答で受信した電文のうち、ヘッダー部をUnmarshalしたデータを意味する。
メッセージ部データerrMessage応答で受信した電文のうち、メッセージ部をUnmarshalしたデータを意味する。MCI、EAIでのみ使用される項目である。
個別部データbody応答で受信した電文のうち、個別部データを意味する。個別部データは、インターフェース情報にレイアウトを登録してUnmarshalになればMap形式であり、そうでなければPlain textデータである。

BusinessProcessOut

設定項目フィールド名説明
ヘッダー部データheader入力で伝達されたヘッダー部データにユーザーが変更、または追加したヘッダー部データを意味する。
メッセージ部データerrMessage要求ユーザープログラムでは、メッセージ部は使用しない。
個別部データbody入力で伝達された個別部データにユーザーが変更、または追加した個別部データを意味する。
エラーであるかどうかerror応答ユーザープログラム処理中にエラーが発生したかどうかを意味する。trueと応答すると、エラーと判断して応答しない。なぜなら、対内システムサービスは正常だが、対外機関にエラーで応答すればSyncが合わないためである。

下記の例は、応答電文の中で特定項目の値を保存するユーザープログラムである。

@Component
public class ResponseCustomProgram implements BusinessProcess {

@Override
public BusinessProcessOut process(BusinessProcessIn in) {
BusinessProcessOut out = new BusinessProcessOut();
out.setError(false);
out.setHeader(in.getHeader());
out.setBody(in.getBody());

if (header.get("intrfcId").equals("EI-001-0101-01")) {
out.getBody().put("rspsCd", "88");
}

return out;
}
};