複数のパートナーへの MDN の送信 - Mule 4

次の例は、複数のパートナーに MDN (Message Disposition Notification) を送信する方法を示しています。この例には次の 2 つのフローが含まれます。

  • 最初のフローでは、インバウンド AS2 メッセージを受信する AS2 リスナーエンドポイントを設定します。

  • 2 番目のフローでは、メッセージペイロードと、AS2 送信者および受信者の情報を HTTP を介して受信します。次に、​Send with Sync MDN​ 操作を使用して、アウトバウンド AS2 メッセージを対象 AS2 エンドポイントに送信します。

この例は、​「AS2 メッセージの受信と MDN の返送」​の例と似ていますが、次の点が異なります。

  • パートナー情報は、設定されたキーストアにすでに存在する必要があります。

  • グローバル要素の ​[Partners (パートナー)]​ タブで、パートナー情報を次のように設定する必要があります。

    • [Listener Mode (リスナーモード)]​ 項目を ​[Shared mode (共有モード)]​ に設定し、追加のパートナーの詳細を指定する。

    • このタブの ​[Partner config (パートナー設定)]​ セクションを空白のままにする。そうしないと、コネクタはエラーを返します。次のスクリーンショットは、このセクションを強調表示しています。

      「AS2 Connector Listener config (AS2 Connector リスナー設定)」 画面の強調表示されたセクションでは項目を設定しない。

インバウンド AS2 メッセージを受信する AS2 リスナーエンドポイントの設定

このフローは、AS2 Connector の送信操作と、mendelson AS2 ソフトウェアや HTTP 要求などの他のソースからのインバウンド AS2 メッセージをリスンします。

AS2 リスナーエンドポイントを公開するためのフロー

直接入力するかインライン式を使用して、​共有モード​でパートナー情報を指定できます。

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。この XML コードでは、パートナー情報が直接入力されています。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns:as2-mule4="http://www.mulesoft.org/schema/mule/as2-mule4" 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/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/as2-mule4 http://www.mulesoft.org/schema/mule/as2-mule4/current/mule-as2-mule4.xsd">
	<http:listener-config name="HTTP_Server_Config" doc:name="HTTP Listener config" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<as2-mule4:listener-config name="AS2_Server_Listener" doc:name="AS2 Connector Listener config" httpListenerConfig="HTTP_Server_Config" securityLevel="SIGNED_ENCRYPTED">
		<as2-mule4:self-config as2Name="partnera" x509Alias="partnera" email="support@partnera.com"/>
		<as2-mule4:listener-mode >
			<as2-mule4:shared-mode>
				<as2-mule4:partner-configs >
					<as2-mule4:partner-detail-extended as2Name="partnerb" x509Alias="partnerb" email="support@partnerb.com" />
					<as2-mule4:partner-detail-extended as2Name="partnerc" x509Alias="partnerc" email="support@partnerc.com" />
				</as2-mule4:partner-configs>
			</as2-mule4:shared-mode>
		</as2-mule4:listener-mode>
		<as2-mule4:key-store-config keystorePassword="test" keystorePath="as2/partnera.p12" privateKeyPassword="test" />
	</as2-mule4:listener-config>
	<flow name="AS2Listener" >
		<as2-mule4:as2-listener doc:name="As 2 listener" config-ref="AS2_Server_Listener" path="/as2-receive"/>
		<logger level="INFO" doc:name="Message Received!" message="Message Received: #[payload]"/>
	</flow>
</mule>

インライン式でパートナー情報を指定するには、次の XML コードを使用します。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns:as2-mule4="http://www.mulesoft.org/schema/mule/as2-mule4" 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/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/as2-mule4 http://www.mulesoft.org/schema/mule/as2-mule4/current/mule-as2-mule4.xsd">
	<http:listener-config name="HTTP_Server_Config" doc:name="HTTP Listener config" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>

	<as2-mule4:listener-config name="AS2_Server_Listener" doc:name="AS2 Connector Listener config" httpListenerConfig="HTTP_Server_Config" securityLevel="SIGNED_ENCRYPTED">
    	<as2-mule4:self-config as2Name="partnera" x509Alias="partnera" email="support@partnera.com"/>
    	<as2-mule4:listener-mode >
        	<as2-mule4:shared-mode partnerConfigs='#[[&#10;	{as2Name:"partnerb", x509Alias:"partnerb", email:"support@partnerb.com"},&#10;	{as2Name:"partnerc", x509Alias:"partnerc", email:"support@partnerc.com"}&#10;]]' />
    	</as2-mule4:listener-mode>
    	<as2-mule4:key-store-config keystorePassword="test" keystorePath="as2/partnera.p12" privateKeyPassword="test" />
	</as2-mule4:listener-config>
	<flow name="AS2Listener" >
		<as2-mule4:as2-listener doc:name="As 2 listener" config-ref="AS2_Server_Listener" path="/as2-receive"/>
		<logger level="INFO" doc:name="Message Received!" message="Message Received: #[payload]"/>
	</flow>
</mule>

設定した AS2 エンドポイントへのアウトバウンド AS2 メッセージの送信

このフローは、メッセージをリスンし、メッセージとそのペイロードをログに記録してから、​Send with Sync MDN​ 操作を使用して、公開した AS2 エンドポイントにメッセージを転送します。

公開したエンドポイントに AS2 メッセージを転送するためのフロー

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

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:tls="http://www.mulesoft.org/schema/mule/tls"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns:as2-mule4="http://www.mulesoft.org/schema/mule/as2-mule4" 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/as2-mule4 http://www.mulesoft.org/schema/mule/as2-mule4/current/mule-as2-mule4.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/tls http://www.mulesoft.org/schema/mule/tls/current/mule-tls.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" basePath="b2b" >
		<http:listener-connection protocol="HTTPS" host="0.0.0.0" port="${https.port}" >
			<tls:context >
				<tls:key-store type="jks" path="rootca.jks" alias="rootca" keyPassword="test" password="test" />
			</tls:context>
		</http:listener-connection>
	</http:listener-config>
	<configuration-properties doc:name="Configuration properties" file="app.properties" />
	<as2-mule4:send-config name="AS2_Connector_Send_config" doc:name="AS2 Connector Send config" >
		<as2-mule4:connection partnerURL="#[vars.as2URL]" >
			<tls:context >
				<tls:trust-store insecure="true" />
			</tls:context>
		</as2-mule4:connection>
		<as2-mule4:self-config as2Name="#[vars.as2Sender]" x509Alias="#[vars.as2Sender]" email="support@forward-van.com" />
		<as2-mule4:partner-config as2Name="#[vars.as2Receiver]" x509Alias="#[vars.as2Receiver]" email="support@mythical.com"/>
		<as2-mule4:requester-config subject="EDI" messageIntegrityCheckAlgorithm="SHA256" mdnMessageIntegrityCheckAlgorithm="SHA256" encryptionAlgorithm="DES_EDE3" requestReceipt="SIGNED_REQUIRED"/>
		<as2-mule4:keystore-config keystorePassword="test" keystorePath="as2/forward-van.p12" privateKeyPassword="test" />
	</as2-mule4:send-config>
	<flow name="forward-van-as2-simulatorFlow1" >
		<http:listener doc:name="/forward-van/as2-send" config-ref="HTTP_Listener_config" path="/forward-van/as2-send"/>
		<logger level="INFO" doc:name="Logger" message="Forward VAN is sending IDOC to Mythical via AS2"/>
		<set-variable value="#[attributes.headers.'as2-URL']" doc:name="as2URL" variableName="as2URL"/>
		<set-variable value="#[attributes.headers.'as2-from']" doc:name="as2Sender" variableName="as2Sender"/>
		<set-variable value="#[attributes.headers.'as2-to']" doc:name="as2Receiver" variableName="as2Receiver"/>
		<as2-mule4:send-with-sync-mdn doc:name="Send with Sync MDN" config-ref="AS2_Connector_Send_config" outputMimeType="application/EDI-X12">
			<as2-mule4:custom-headers ><![CDATA[#[output application/java
---
{
	"PLANT-CODE" : "ABC-12345"
}]]]></as2-mule4:custom-headers>
		</as2-mule4:send-with-sync-mdn>
		<logger level="INFO" doc:name="Logger" message="#[output application/json --- attributes]"/>
		<set-payload value="#[output application/json --- attributes.as2MdnAttributes]" doc:name="Set Payload" />
	</flow>
</mule>