EDIFACT EDI Connector 2.10 のバッチアウトバウンド EDIFACT メッセージ - Mule 4

時間的制約のない EDI メッセージ (請求書や支払送金など) の場合、Write batch 操作を使用して、複数の個々のメッセージを 1 つのインターチェンジにマージして取引パートナーに送信します。

一括処理フェーズ

Anypoint Connector for EDIFACT EDI (EDIFACT EDI Connector) の Write batch 操作を使用して、個別の EDIFACT メッセージを 1 つのトランスミッションにマージして取引パートナーに送信します。

EDIFACT の Write batch 操作では、CONTRL 肯定応答メッセージのマージはサポートされていません。

バッチは 2 つのフェーズで実装します。

  1. トランザクションを累積する。

  2. バッチをリリースする。

トランザクションを累積する

バッチのトランザクションを累積する手順は、次のとおりです。

  1. バックエンドシステムからアプリケーションメッセージ (JSON 請求書など) を受信したときに DataWeave と EDIFACT を使用してペイロードを EDIFACT メッセージに変換します。

  2. EDIFACT の Write 操作で一時的な制御番号キーを使用して EDIFACT ペイロードを作成します。

    これにより、蓄積された EDIFACT を後からバッチとして送信できます。バッチは、たとえば ​<edifact:write doc:name="Write individual D97A ORDERS" doc:id="3d51215a-125d-461b-9791-0a939e5ebc45" config-ref="EDIFACT_Write_ORDERS" interchangeControlNumberKey="NTO-MYTHICAL-UNB-TMP"/>​ のように、取引パートナーに送信される最終的なバッチでは使用されない制御番号を使用して作成されます。

  3. 中間の EDIFACT メッセージペイロードをデータベーステーブルなど、自分で選択したストレージに保存します。

トランザクションを累積する

たとえば、この Mule フローの実装では、次のようになります。

  • バックエンドシステムから JSON ペイロードを受信する。

  • EDIFACT D97A ORDERS​ メッセージに変換します。

  • EDIFACT の Write 操作を使用して中間の EDIFACT メッセージペイロードを生成します。

  • データベーステーブルに EDIFACT ペイロードを保存します。

バッチをリリースする

取引パートナーのトランザクションの一括処理方法に関する条件はさまざまです。

  • 特定の期間や時間帯でバッチをリリースする。

  • 特定の数のトランザクションが累積されたらバッチをリリースする。

  • 累積されたトランザクションの合計サイズが指定されたしきい値に近づいたときにバッチをリリースする。

バッチをリリースする手順は、次のとおりです。

  1. 一時ストレージの累積されたトランザクションを監視して特定のバッチをリリースするタイミングを判断するロジックまたはモジュールを実装します。

  2. 蓄積された中間 EDIFACT メッセージをバッチ条件に基づいて一時的なストレージから取得し、トランザクションをまとめてグループ化して、追加されたペイロードを EDIFACT の Write batch 操作に送信します。

    Write batch 操作で制御番号キーを使用することも、Write batch 操作の実行時に制御番号キー項目を空白のままにして EDIFACT EDI Connector で送信者と受信者の識別子の組み合わせに基づいて制御番号シーケンスを自動的に生成できるようにすることもできます。
    <edifact:write-batch doc:name="Batch" doc:id="3ce80437-63e2-404c-b875-531708b7bfdb" config-ref="EDIFACT_Batch" interchangeControlNumberKey="NTO-MYTHICAL-UNB-TMP"> <edifact:batch-content ><![CDATA[#[vars.mergedInput]]]></edifact:batch-content> </edifact:write-batch>​。

  3. Write batch 操作に送信される入力ペイロードに、​Sender ID​、​Receiver ID​、​Version number​ など、UNB エンベロープセグメントにデータ要素がある EDI トランザクションが含まれていることを確認します。

バッチをリリースする

たとえば、この Mule フローの実装では、次のようになります。

  • 特定のパートナーの蓄積された EDIFACT メッセージトランザクションをリリースする HTTP 要求を受信します。バッチリリース条件を満たした要求がトリガーされます。

  • データベーステーブルから中間の EDIFACT メッセージを取得します。

  • 変換を適用して個別の EDIFACT メッセージをグループ化します。

  • EDIFACT の Write batch 操作を通じて追加されたペイロードを送信し、メッセージを 1 つのトランザクションにマージします。

  • 生成された制御番号を出力する。これにより、パートナーから受け取ったインバウンド機能肯定応答が調整されます。

  • バッチ化された EDIFACT トランザクションを取引パートナーの SFTP サイトに配信します。

入力ペイロードにエンベロープセグメントのデータ要素が一致しない EDI トランザクションが含まれている場合、Write batch 操作で例外がスローされます。