Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこの例は 2 つのアプリケーションで構成されています。
購入者アプリケーションは、購入注文要求メッセージを販売者アプリケーションに送信します。
販売者アプリケーションは、注文が履行されたときに購入注文確認メッセージを購入者アプリケーションに送信します。
次の図は、2 つのアプリケーションのリレーションを示しています。
購入者アプリケーションは次のアクションを実行します。
入力購入注文要求ドキュメントを HTTP POST
経由で受信します。
RosettaNet の Send action 操作を使用して、購入注文要求メッセージを販売者アプリケーションに送信します。
購入注文要求メッセージのメッセージ ID を、HTTP POST
への応答で使用するプレーンテキストに変換します。
販売者アプリケーションから肯定応答シグナルを受信し、シグナルに関する情報を記録します。
販売者アプリケーションから購入注文確認メッセージを受信し、確認メッセージに関する情報を記録します。
販売者アプリケーションから完了状態を受信し、完了状態に関する情報を記録します。
次のスクリーンショットは、購入者アプリケーションの Anypoint Studio アプリケーションフローを示しています。
購入者の非公開キー、購入者の証明書、販売者の証明書が含まれる購入者アプリケーションのキーストアは、プロジェクトの src/main/resources にあります。
|
購入者アプリケーションの最初のフローでは、購入注文要求ドキュメントを HTTP POST
経由で受信して、販売者アプリケーションに RosettaNet アクションメッセージとして送信します。このフローを作成するには、新しい Mule プロジェクトの作成、HTTP Listener ソースの設定、Send action 操作の追加、Transform コンポーネントの追加を行う必要があります。
デフォルトパス (/
) へのコールが行われたときに Mule フローを開始するように HTTP Listener ソースを設定します。
Studio で新しい Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューから、[HTTP] を選択して [Listener] コンポーネントをキャンバスにドラッグします。
プロパティウィンドウで、[Connector configuration (コネクタ設定)] 項目の横にある [+] をクリックしてグローバル要素を追加します。
[Name (名前)] 項目に、「HTTP_InputListener」
と入力し、デフォルト値を受け入れます。
Send action 操作の PO_InitiatorConfig_Buyer
グローバル要素を追加します。
Send action 操作のプロパティウィンドウで、[Module configuration (モジュール設定)] 項目の横にある [+] をクリックしてグローバル要素を追加します。
[RosettaNet Config (RosettaNet 設定)] ウィンドウで、次の項目を入力します。
Global HTTP Listener (グローバル HTTP リスナー) | HTTP_Listener-config |
---|---|
Service Endpoint Path (サービスエンドポイントパス) |
/partner1 |
Global HTTP Request (グローバル HTTP 要求) |
HTTP_Request_configuration |
Request Endpoint Path (要求エンドポイントパス) |
/partner2 |
Keystore Path (キーストアパス) |
/partner1.jks |
Keystore Access password (キーストアアクセスパスワード) |
nosecret |
Signing key password (署名キーパスワード) |
partner1 |
Global usage code (グローバル使用コード) |
Test (テスト) |
Mule DUNS identifier (Mule DUNS 識別子) |
123456789 |
Mule location identifier (Mule 場所識別子) |
partner1 |
Partner DUNS identifier (パートナー DUNS 識別子) |
123456788 |
Partner location identifier (パートナーの場所識別子) |
partner2 |
role in PIP (PIP のロール) |
INITIATOR |
PIP definition path (PIP 定義パス) |
/PIP3A4/V02_02.xml |
[OK] をクリックします。
PO_InitiatorConfig_Buyer
グローバル要素で定義された設定を使用して購入注文要求メッセージを販売者アプリケーションに送信するために、Send action 操作を追加します。
[Mule Palette (Mule パレット)] ビューから、[RosettaNet] を選択して [Send action] 操作を [Listener] の横にドラッグします。
プロパティウィンドウで、次の項目を入力します。
項目 | Value (値) |
---|---|
Display Name (表示名) |
Send action |
Module configuration (モジュール設定) |
PO_InitiatorConfig_Buyer |
購入注文要求メッセージのメッセージ ID をプレーンテキストに変換する Transform Message コンポーネントを追加します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Transform Message] コンポーネントを [Send action] の横にドラッグします。
プロパティウィンドウで、[Output (出力)] セクションの括弧を次の DataWeave コードで上書きします。
%dw 2.0
output text/plain
---
"Buyer sent action message " ++ attributes.messageId ++ "\n"
dataweave
購入者アプリケーションの 2 番目のフローでは、販売者アプリケーションから肯定応答シグナルを受信し、シグナルに関する情報を記録します。また、販売者アプリケーションから購入注文確認メッセージを受信し、メッセージに関する情報を記録します。
/partner2
パスへのコールが行われたときに Mule フローを開始するように Action source ソースを設定します。
[Mule Palette (Mule パレット)] ビューから、[Rosettanet] を選択して [Action source] ソースをキャンバスにドラッグします。
[Module configuration (モジュール設定)] 項目に「PO_InitiatorConfig_Buyer」
と入力します。
肯定応答および購入注文確認メッセージに関する情報が含まれるメッセージを記録する Logger コンポーネントを追加します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Logger] コンポーネントをキャンバス上の Action source の横にドラッグします。
[Message (メッセージ)] 項目に、次のテキストを入力します。
"Buyer received action message #[attributes.messageId]"
購入者アプリケーションの 3 番目のフローでは、販売者アプリケーションから完了状態を受信し、完了状態に関する情報を記録します。
販売者からの購入注文完了状態メッセージをリスンするように Completion source ソースを設定します。
[Mule Palette (Mule パレット)] ビューから、[Rosettanet] を選択して [Completion source] ソースをキャンバスにドラッグします。
[Module configuration (モジュール設定)] 項目に「PO_InitiatorConfig_Buyer」
と入力します。
購入注文完了状態に関する情報を記録する Logger コンポーネントを追加します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Logger] コンポーネントをキャンバス上の Completion source の横にドラッグします。
[Message (メッセージ)] 項目に、次のテキストを入力します。
Buyer action message #[attributes.replyAttributes.messageId] completed as #[payload.completionCode]
アプリケーションを保存するには、[File (ファイル)] > [Save (保存)] をクリックします。
アプリケーションを実行するには、[Run (実行)] > [Run as (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
購入者アプリケーションのフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:rosetta="http://www.mulesoft.org/schema/mule/rosetta"
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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/rosetta
http://www.mulesoft.org/schema/mule/rosetta/current/mule-rosetta.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/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>
<http:request-config name="HTTP_Request_configuration"
doc:name="HTTP Request configuration">
<http:request-connection host="localhost" port="8082" />
</http:request-config>
<rosetta:config name="PO_InitiatorConfig_Buyer"
pipRole="INITIATOR" doc:name="RosettaNet Config"
listenerConfigName="HTTP_Listener_config"
servicePath="/partner1"
requesterConfigName="HTTP_Request_configuration"
requestPath="/partner2"
keystorePath="/partner1.jks"
keystorePass="nosecret"
privatePass="partner1"
globalUsageCode="Test"
selfBusinessIdentifier="123456789"
selfLocationId="partner1"
partnerBusinessIdentifier="123456788"
partnerLocationId="partner2"
pipFile="/PIP3A4/V02_02.xml"/>
<http:listener-config name="HTTP_InputListener"
doc:name="HTTP Listener config" >
<http:listener-connection host="localhost" port="8801" />
</http:listener-config>
<flow name="Send-Purchase-Order-Request" >
<http:listener doc:name="Listener" config-ref="HTTP_InputListener"
path="/"
allowedMethods="POST"/>
<rosetta:send-action doc:name="Send action"
config-ref="PO_InitiatorConfig_Buyer"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output text/plain
---
"Buyer sent action message " ++ attributes.messageId ++ "\n"]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="Receive-Purchase-Order-Confirmation" >
<rosetta:action-source doc:name="Action source"
config-ref="PO_InitiatorConfig_Buyer"/>
<logger level="INFO" doc:name="Logger"
message="Buyer received action message #[attributes.messageId]"/>
</flow>
<flow name="Send-Purchase-Order-Completion" >
<rosetta:completion-source doc:name="Completion"
config-ref="PO_InitiatorConfig_Buyer"/>
<logger level="INFO" doc:name="Logger"
message="Buyer action message #[attributes.replyAttributes.messageId] completed as #[payload.completionCode]"/>
</flow>
</mule>
xml
販売者アプリケーションは次のアクションを実行します。
入力購入注文要求確認ドキュメントを HTTP POST
経由で受信します。
RosettaNet の Send action 操作を使用して、購入注文確認メッセージを購入者に送信します。
購入注文確認メッセージの RosettaNet メッセージ ID を、HTTP POST
への応答で使用するプレーンテキストに変換します。
購入者アプリケーションから購入注文要求メッセージを受信し、要求メッセージに関する情報を記録します。
購入者アプリケーションから肯定応答シグナルを受信し、シグナルに関する情報を記録します。
購入者アプリケーションから完了状態メッセージを受信し、完了状態メッセージに関する情報を記録します。
次のスクリーンショットは、販売者アプリケーションの Anypoint Studio アプリケーションフローを示しています。
販売者の非公開キー、販売者の証明書、購入者の証明書が含まれる販売者アプリケーションのキーストアは、プロジェクトの src/main/resources にあります。
|
販売者アプリケーションの最初のフローでは、購入注文要求確認ドキュメントを HTTP POST
経由で受信して、購入者アプリケーションに RosettaNet アクションメッセージとして送信します。このフローを作成するには、新しい Mule プロジェクトの作成、HTTP Listener ソースの設定、RosettaNet の Send action 操作の設定、Transform コンポーネントの追加を行う必要があります。
デフォルトパス (/
) へのコールが行われたときに Mule フローを開始するように HTTP Listener ソースを設定します。
Studio で新しい Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューから、[HTTP] を選択して [Listener] コンポーネントをキャンバスにドラッグします。
プロパティウィンドウで、[Connector configuration (コネクタ設定)] 項目の横にある [+] をクリックしてグローバル要素を追加します。
[Name (名前)] に「HTTP_InputListener」
と入力します。
[Port (ポート)] に「8082」
と入力します。
[Read timeout (読み取りタイムアウト)] に「3000」
と入力します。
Send action 操作の PO_ResponderConfig_Seller
というグローバル要素を作成します。
Send action 操作のプロパティウィンドウで、[Module configuration (モジュール設定)] 項目の横にある [+] をクリックしてグローバル要素を追加します。
[RosettaNet Config (RosettaNet 設定)] ウィンドウで、次の項目を設定します。
項目 | Value (値) |
---|---|
Global HTTP Listener (グローバル HTTP リスナー) |
HTTP_Listener-config |
Service Endpoint Path (サービスエンドポイントパス) |
/partner2 |
Global HTTP Request (グローバル HTTP 要求) |
HTTP_Request_configuration |
Request Endpoint Path (要求エンドポイントパス) |
/partner1 |
Keystore Path (キーストアパス) |
/partner2.jks |
Keystore Access password (キーストアアクセスパスワード) |
nosecret |
Signing key password (署名キーパスワード) |
partner2 |
Global usage code (グローバル使用コード) |
Test (テスト) |
Mule DUNS identifier (Mule DUNS 識別子) |
123456788 |
Mule location identifier (Mule 場所識別子) |
partner2 |
Partner DUNS identifier (パートナー DUNS 識別子) |
123456789 |
Partner location identifier (パートナーの場所識別子) |
partner1 |
role in PIP (PIP のロール) |
RESPONDER |
PIP definition path (PIP 定義パス) |
/PIP3A4/V02_02.xml |
[OK] をクリックします。
購入注文確認メッセージを購入者アプリケーションに送信する Send action 操作を追加します。
[Mule Palette (Mule パレット)] ビューから、[RosettaNet] を選択して [Send action] 操作を [Listener] の横にドラッグします。
プロパティウィンドウで、次の項目を設定します。
項目 | Value (値) |
---|---|
Display Name (表示名) |
Send action |
Module configuration (モジュール設定) |
PO_ResponderConfig_Seller |
[OK] をクリックします。
購入注文確認メッセージのメッセージ ID を、HTTP POST
への応答で使用するプレーンテキストに変換する Transform Message コンポーネントを追加します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Transform Message] コンポーネントをキャンバス上の [Send action] の横にドラッグします。
プロパティウィンドウで、[Output (出力)] セクションの括弧を次の DataWeave コードで上書きします。
%dw 2.0
output text/plain
---
"Seller sent action message " ++ attributes.messageId ++ "\n"
dataweave
販売者アプリケーションの 2 番目のフローでは、購入者アプリケーションから肯定応答シグナルを受信し、シグナルに関する情報を記録します。また、購入者アプリケーションから購入注文要求メッセージを受信し、要求に関する情報を記録します。
デフォルトパス (/
) へのコールが行われたときに Mule フローを開始するように Action ソースを設定します。
[Mule Palette (Mule パレット)] ビューから、[Rosettanet] を選択して [Action source] ソースをキャンバスにドラッグします。
[Module configuration (モジュール設定)] 項目に「PO_ResponderConfig_Seller」
と入力します。
肯定応答シグナルおよび購入注文要求メッセージに関する情報を記録する Logger コンポーネントを追加します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Logger] コンポーネントをキャンバス上の Completion source の横にドラッグします。
[Message (メッセージ)] 項目に、次のテキストを入力します。
Seller received action message #[attributes.messageId]
販売者アプリケーションの 3 番目のフローでは、購入注文完了状態メッセージを購入者アプリケーションに送信し、購入注文完了状態メッセージに関する情報を記録します。このフローを作成するには、Action ソースを設定し、Logger コンポーネントを追加する必要があります。
購入者アプリケーションから完了状態を受信するように Action ソースを設定します。
購入注文完了状態メッセージに関する情報を記録する Logger コンポーネントを追加します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Logger] コンポーネントをキャンバス上の Action source の横にドラッグします。
[Message (メッセージ)] 項目に、次のテキストを入力します。
Seller action message #[attributes.replyAttributes.messageId] completed as #[payload.completionCode]
アプリケーションを保存するには、[File (ファイル)] > [Save (保存)] をクリックします。
アプリケーションを実行するには、[Run (実行)] > [Run as (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
販売者アプリケーションのフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:rosetta="http://www.mulesoft.org/schema/mule/rosetta"
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/rosetta
http://www.mulesoft.org/schema/mule/rosetta/current/mule-rosetta.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/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="8082" />
</http:listener-config>
<http:request-config name="HTTP_Request_configuration"
doc:name="HTTP Request configuration" >
<http:request-connection host="localhost" port="8081" />
</http:request-config>
<rosetta:config name="PO_ResponderConfig_Seller"
pipRole="RESPONDER"
doc:name="RosettaNet Config"
listenerConfigName="HTTP_Listener_config"
servicePath="/partner2"
requesterConfigName="HTTP_Request_configuration"
requestPath="/partner1"
keystorePath="/partner2.jks"
keystorePass="nosecret"
privatePass="partner2"
globalUsageCode="Test"
partnerBusinessIdentifier="123456789"
partnerLocationId="partner1"
selfBusinessIdentifier="123456788"
selfLocationId="partner2" pipFile="/PIP3A4/V02_02.xml"/>
<http:listener-config name="HTTP_InputListener"
doc:name="HTTP Listener config" >
<http:listener-connection host="localhost" port="8802" />
</http:listener-config>
<flow name="Send-Purchase-Order-Confirmation">
<http:listener doc:name="Listener"
config-ref="HTTP_InputListener"
path="/" allowedMethods="POST"/>
<rosetta:send-action doc:name="Send action"
config-ref="PO_ResponderConfig_Seller"/>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output text/plain
---
"Seller sent action message " ++ attributes.messageId ++ "\n"]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="Receive-Purchase-Order-Request">
<rosetta:action-source doc:name="Action source"
config-ref="PO_ResponderConfig_Seller"/>
<logger level="INFO" doc:name="Logger"
message="Seller received action message #[attributes.messageId]"/>
</flow>
<flow name="Send-Purchase-Order-Completion">
<rosetta:completion-source doc:name="Completion"
config-ref="PO_ResponderConfig_Seller"/>
<logger level="INFO" doc:name="Logger"
message="Seller action message #[attributes.replyAttributes.messageId] completed as #[payload.completionCode]"/>
</flow>
</mule>
xml
購入者アプリケーションと販売者アプリケーションをテストするには、アプリケーションの実行後に次の手順を実行します。
購入者アプリケーションに購入注文要求を提供します。
販売者アプリケーションに購入注文要求応答を提供します。
購入者アプリケーションの HTTP_InputListener
エンドポイントに対して HTTP POST を使用して、販売者に送信する購入注文要求を提供します。
サンプル注文要求をダウンロードできます。次に、HTTP ツール (ブラウザープラグイン、PostMan などのスタンドアロンツール、または
curl
などのコンソールツール) を使用して、データを購入者アプリケーションに投稿します。
たとえば、次の curl
コマンドは購入注文要求を投稿します。
curl -v -H "Content-Type: application/xml" -XPOST --data-binary @sample-purchase-order-request-content.xml http://localhost:8801
RosettaNet Connector は、購入注文要求に基づいて RosettaNet メッセージを生成して販売者に送信し、HTTP POST 操作に対してメッセージ識別子を返します。コンソールの出力は次のようになります。
INFO ... Seller received action message pMAIhTBMsGzAf/NFx83KBO9nt+T+DV2RNLhwlpNqnXM=0
INFO ... Buyer action message pMAIhTBMsGzAf/NFx83KBO9nt+T+DV2RNLhwlpNqnXM=0 completed as SUCCESS
java
販売者アプリケーションの HTTP_InputListener
エンドポイントに対して HTTP POST を使用して、購入者に送信する購入注文情報を提供します。
サンプル購入注文確認をダウンロードして、任意の HTTP ツールを使用して販売者アプリケーションにデータを投稿できます。
たとえば、次の curl
コマンドは購入注文確認を投稿します。
curl -v -H "Content-Type: application/xml" -XPOST --data-binary @sample-purchase-order-confirmation-content.xml http://localhost:8802
RosettaNet Connector は、購入注文確認に基づいて RosettaNet メッセージを生成して購入者に送信し、HTTP POST 操作に対してメッセージ識別子を返します。コンソールの出力は次のようになります。
INFO ... Buyer received action message ng7+TalLLPTJZHok4tQSBi8RYZD8IsD9+iB85cubzM=1
INFO ... Seller action message sng7+TalLLPTJZHok4tQSBi8RYZD8IsD9+iB85cubzM=1 completed as SUCCESS
java
このサンプルアプリケーションが送信する購入注文確認アクションは単なる例です。実際の購入注文確認を送信するには、RosettaNet の send-action
操作で replyAttributes
を設定して、対応する購入注文要求の受信時に提供された情報を提供する必要があります。これらの replayAttributes
により、RosettaNet プロトコルは同時に発生する多くの要求を見分けることができます。