EDIFACT EDI Connector 2.10 の例 - Mule 4

次の例は、EDI メッセージの読み取り、検証、書き込みを行う方法を示しています。また、取引パートナーに機能およびインターチェンジの肯定応答を送信できます。

EDIFACT Studio の XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:edifact="http://www.mulesoft.org/schema/mule/edifact"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/edifact
http://www.mulesoft.org/schema/mule/edifact/current/mule-edifact.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
  <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
    <http:listener-connection host="localhost" port="8081" />
  </http:listener-config>
  <edifact:config name="EDIFACT_EDI_Config" doc:name="EDIFACT EDI Config"
    interchangeIdSelf="mule"
    interchangeIdQualifierSelf="ZZZ"
    interchangeIdPartner="partner"
    interchangeIdQualifierPartner="ZZZ">
    <edifact:schemas>
      <edifact:schema value="/edifact/d96a/ORDERS.esl"/>
      <edifact:schema value="/edifact/d99b/CUSRES.esl"/>
    </edifact:schemas>
  </edifact:config>
  <flow name="edifactmappingFlow">
     <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/map" />
     <edifact:read doc:name="Read" config-ref="EDIFACT_EDI_Config"/>
     <ee:transform doc:name="Transform Message">
       <ee:message >
         <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
    Messages: {
        D96A: {
            ORDERS: payload.Messages.D96A.ORDERS
        }
    }
}]]></ee:set-payload>
       </ee:message>
     </ee:transform>
     <edifact:write doc:name="Write" config-ref="EDIFACT_EDI_Config"/>
  </flow>
</mule>

EDIFACT EDI メッセージの読み取りと検証

  1. EDIFACT メッセージを読み取るには、​Mule パレット​で EDIFACT EDI を検索し、EDIFACT の ​[Read]​ 操作をフローにドラッグします。

  2. プロパティビューに移動し、作成したコネクタ設定を選択して、​Read​ 操作を選択します。

この操作では、すべてのバイトストリームを、EDIFACT スキーマで記述された構造に読み取ります。

EDIFACT Module はメッセージの読み取り時にメッセージを検証します。メッセージ検証では、メッセージ内の実際のメッセージだけでなく、エンベロープセグメント UNB および UNZ の構文とコンテンツを確認します。通常、エラーは記録され、蓄積され、CONTRL 肯定応答メッセージでレポートされます。受け入れられたすべてのメッセージは (エラーがなくても、または致命的でないエラーであっても) 渡されて、出力メッセージのマップの一部として処理されます。ただし、入力データの読み取り時にスローされるエラーを除きます。

受信データのマップに入力されたエラーデータでは ​EdifactError​ クラスが使用されます。これは、次のプロパティを含む参照のみの JavaBean です。

プロパティ 説明

segment

エラーの原因となったセグメントの入力内の開始値 0 のインデックス

fatal

致命的なエラーのフラグ。エラーの結果として、関連付けられたメッセージ、グループ、またはインターチェンジが拒否されたことを意味します。

errorCode

EDIFACT 構文エラーコード

errorText

エラーの説明

エラーデータは、データ構造のルートレベルとメッセージレベルの両方で、​Errors​ キーを持つ省略可能なリストとして Read 操作によって返されます。メッセージレベルでは、リストには、メッセージの解析中に発生した致命的でないエラーが含まれます。ルートレベルでは、リストには、インターチェンジエラーと致命的なメッセージエラーの両方が含まれます。

EDIFACT EDI メッセージの書き込み

  • 出力メッセージを書き込むには、​Mule パレット​で EDIFACT EDI を検索し、EDIFACT の ​[Write]​ 操作をフローにドラッグします。

  • 書き込み操作への入力として定義されている構造に従って、出力 EDIFACT EDI メッセージを作成します。

Write 操作で致命的なエラーが見つからない場合、通常のフローが続行されます。それ以外の場合、エラーを記述する例外がスローされます。

機能肯定応答の送信

生成された機能肯定応答 (CONTRL メッセージ) を送信する方法は、Read 操作中に生成された肯定応答にトランザクションが設定されることを除いて、他の種別の EDI メッセージを書き込む方法と同じです。

例:

<edifact-edi:read config-ref="EDIFACT_EDI__Configuration" doc:name="Read EDI Doc"/>
  ...
<dw:transform-message doc:name="Create Outgoing Acks Message">
    <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
	FunctionalAcksToSend: payload.FunctionalAcksGenerated
}]]></dw:set-payload>
</dw:transform-message>
<edifact-edi:write config-ref="EDIFACT_EDI__Configuration" doc:name="Send Acks"/>

生成された機能肯定応答には、元のメッセージの送信者に返信するためのインターチェンジデータがセットアップされているため、送信を実行するためにトランザクション内の何かを変更する必要はありません。