国際標準化機構 (ISO) は、公共部門と民間部門の多くの企業によって使用されるデータ規格を規定して公開しています。 銀行および金融サービスの分野で一般に使用される ISO 標準は ISO8583 です。この標準は、クレジット・カードおよびデビット・カードのデータを装置とカード発行者の間で交換する方法を記述するメッセージ形式を規定しています。 この標準を使用する典型例は、POS 装置や現金自動預け払い機です。 一般にこのメッセージ自体には、取引額、発信元となる場所、カード口座番号、および銀行支店コードに関する情報が格納されます。 データ送信先の各アプリケーションには、銀行口座間の送金、請求書の支払い、プリペイド携帯電話のチャージなど、さまざまな目的を持つものが存在する可能性があります。 WebSphere Message Broker は、このようなミドルウェア・シナリオにおいて、XML などの利便性の高い形式と ISO8583 標準との間のデータ変換や、ISO8583 標準にはないプロトコル (WebSphere MQ、FTP、HTTP など) の使用を可能にします。
次の図は、ISO8583 メッセージのレイアウトを示しています。
ISO8583 メッセージの前に (多くの場合専用の) カスタム・ヘッダーが置かれる場合がありますが、コア・レイアウトには常に以下のセクションが格納されます。
このサンプルでは、Message Broker ライブラリー ISO8583Library を提供します。このライブラリーは、上記の各セクションで構成されるフィールドを定義します。 このメッセージ・モデルの詳細を調べるには、ワークスペースにサンプルをインポートしてください。 以下のスクリーン・ショットにモデルの一部を示します。その後に、そのフィールドとデータ・タイプの実装の要約を示します。
4 つの MTI フィールドの組み合わせによって、伝送される交換メッセージの種類を指定します。 一般に、アプリケーションは、MTI を使用して、メッセージが応答を必要とするかどうか、また、その応答の形式 (すなわち MTI でどの値が伝送され、どのメッセージ・データ・フィールドが存在するか) を判別します。 通常この判断は、Message Broker による ISO8583 データの送信先アプリケーションが行います。それで、このサンプルではフィールドの内容に妥当性検査や変換を適用せずにフィールドを受け渡します。
1 次ビットマップおよび 2 次ビットマップは、各ビットマップを表す複合エレメントを格納する埋め込みグループを使用して、DFDL モデルで定義されています。 1 次ビットマップを表す複合エレメントには 64 個のフィールド (Bit001 から Bit064 という名前) が格納され、各フィールドは、1 回だけ出現する 1 ビット長の unsignedInt として定義されます。 2 次ビットマップを表す複合エレメントには 64 個のフィールド (Bit065 から Bit128 という名前) が格納され、各フィールドは、1 回だけ出現する 1 ビット長の unsignedInt として定義されます。 各メッセージ・データ・フィールド (モデル内でビットマップの後に出現する) はオプション (minOccurs=0 かつ maxOccurs=1) であり、dfdl:occursCount 属性が 1 次ビットマップと 2 次ビットマップのいずれかにある対応するビットに等しいものとして定義する式を持っています。 例えば、PrimaryAccountNumber_002 という名前のメッセージ・データ・フィールドが持つ式は dfdl:occursCount="{/ISO8583_1987/PrimaryBitmap/Bit002}" です。
2 次ビットマップは、それ自体がオプションのフィールドです。 1 次ビットマップの Bit001 によって、メッセージ内に 2 次ビットマップが存在するかどうかが定義されます。
ISO8583 標準の各メッセージ・フィールドは、以下のいずれかのデータ・タイプを使用して、そこに収容できる内容を定義します。
数値データ・エレメントは右揃えになっており、固定長に定義された場合は先行ゼロが入ります。 ISO8583 標準は、数値データ・エレメントを指すために属性「n」を使用します。 この規則は DFDL モデルで使用される単純タイプ名に適用されます。 数値として定義されたデータ・エレメントはさまざまな業務用途で使用できます。例えば、10 進数、日時の値、ストリング数値データ (銀行口座番号など) の伝送に使用できます。 この使用方法を適用するため、DFDL モデルでは、XML スキーマのさまざまなプリミティブ・データ・タイプから継承する固有の XML スキーマの単純タイプを定義しています。 これらの単純タイプは以下の名前です。
英字データ・エレメントは左揃えになっており、固定長に定義された場合は後続スペース文字が入ります。 ISO8583 標準は、英字データ・エレメントを指すために属性「a」を使用します。 この規則は英字データ・タイプ用の DFDL モデルで使用される次の単純タイプ名に適用されます。
英数字データ・エレメントは左揃えになっており、固定長に定義された場合は後続スペース文字が入ります。 ISO8583 標準は、英数字データ・エレメントを指すために属性「an」を使用します。 この規則は英数字データ・タイプ用の DFDL モデルで使用される次の単純タイプ名に適用されます。
英数字特殊データ・エレメントは左揃えになっており、固定長に定義された場合は後続スペース文字が入ります。 ISO8583 標準は、英数字特殊データ・エレメントを指すために属性「ans」を使用します。 この規則は英数字特殊データ・タイプ用の DFDL モデルで使用される次の単純タイプ名に適用されます。
バイナリー・データ・エレメントの長さはバイト長の整数倍です。 バイナリー・データ・エレメントを 8 ビット (1 バイト) 未満の長さにすることはできません。 ISO8583 標準は、バイナリー・データ・エレメントを指すために属性「b」を使用します。 この規則はバイナリー・データ・タイプ用の DFDL モデルで使用される次の単純タイプ名に適用されます。
ISO8583 標準では、特定のデータ・エレメントを「track-2」タイプまたは「track-3」タイプとして定義しています。 これらのエレメントの詳細な構文は追加の ISO 標準に従います。 ISO8583 標準は、トラック・データ・タイプを指すために属性「z」を使用します。 この規則は DFDL モデルで使用される次の単純タイプ名に適用されます。
ISO8583 標準で定義される一部のデータ・エレメントは可変長で、そのフィールドに出現する文字の長さを指定する長さ接頭部が含まれています。 この長さは、2 桁または 3 桁の数値を使用して指定します。 ISO8583 標準は長さ接頭部を指すために、01 から 99 の範囲の長さを表すため規則「LL」を、001 から 999 の範囲の長さを表すために「LLL」を使用します。 この方法で定義されたデータ・エレメントにはさらに制限を加えることができます。例えば、PrimaryAccountNumber エレメントに LL 接頭部を付け、さらに最大長 19 バイトにすることができます。 このような制限は DFDL モデルでファセットを使用して適用されます。 DFDL モデルでは、長さ接頭部を使用する次の単純タイプを規定しています。