EDIFACT EDI Connector 2.9 - Mule 4

EDIFACT EDI 用 Anypoint Connector (EDIFACT Connector) を使用すると、リストとマップを使用して、DataWeave 互換の表現との間で EDIFACT メッセージを変換できます。

提供されているすべての標準メッセージのスキーマ定義については、​サポート対象の EDIFACT バージョン​で確認できます。

始める前に

このコネクタを使用するには、以下に精通している必要があります。

  • Anypoint Connector

  • Mule Runtime Engine (Mule)

  • Mule フローの要素とグローバル要素

  • Anypoint Studio (Studio) を使用した Mule アプリケーションの作成

EDIFACT EDI Connector を使用するには、以下が必要です。

  • Anypoint B2B 用の MuleSoft ライセンス

  • Anypoint Studio 7.0 以降

EDIFACT Connector は最大 15 MB のサイズのファイルをサポートし、メモリ要件は約 40 対 1 です。 たとえば、1 MB のファイルは処理するために最大 40 MB のメモリが必要であるため、このメモリ要件を、大きな X12 ファイルの TPS (1 秒あたりのトランザクション数) のニーズと組み合わせて考慮することが重要です。 これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なります。

EDI スキーマ言語について

EDIFACT EDI Connector では、EDI スキーマ言語 (ESL) と呼ばれる YAML 形式を使用して EDI スキーマを表します。基本 ESL では、次の観点で EDI メッセージの構造が定義されます。

  • EDIFACT 用語としての構造 (メッセージと呼ばれる)

  • グループ、セグメント、複合、要素

オーバーレイスキーマ​を定義することで、ユーザーのデータに合わせて EDIFACT スキーマ定義をカスタマイズできます。​オーバーレイスキーマ​は ESL の 1 つの種別であり、これを使用して、ユーザー固有の規定でベーススキーマ (EDIFACT D.98B ORDERS スキーマなど) を変更できます。標準で定義されている構造を使用する場合、​オーバーレイスキーマ​は不要ですが、ほとんどの EDI エクスチェンジの実装規定でベース定義が変更されています。

また、独自のスキーマを定義したり、ベース EDIFACT スキーマ定義をコピーしてデータに合わせて編集したりできます (​「EDI スキーマ言語リファレンス」​を参照)。

スキーマの場所

このコネクタを使用するには、プロジェクトのスキーマの場所を把握しておく必要があります。ベース EDIFACT スキーマを使用して、何もカスタマイズしていない場合、スキーマの場所は ​/edifact/{version}/{message}.esl​ 規定に従います。 たとえば、D.98B バージョンの ORDERS メッセージを使用している場合、スキーマの場所は ​/edifact/d98b/ORDERS.esl​ になります。

1 つ以上のカスタムスキーマを使用している場合、それらを ​src/main/resources​ ディレクトリに配置し、このディレクトリを基準とする相対的な場所を参照します。 たとえば、ORDERS スキーマ (オーバーレイまたはフル) を ​src/main/resources/mypartner/ORDERS.esl​ に配置した場合、スキーマの場所は ​/mypartner/ORDERS.esl​ になります。

EDIFACT Connector メッセージ構造の階層

このコネクタを使用して、正規の EDI メッセージ構造との間で EDIFACT ドキュメントの読み書きを行います。この構造は、Java マップおよびリストオブジェクトの階層です。DataWeave またはコードを使用してこれらを操作します。トランザクションごとに、スキーマで定義される独自の構造があります。

メッセージには以下のキーが含まれます。一部のキーは、示されているように Read 操作または Write 操作のどちらかに適用されます。

キー名 説明

Delimiters

メッセージ内で使用する省略可能な区切り文字セット。Read 操作で使用する場合、区切り文字は、Read 操作で処理された最新のインターチェンジに基づきます。Write 操作で使用する場合、区切り文字はモジュール設定の値を上書きします。区切り文字の文字列内の文字は、文字列内の位置に基づいて、データ要素の区切り文字、コンポーネント要素の区切り文字、反復の区切り文字、セグメントの終端文字、リリース文字の順に解釈されます。

Errors (参照のみ)

入力全体または有効なトランザクションセットのないインターチェンジに関連付けられているエラーのリスト。

FunctionalAcksGenerated (参照のみ)

Read 操作中にモジュールによって生成された ​CONTRL​ 肯定応答のリスト。

FunctionalAcksToSend (書き込みのみ)

Write 操作中にモジュールによって送信された ​CONTRL​ 肯定応答のリスト。

Interchange (書き込みのみ)

インターチェンジの Write 操作中にデフォルトとして使用する UNB インターチェンジヘッダーセグメントの値のマップ。

Messages

Read 操作中にモジュールにより読み取られるメッセージまたは Write 操作中にモジュールにより送信されるメッセージの階層。この最上位キーの値は、キーとしての標準バージョンへのマップで、​D96A​ の形式で表されます。たとえば、バージョン ​D96.A ORDERS​ および ​CUSRES​ メッセージを使用している場合、Messages には 1 つのキー ​D96A​ を持つマップが含まれます。このキーの値は、2 つのキー (​ORDERS​ と ​CUSRES​) を備えた別のマップとなります。この各キーに、処理される個々の ORDERS メッセージおよび CUSRES メッセージのリストが含まれます。

個々のメッセージには、以下のキーを持つ独自のマップがあります。

キー 説明

Detail

メッセージの詳細セクションからのセグメントまたはループのマップ。値は、1 回のみ発生するセグメントまたはループのマップです。複数回発生する値には、マップのリストが使用されます。

Errors (参照のみ)

メッセージに関連付けられたエラーのリスト。

Heading

メッセージの見出しセクションからのセグメントまたはループのマップ。値は、1 回のみ発生するセグメントまたはループのマップです。マップのリストは複数回発生する値のために存在します。

Id

メッセージ ID は、含まれているメッセージリストのキーに一致する必要があります。

Interchange

UNB インターチェンジヘッダーセグメントの値のマップ。Read メッセージの場合、マップは、囲んでいるインターチェンジからの実際のデータになります。これは、インターチェンジ内のすべてのメッセージからリンクされた 1 つのマップです。Write メッセージの場合、マップ値により、囲んでいるインターチェンジが作成されます。たとえば、実際のマップが同じかどうかに関係なく、同じインターチェンジ値を持つメッセージを 1 つのインターチェンジに集めます。このマップの値がない場合、デフォルトは、メッセージレベルのインターチェンジマップから取得された値になります。

Group (グループ)

UNG グループヘッダーセグメント値が含まれるマップ。

  • 読み取りメッセージでは、このマップは囲んでいるグループからデータで構成されます。このマップは、グループ内のすべてのトランザクションセットからリンクされた単一マップです。

  • 書き込みメッセージでは、マップ値によって囲んでいるグループが作成されます。このマップに値がない場合、デフォルトではメッセージレベルのグループマップから取得された値で構成されます。

MessageHeader

UNH メッセージヘッダーセグメントの値のマップ。これにより、Read 操作の実際のヘッダーデータが提供され、Write 操作の設定の上書きを提供できます。

Name

メッセージ名。

Summary (概要)

メッセージの概要セクションからのセグメントまたはループのマップ。値は、1 回のみ発生するセグメントまたはループのマップです。複数回発生する値には、マップのリストが使用されます。

生成された CONTRL 機能肯定応答メッセージは、インターチェンジ情報の処理で受信したメッセージとは異なります。

キー名 説明

Interchange

受信処理で生成された機能肯定応答の場合、このマップは、送信者と受信者の ID コンポーネント (UNB2.1/UNB2.2 および UNB2.1/UNB3.2) を持つ、含まれているインターチェンジのデータのコピーになります。Write メッセージの場合、これらの値は、囲んでいるインターチェンジを作成するために使用されます。たとえば、実際のマップが同じかどうかに関係なく、同じインターチェンジ値を持つメッセージを 1 つのインターチェンジに集めます。このマップの値がない場合、デフォルトは、メッセージレベルのインターチェンジマップから取得された値になります。

次のステップ

前提条件を満たしたら、​Anypoint Studio​ で独自のアプリケーションを作成してコネクタを設定できます。