X12 EDI Connector 2.13 - EDI スキーマ言語リファレンス - Mule 4

Anypoint B2B Connector では、EDI スキーマ言語 (ESL) と呼ばれる YAML 形式を使用して EDI スキーマを表します。 基本 ESL は、構造、セグメント、複合、要素の観点で EDI メッセージの構成を定義します。 ESL は次のコネクタをサポートしています。

  • X12 EDI 用 Anypoint Connector (X12 EDI Connector)

  • EDIFACT 用 Anypoint Connector (EDIFACT Connector)

  • TRADACOMS 用 Anypoint Connector (TRADACOMS Connector)

  • HL7 用 Anypoint Connector (HL7 Connector)

ESL ドキュメントのコンポーネント

ESL ドキュメントの最上位定義では、次が示されています。

  • EDI 標準

  • その標準のバージョン

  • インポート ESL の省略可能なリスト

  • 構造、セグメント、複合、要素の定義の任意の組み合わせ。

次の例に、​/x12/005010/850.esl​ スキーマからこれらの最上位の定義がどのように表示されるかを示します。

form: X12
version: '005010'
imports: [ '/x12/005010/basedefs.esl' ]
structures:
- id: '850'
  name: Purchase Order
  class: PO
  ...

basedefs.esl​ という名前の各 X12 および EDIFACT バージョンの ESL があり、標準セグメント、複合、要素定義が提供されます。この例は 850 購入注文を示しており、これらをインポートして注文構造を表す定義を再利用します。

読みやすさ

YAML では、リストとキー-値ペアのセットの組み合わせが使用されます。必須項目が存在する場合、値の順序は重要ではありません。数字で構成される可能性があっても文字列として解釈するように意図される値は、引用符 (単一引用符や二重引用符など) で囲みます (そうしないと、YAML パーサーは値を数値として処理するため)。インデントを使用して、リストのネストを示します。

ここに記載されている ESL 構造では、同じ定義の一部であるリストの前に単純なキー - 値ペアがすべて定義されています。

構造定義

X12 トランザクションセットまたは EDIFACT メッセージを表し、標準特性のキーと値のペアと実際の構造を構成するセグメントのリストで構成されています。セグメントリストは見出し、詳細、概要の各セクションに分かれています。反復する可能性のある一連のセグメントで構成されるグループにさらに調整できます。

次の例は、​/x12/005010/850.esl​ スキーマからの構造定義のサンプルを示しています。

- id: '850'
  name: Purchase Order
  class: PO
  heading:
  - { idRef: 'ST', position: '0100', usage: M }
  - { idRef: 'BEG', position: '0200', usage: M }
  - { idRef: 'CUR', position: '0400', usage: O }
  - { idRef: 'REF', position: '0500', usage: O, count: '>1' }
  - { idRef: 'PER', position: '0600', usage: O, count: 3 }
  - { idRef: 'TAX', position: '0700', usage: O, count: '>1' }
  - { idRef: 'FOB', position: '0800', usage: O, count: '>1' }
  - { idRef: 'CTP', position: '0900', usage: O, count: '>1' }
  - { idRef: 'PAM', position: '0950', usage: O, count: 10 }
  - { idRef: 'CSH', position: '1100', usage: O, count: 5 }
  - { idRef: 'TC2', position: '1150', usage: O, count: '>1' }
  - groupId: 'SAC'
    usage: O
    count: 25
    items:
    - { idRef: 'SAC', position: '1200', usage: O }
    - { idRef: 'CUR', position: '1250', usage: O }
  - { idRef: 'ITD', position: '1300', usage: O, count: '>1' }
  - { idRef: 'DIS', position: '1400', usage: O, count: 20 }
  ...

基本的な構造値は次のようになります。

構造キー/セクション 説明

id

構造識別子。

name (名前)

構造名。

クラス

X12 機能グループ識別子に相当する構造のクラス。EDIFACT 構造定義では無視されます。

heading (見出し)

構造の見出しセクション内のセグメントおよびグループのリスト。

detail (詳細)

構造の詳細セクション内のセグメントおよびグループのリスト。

summary (概要)

構造の見出しセクション内のセグメントおよびグループのリスト。

構造の各セクションのセグメントのリストでは同じ形式を使用します。リスト内の各項目はセグメント参照またはグループ定義です。セグメント参照ではコンパクト YAML 構文を使用します。それぞれの値は、中括弧で囲まれたカンマ区切りのキー-値ペアとして表示されます。

次の値があります。

セグメントプロパティ 説明

idRef

参照されるセグメント ID。

position (位置)

セクション内のセグメントの位置。EDI 規定により、これらは先行ゼロを含む可能性がある数値であるため、引用符で囲まれて文字列として処理されます。

usage

使用コード定義。

  • C​: 条件

  • M​: 必須

  • O​: 省略可能

  • U​: 不使用。データから項目を完全に除外します。

  • I​: 無視。データに存在しても構わないが (HL セグメントの場合は存在する必要がある)、メタデータではユーザーに表示されません。

count (数)

最大反復数の値。数値、または特別な値 >1 を使用できます。この値は、任意の反復数を意味します。値を指定しない場合、count (数) の値として 1 が使用されます。

グループ定義は拡張形式で表示され、キーと値のペアが個別の行に表示されます。グループ定義内の値を次に示します。

説明

groupId

グループ識別子。

usage (使用方法)

使用コード定義。

  • C​: 条件

  • M​: 必須

  • O​: 省略可能

  • U​: 不使用。データから項目を完全に除外します。

  • I​: 無視。データに存在しても構わないが (HL セグメントの場合は存在する必要がある)、メタデータではユーザーに表示されません。

count (数)

最大反復数の値。数値、または特別な値 >1 を使用できます。この値は、任意の反復数を意味します。値を指定しない場合、count (数) の値として 1 が使用されます。

items (項目)

グループを構成するセグメントとネストされている可能性のあるグループのリスト。

セグメント定義

セグメント定義は標準文字のキー-値のペアと、実際のセグメントを構成する要素や複合などの値のリストで構成されています。次の例は、​/x12/005010/basedefs.esl​ スキーマからのセグメント定義のサンプルの一部を示しています。

M​ は必須、 ​O​ は省略可能です。

- id: 'BAK'
  name: Beginning Segment for Purchase Order Acknowledgment
  values:
  - { idRef: '353', usage: M }
  - { idRef: '587', usage: M }
  - { idRef: '324', usage: M }
  - { idRef: '373', usage: M }
  - { idRef: '328', usage: O }
  - { idRef: '326', usage: O }

セグメント定義値は次のとおりです。

セクション 説明

id

セグメント識別子。

name (名前)

セグメント名。

values

セグメント内の要素および複合のリスト。

値リストでは ID によって要素および複合を参照し、コンパクトな YAML 構文を使用します。それぞれの値は、中括弧で囲まれたカンマ区切りのキー-値のペアとして表示されます。

セクション 説明

idRef

参照される要素または複合 ID。

position (位置)

セグメント内の値の位置は 1 から始まり、連続する値ごとに 1 ずつ増加する。通常は使用されません。

name (名前)

セグメントの値の名前。デフォルトでは要素または複合の名前が使用されます。

usage (使用方法)

使用コード定義。

  • C​: 条件

  • M​: 必須

  • O​: 省略可能

  • U​: 不使用。データから項目を完全に除外します。

  • I​: 無視。データに存在しても構わないが (HL セグメントの場合は存在する必要がある)、メタデータではユーザーに表示されません。

count (数)

最大反復数の値。数値、または特別な値 >1 を使用できます。この値は、任意の反復数を意味します。値を指定しない場合、count (数) の値として 1 が使用されます。

複合定義

複合定義は、セグメント定義と非常に似ています。標準文字のキー-値のペアと、実際の複合を構成する要素や複合などの値のリストで構成されています。次の例は、​/x12/005010/basedefs.esl schema​ スキーマからの複合定義の一部を示しています。

- id: 'C022'
  name: 'Health Care Code Information'
  values:
  - { idRef: '1270', usage: M }
  - { idRef: '1271', usage: M }
  - { idRef: '1250', usage: C }
  - { idRef: '1251', usage: C }
  - { idRef: '782', usage: O }

複合定義値は次のとおりです。

Name (名前) 説明

id

複合識別子。

name (名前)

複合名。

values

複合内の要素と複合のリスト。

値リストでは ID によって要素および複合を参照し、コンパクトな YAML 構文を使用します。それぞれの値は、中括弧で囲まれたカンマ区切りのキー-値のペアとして表示されます。

Name (名前) 説明

idRef

参照される要素または複合 ID。

position (位置)

セグメント内の値の位置は 1 から始まり、連続する値ごとに 1 ずつ増加する。通常は使用されません。

usage (使用方法)

使用コード定義。

  • C​: 条件

  • M​: 必須

  • O​: 省略可能

  • U​: 不使用。データから項目を完全に除外します。

  • I​: 無視。データに存在しても構わないが (HL セグメントの場合は存在する必要がある)、メタデータではユーザーに表示されません。

要素定義

要素定義はシンプルで、標準文字の基本的なキー-値のペアのみがあります。

次の例は、​/x12/005010/basedefs.esl​ スキーマからのものです。

elements:
  - { id: '1', name: 'Route Code', type: AN, minLength: 1,
      maxLength: 13 }
  - { id: '100', name: 'Currency Code', type: ID, minLength: 3,
      maxLength: 3 }
  - { id: '1000', name: 'Service Characteristics Qualifier',
      type: AN, minLength: 2, maxLength: 3 }

要素定義値は次のとおりです。

Name (名前) 説明

id

要素識別子。

name (名前)

要素名。

値種別コード (Binary (バイナリ) データ型は現在サポートされていません)。

  • 整数の場合は ​N​。

  • 指定された位置に暗黙の小数点を含む数値の場合は ​N0-N9​ (N0 は N に相当)。

  • 小数の場合は ​R​。

  • 識別子の場合は ​ID​。

  • 英数字の文字列の場合は ​AN​。

  • 日付の場合は ​DT​。

  • 時刻の場合は ​TM​。

minLength

値の有意文字の最小数。

maxLength

値の有意文字の最大数。

実装規定に従ったスキーマの指定

オーバーレイスキーマを使用して実装規定を定義できます。オーバーレイスキーマは、特定の取引パートナーとの実装規定を使用し、標準を拡張してカスタマイズする方法を指定します。 これらの構造は完全なスキーマとよく似ていますが、オーバーレイスキーマでは、スキーマ構造のすべての詳細が提供される代わりに、変更のみがリストされます。

次の手順を使用してオーバーレイスキーマを作成します。

  1. カスタマイズするベーススキーマ (例: X12 005010 850​) をインポートするオーバーレイスキーマを作成します。

  2. セグメントの使用方法、位置、グループ、および数に関する全体的な構造をカスタマイズします。

  3. 使用方法や数など、セグメントをカスタマイズします。

次の例は、基本 ​X12 005010 850​ トランザクション設定定義を変更するオーバーレイスキーマのサンプルの一部を示しています。 この例では、​CUR​ セグメントをカスタマイズして未使用に指定するため、Anypoint Studio のマッピング構造から確実に非表示になります。

form: X12
version: '005010'
imports: [ '/x12/005010/850.esl' ]
structures:
- idRef: '850'
  name: Purchase Order
  class: PO
  heading:
  - { idRef: 'CUR', position: '0400', usage: U }

構造オーバーレイ

構造オーバーレイは、X12 トランザクションセットのベーススキーマ定義への変更を詳細に記述します。ほとんどの場合、この変更では、ベース定義内のセグメントまたはグループを未使用としてマークするという形式が使用されますが、使用方法または反復数の変更が許可されます。

この例の変更では、​N9​ ループのセグメントとともに、標準 ​850​ 見出しの ​CUR​ および ​PER​ セグメントが使用されないことを指定します。

- idRef: '850'
  heading:
  - { idRef: 'CUR', position: '0400', usage: U }
  - { idRef: 'PER', position: '0600', usage: U }
  - groupIdRef: 'N9_Loop'
    position: '2950'
    items:
    - { idRef: 'DTM', position: '2970', usage: U }
    - { idRef: 'PWK', position: '3050', usage: U }
    - { idRef: 'EFI', position: '3080', usage: U }

構造レベルのキー-値ペアを次に示します。

名前 説明

idRef

変更するトランザクションセットの ID。

name (名前)

トランザクションセット名 (使用する場合)。

heading (見出し)、detail (詳細)、summary (概要)

構造の各セクション内のセグメントおよびグループの変更のリスト。使用する場合、該当のセクションに変更がある場合にのみそれぞれが使用されます。

構造の各セクション (heading、detail、summary など) のセグメント変更のリストはすべて同じ構造を使用します。リスト内の各項目はセグメント参照またはグループ定義です。セグメント参照はコンパクト YAML 構文を使用して示されます。この構文では、各参照の値は、中括弧で囲まれたカンマ区切りのキー-値ペアとして提供されます。

名前 説明

idRef

参照されるセグメント ID。指定された場合は検証されますが、それ以外の場合は無視されます。position (位置) の値を使用して、セクション内のセグメントを一意に識別します。

position (位置)

トランザクションセットセクション内のセグメントの位置。

usage (使用方法)

使用方法コード。必須 (Mandatory) を表す ​M​、省略可能 (Optional) を表す ​O​、条件付き (Conditional) を表す ​C​、未使用 (Unused) を表す ​U​。

count (数)

最大反復数の値。数値、または任意の反復数を意味する特別な値「​>1​」を使用できます。count (数) の値 (指定された場合)。指定しない場合、ベース定義の値を使用します。

グループオーバーレイは、キー-値ペアが個別の行に含まれる拡張形式で示されます。

名前 説明

groupIdRef

参照されるグループ ID。指定された場合は検証されますが、それ以外の場合は無視されます。position (位置) の値を使用して、セクション内のグループを一意に識別します。

position (位置)

トランザクションセットセクション内のセグメントの位置。

usage (使用方法)

使用方法コード。必須 (Mandatory) を表す ​M​、省略可能 (Optional) を表す ​O​、条件付き (Conditional) を表す ​C​、未使用 (Unused) を表す ​U​。

count (数)

最大反復数の値。数値、または特別な値 >1 を使用できます。この値は、任意の反復数を意味します。count (数) の値で、値を指定しない場合はベース定義の値が使用されます。

items (項目)

ループを構成するセグメントとネストされる可能性のあるループのリスト。

セグメントオーバーレイ

セグメントオーバーレイでは、ベーススキーマ定義の変更を記述します。この変更では、ベース定義内の要素または複合を未使用としてマークするという形式が使用されます。使用方法または反復数の変更が許可されます。 次の例では、切り捨てのみが行われるコンパクトな形式のセグメント変更を使用していますが、各値を変更する変更は拡張形式で表現されます。他のすべての YAML の例と同様に、この 2 つの形式は実際には同等であり、区別なく使用されます。

segments:
- { idRef: AMT, trim: 3 }
- idRef: BEG
  values:
  - { position: 4, usage: U }
- { idRef: DTM, trim: 3 }
- idRef: ITD
  values:
  - { position: 4, usage: U }
  - { position: 6, usage: U }
セグメントオーバーレイはセグメントのすべての使用に自動的に適用されるものではありません。セグメントオーバーレイは、構造オーバーレイ内で参照されるセグメントに対してのみ有効です。構造オーバーレイでは、セグメントの使用方法を変更する必要はありませんが、適切な位置でセグメントを参照し、ベース定義の変更にセグメントオーバーレイが使用されるようにする必要があります。

セグメントオーバーレイ内のキー-値ペアを次に示します。

名前 説明

idRef

セグメント識別子。

trim (切り取り)

セグメント内の切り取り位置。使用すると、この位置以降のすべての値は未使用としてマークされます。

values

個々の値の変更のリスト。

values リストは、位置によってセグメント内の値を参照します。この参照のキー-値ペアを次に示します。

名前 説明

position (位置)

セグメント内の値の位置。

name (名前)

セグメントの値の名前 (使用された場合)。指定しない場合、ベース定義の値が使用されます。

usage (使用方法)

使用方法コード。必須 (Mandatory) を表す ​M​、省略可能 (Optional) を表す ​O​、条件付き (Conditional) を表す ​C​、未使用 (Unused) を表す ​U​。

count (数)

最大反復数の値。任意の数値、または任意の反復数を意味する特別な値 (「​>1​」) を使用できます。count (数) の値で、値を指定しない場合はベース定義の値が使用されます。