前のトピック: Copybook データ プロトコルを使用する方法次のトピック: 一致ロジック


ペイロード マッピング ファイル

ペイロード マッピング ファイルは、受信ペイロードが、対応する Copybook とどのように一致可能かを記述した XML ドキュメントです。 ペイロード マッピング ファイルは、ペイロード Copybook マッピングおよびペイロード Copybook ファイル定義マップとも呼ばれます。 また、このファイルは、ユーザにわかりやすいように結果の XML を構造化する方法についてのヒントも提供します。

サンプル

サンプル マッピング ファイルは、ここで参照できます。 サンプル ファイルには、さまざまな設定の例、および各ノードの各属性について説明したコメントが含まれています。 このサンプル ファイルは、Copybook マッピング ファイルの作成時に参考として役立ちます。

構造

以下の例は、基本的なペイロード マッピング ファイルの構造を示しています。 わかりやすくするために、この例には、値の属性が含まれていません。

<payloads>
  <payload>
    <key></key> 
    <section>
      <copybook></copybook>
      ...
    </section>
    ...     
  </payload>
  <payload>
    ...
  </payload>     
</payloads>
 
<payloads>

ドキュメントのルート XML ノード。 このノードは、繰り返すことができません。

<payload>

このエレメントは、その全体で、一致するペイロードを完全に記述します。 このドキュメントで、ペイロードが <payload> エレメントに一致すると判断された場合、<payload> エレメントを使用して受信ペイロードを記述します。

<key>

(オプション)このオプションにより、XML ドキュメントの可読性が向上します。 このエレメントで指定するものは、すべて <payload> エレメントの属性としても指定できます。

<section>

ペイロードの一部を定義する Copybook の論理グループ。 複数の <section> が存在する場合は、それらが繰り返しなしで順番に処理されます。

<copybook>

ペイロード内のレコードを記述する場合も、記述しない場合もある単一の Copybook。 <section> には、複数の <copybook> エレメントを含めることができます。

 <payload>

A <payload> エレメントには、以下の属性を含めることができます。

<payload name="TEST" type="request" matchType="all" key="reqKey" value="reqVal" keyStart="3" keyEnd="6" headerBytes="0" footerBytes="0" saveHeaderFooter="false" definesResponse="false">
    ...
</payload>

属性

必須/任意

説明

name

必須

ここで記述する要求のタイプを識別する一意の名前を定義します。 name は、同じタイプ(要求または応答)のペイロードのセット内で一意である必要があります。

type

必須

ペイロードのタイプを指定します。

値: 以下のいずれかです。

  • request
  • response

matchType

オプション

matchType 属性は、異なる方法で「response」タイプのペイロード定義に適用されます。たとえば、応答には引数や操作名が含まれません。 「response」タイプのペイロード定義でこの属性に argumentattribute、または operation を設定しても、何も一致しません(一致する要求の definesResponse 属性が true に設定されて、この属性を上書きしない限り)。 「response」タイプのペイロード定義でこの属性に all を設定すると、argument、attribute、および operation の一致はスキップされます。

値: 以下のいずれかです。

  • argument 指定された引数に対してのみ一致を試行します。
  • attribute 指定された属性に対してのみ一致を試行します。
  • metaData: 指定されたメタデータに対してのみ一致を試行します。
  • operation 操作名に対してのみ一致を試行します。
  • payload 要求のボディに対して一致を試行します。
  • all 次の順番で一致を試行します: argument、attribute、metaData、operation、payload。

デフォルト: payload

key

必須

この属性の動作は、以下のように、matchType によって異なります。

  • matchType が operation または payload の場合、一致に対してこの属性の値が使用されます。
  • matchType が argumentattributemetaData、または all の場合、この属性の値は argument、attribute、または metaData エントリのキーであると想定されます。 matchType の値が all の場合、このキー値は、操作名またはペイロード ボディに対する一致に使用されません。 代わりに attribute 値が使用されます。

value

オプション/必須

この属性の動作(および、必須かどうか)は、以下のように、matchType によって異なります。

  • matchType が operation または payload の場合、この属性の値は無視され、除外することができます。
  • matchType が argumentattribute、または metaData の場合、この属性は argument、attribute、または metaData エントリの値であると想定され、一致に対して必須となります。
  • matchType が all の場合、この属性は必須であり、argument、attribute、および metaData の一致では、上記で説明したように動作します。 ただし、operation および payload の一致では、この属性の値が一致に使用されます(matchType が operation または payload の場合のように、key 属性の値が使用されるのではなく)。

keyStart

オプション

ペイロード内で、キーの検索を開始する位置(1 ベースのインデックス)を指定します。 検索は、この値を含めて行われます。

  • keyStart を 1 に設定すると、最初のバイトから検索が開始されます。
  • keyStart を設定しないと、ペイロード全体が検索され、keyEnd は無視されます。
  • keyStart を 1 より小さい数に設定すると、値は 1 として処理されます。
  • keyStart をペイロードの長さより大きな数に設定すると、ペイロード全体が検索され、keyEnd は無視されます。
  • keyStart を keyEnd と等しいか keyEnd より大きく設定すると、ペイロード全体が検索されます。
  • keyEnd から keyStart を引いた値がキーの長さより小さい場合、ペイロード全体が検索されます。

keyEnd

オプション

ペイロード内で、キーの検索を終了する位置(1 ベースのインデックス)を指定します。 検索は、この値を含めずに行われます。

  • keyEnd を 3 に設定すると、バイト 1 と 2 のみが検索されます。
  • keyEnd を設定しないと、検索は keyStart で開始され、ペイロードの末尾で終了します。
  • この値がペイロードの長さより大きい場合、検索はペイロードの末尾で終了します。
  • この値が keyStart に等しいか keyStart より小さい場合、ペイロード全体が検索されます。
  • keyEnd から keyStart を引いた値がキーの長さより小さい場合、ペイロード全体が検索されます。

headerBytes

オプション

ペイロードの先頭から削除するバイト数を指定します。 値を指定しない場合、デフォルトは 0 になります。 この属性を指定する場合、値は有効な整数である必要があります。

footerBytes

オプション

ペイロードの末尾から削除するバイト数を指定します。 値を指定しない場合、デフォルトは 0 になります。 この属性を指定する場合、値は有効な整数である必要があります。

saveHeaderFooter

オプション

削除されるヘッダとフッタのバイト数が XML バージョンの要求で rawHeader タグおよび rawFooter タグの下の 16 進エンコードされた文字列として保持されるかどうかを指定します。

  • true: 削除されるヘッダとフッタのバイト数が保持されます。
  • false: 削除されるヘッダとフッタのバイト数が保持されません。

デフォルト値: false。

definesResponse

オプション

true の場合、この要求に対する応答は、同じ名前を持った response タイプのペイロード エレメントを検索します。 タイプが response の場合、この属性は無視されます。

デフォルト値: false。

オプションの <key> エレメントを使用して、キー関連の属性を置換できます。 上記の <payload> エレメントの例は、必要に応じて、可読性を高めるために以下のように記述できます。

<payload name="TEST" type="request" headerBytes="0" footerBytes="0" saveHeaderFooter="false" definesResponse="false">
    <key matchType="all" value="reqVal" keyStart="3" keyEnd="6">reqKey</key>
    ...
</payload>

 

<section>

例: 以下の例は、すべての属性および属性の記述を持つサンプルのセクション エレメントです。

...
<section name="Body">
    ...
</section>
...     

 

属性

必須

説明

name

必須

ペイロードの XML 出力バージョンでのグループの XML エレメントの名前を定義します。 その下に、1 つ以上の変換された Copybook エレメントが存在します。

 

<copybook>

例: 以下の例は、すべての属性および属性の記述を持つサンプルの Copybook エレメントです。

...
<copybook key="cpk" order="1" max="1" name="TESTRECORD" length-field="SOME-ID">TESTIN.CPY.TXT</copybook>
...

 

属性

必須

説明

key

必須

Copybook を識別するレコードの一意の文字列を定義します。 技術的には、この属性は省略可能です。 ただし、キーを指定しない場合、その Copybook はペイロードに適用される唯一のものであることを意味します。 ペイロードでバイトが使い果たされるまで、繰り返し適用されます。 複数の Copybook エレメントにキーが存在しない場合、max 属性が指定されない限り、常に最初のものが使用されます。

order

オプション

ペイロード内でレコードが見つかる順番に関するヒントを定義します。 使用される番号は無関係ですが、ペイロード内の「後ろ」のレコードには、より大きな整数を使用する必要があります。 複数の Copybook に同じ番号でタグ付けすることができます。これは、それらのレコードが任意の順番になることを意味します。 特定の番号でレコードが見つかった場合、それ以降の検索では、その番号以上の Copybook のみ検索されます。 ペイロードに一致することがないグループの Copybook を含めることができます。 それらは単に無視されます。 ただし、各 Copybook を確認する必要があるため、パフォーマンスに影響があります。

デフォルト: 0

max

オプション

Copybook をペイロードに適用できる最大回数を定義します。 空白、0、負の数、数値以外、および存在しない値はすべて「制限なし」を意味します。

name

オプション

レコード名(Copybook のルート レベル)を上書きする値を定義します。

  • この値を設定すると、この Copybook 用に XML に生成されたノードに、Copybook 定義のレコード名の代わりに、この名前を使用します。
  • この値を指定しない場合、デフォルトでは、Copybook 定義からレコード名を検索し、それを使用します。
  • この値を Copybook 定義のレコード名に設定すると、このファイルの可読性が向上する効果のみがあります。

length-field

オプション

次のレコード検索が正しい位置から開始されるようにペイロードを分割する方法を定義します。

この属性が存在しない場合、プロセッサは定義から Copybook の長さを決定しようとします。 何らかの理由で長さが判明しない場合、プロセッサは、ペイロードの残りがこの Copybook に該当すると仮定します。処理は、この Copybook を適用した後に終了します。 このフィールドが符号なしの Display 数値フィールドでない場合、プロセッサはこのフィールドを無視します。