Rosettanet Connector の例 - Mule 4

この例は 2 つのアプリケーションで構成されています。

  • 購入者アプリケーションは、購入注文要求メッセージを販売者アプリケーションに送信します。

  • 販売者アプリケーションは、注文が履行されたときに購入注文確認メッセージを購入者アプリケーションに送信します。

次の図は、2 つのアプリケーションのリレーションを示しています。

購入者アプリケーションと販売者アプリケーションのリレーション

購入者アプリケーション

購入者アプリケーションは次のアクションを実行します。

  1. 入力購入注文要求ドキュメントを ​HTTP POST​ 経由で受信します。

  2. RosettaNet の ​Send action​ 操作を使用して、購入注文要求メッセージを販売者アプリケーションに送信します。

  3. 購入注文要求メッセージのメッセージ ID を、​HTTP POST​ への応答で使用するプレーンテキストに変換します。

  4. 販売者アプリケーションから肯定応答シグナルを受信し、シグナルに関する情報を記録します。

  5. 販売者アプリケーションから購入注文確認メッセージを受信し、確認メッセージに関する情報を記録します。

  6. 販売者アプリケーションから完了状態を受信し、完了状態に関する情報を記録します。

次のスクリーンショットは、購入者アプリケーションの Anypoint Studio アプリケーションフローを示しています。

購入者アプリケーションの Studio フロー
購入者の非公開キー、購入者の証明書、販売者の証明書が含まれる購入者アプリケーションのキーストアは、プロジェクトの ​src/main/resources​ にあります。

購入者アプリケーションの最初のフローの作成

購入者アプリケーションの最初のフローでは、購入注文要求ドキュメントを ​HTTP POST​ 経由で受信して、販売者アプリケーションに RosettaNet アクションメッセージとして送信します。このフローを作成するには、新しい Mule プロジェクトの作成、​HTTP Listener​ ソースの設定、​Send action​ 操作の追加、​Transform​ コンポーネントの追加を行う必要があります。

HTTP Listener ソースの設定

デフォルトパス (​/​) へのコールが行われたときに Mule フローを開始するように ​HTTP Listener​ ソースを設定します。

  1. Studio で新しい Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)]​ ビューから、​[HTTP]​ を選択して ​[Listener]​ コンポーネントをキャンバスにドラッグします。

  3. プロパティウィンドウで、​[Connector configuration (コネクタ設定)]​ 項目の横にある ​[+]​ をクリックしてグローバル要素を追加します。

  4. [Name (名前)]​ 項目に、​「HTTP_InputListener」​と入力し、デフォルト値を受け入れます。

PO_I​nitiatorConfig_Buyer グローバル要素を追加する

Send action​ 操作の ​PO_InitiatorConfig_Buyer​ グローバル要素を追加します。

  1. Send action​ 操作のプロパティウィンドウで、​[Module configuration (モジュール設定)]​ 項目の横にある ​[+]​ をクリックしてグローバル要素を追加します。

  2. [RosettaNet Config (RosettaNet 設定)]​ ウィンドウで、次の項目を入力します。

    Global HTTP Listener (グローバル HTTP リスナー) HTTP_Listener-config

    Service Endpoint Path (サービスエンドポイントパス)

    /partner1

    Global HTTP Request (グローバル HTTP 要求)

    HTTP_R​equest_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

  3. [OK]​ をクリックします。

Send Action 操作を追加する

PO_InitiatorConfig_Buyer​ グローバル要素で定義された設定を使用して購入注文要求メッセージを販売者アプリケーションに送信するために、​Send action​ 操作を追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[RosettaNet]​ を選択して ​[Send action]​ 操作を ​[Listener]​ の横にドラッグします。

  2. プロパティウィンドウで、次の項目を入力します。

    項目 Value (値)

    Display Name (表示名)

    Send action

    Module configuration (モジュール設定)

    PO_I​nitiatorConfig_Buyer

Transform Message コンポーネントの追加

購入注文要求メッセージのメッセージ ID をプレーンテキストに変換する ​Transform Message​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Transform Message]​ コンポーネントを ​[Send action]​ の横にドラッグします。

  2. プロパティウィンドウで、​[Output (出力)]​ セクションの括弧を次の DataWeave コードで上書きします。

    %dw 2.0
    output text/plain
    ---
    "Buyer sent action message " ++ attributes.messageId ++ "\n"
    dataweave

購入者アプリケーションの 2 番目のフローの作成

購入者アプリケーションの 2 番目のフローでは、販売者アプリケーションから肯定応答シグナルを受信し、シグナルに関する情報を記録します。また、販売者アプリケーションから購入注文確認メッセージを受信し、メッセージに関する情報を記録します。

アクションソースを設定する

/partner2​ パスへのコールが行われたときに Mule フローを開始するように ​Action source​ ソースを設定します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Rosettanet]​ を選択して ​[Action source]​ ソースをキャンバスにドラッグします。

  2. [Module configuration (モジュール設定)]​ 項目に​「PO_InitiatorConfig_Buyer」​と入力します。

Logger コンポーネントを追加する

肯定応答および購入注文確認メッセージに関する情報が含まれるメッセージを記録する ​Logger​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Logger]​ コンポーネントをキャンバス上の ​Action source​ の横にドラッグします。

  2. [Message (メッセージ)]​ 項目に、次のテキストを入力します。

    "Buyer received action message #[attributes.messageId]"

購入者アプリケーションの 3 番目のフローの作成

購入者アプリケーションの 3 番目のフローでは、販売者アプリケーションから完了状態を受信し、完了状態に関する情報を記録します。

Completion Source を設定する

販売者からの購入注文完了状態メッセージをリスンするように ​Completion source​ ソースを設定します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Rosettanet]​ を選択して ​[Completion source]​ ソースをキャンバスにドラッグします。

  2. [Module configuration (モジュール設定)]​ 項目に​「PO_InitiatorConfig_Buyer」​と入力します。

Logger コンポーネントを追加する

購入注文完了状態に関する情報を記録する ​Logger​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Logger]​ コンポーネントをキャンバス上の ​Completion source​ の横にドラッグします。

  2. [Message (メッセージ)]​ 項目に、次のテキストを入力します。

    Buyer action message #[attributes.replyAttributes.messageId] completed as #[payload.completionCode]

アプリケーションを保存して実行する

アプリケーションを保存するには、​[File (ファイル)] > [Save (保存)]​ をクリックします。

アプリケーションを実行するには、​[Run (実行)] > [Run as (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)]​ をクリックします。

購入者アプリケーションの XML

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

販売者アプリケーション

販売者アプリケーションは次のアクションを実行します。

  1. 入力購入注文要求確認ドキュメントを ​HTTP POST​ 経由で受信します。

  2. RosettaNet の ​Send action​ 操作を使用して、購入注文確認メッセージを購入者に送信します。

  3. 購入注文確認メッセージの RosettaNet メッセージ ID を、​HTTP POST​ への応答で使用するプレーンテキストに変換します。

  4. 購入者アプリケーションから購入注文要求メッセージを受信し、要求メッセージに関する情報を記録します。

  5. 購入者アプリケーションから肯定応答シグナルを受信し、シグナルに関する情報を記録します。

  6. 購入者アプリケーションから完了状態メッセージを受信し、完了状態メッセージに関する情報を記録します。

次のスクリーンショットは、販売者アプリケーションの Anypoint Studio アプリケーションフローを示しています。

販売者アプリケーションの Studio フロー
販売者の非公開キー、販売者の証明書、購入者の証明書が含まれる販売者アプリケーションのキーストアは、プロジェクトの ​src/main/resources​ にあります。

販売者アプリケーションの最初のフローの作成

販売者アプリケーションの最初のフローでは、購入注文要求確認ドキュメントを ​HTTP POST​ 経由で受信して、購入者アプリケーションに RosettaNet アクションメッセージとして送信します。このフローを作成するには、新しい Mule プロジェクトの作成、​HTTP Listener​ ソースの設定、RosettaNet の ​Send action​ 操作の設定、​Transform​ コンポーネントの追加を行う必要があります。

HTTP Listener ソースの設定

デフォルトパス (​/​) へのコールが行われたときに Mule フローを開始するように ​HTTP Listener​ ソースを設定します。

  1. Studio で新しい Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)]​ ビューから、​[HTTP]​ を選択して [Listener] コンポーネントをキャンバスにドラッグします。

  3. プロパティウィンドウで、[Connector configuration (コネクタ設定)] 項目の横にある ​[+]​ をクリックしてグローバル要素を追加します。

  4. [Name (名前)]​ に​「HTTP_InputListener」​と入力します。

  5. [Port (ポート)]​ に​「8082」​と入力します。

  6. [Read timeout (読み取りタイムアウト)]​ に​「3000」​と入力します。

Send Action 操作のグローバル要素を追加する

Send action​ 操作の ​PO_ResponderConfig_Seller​ というグローバル要素を作成します。

  1. Send action​ 操作のプロパティウィンドウで、​[Module configuration (モジュール設定)]​ 項目の横にある ​[+]​ をクリックしてグローバル要素を追加します。

  2. [RosettaNet Config (RosettaNet 設定)]​ ウィンドウで、次の項目を設定します。

    項目 Value (値)

    Global HTTP Listener (グローバル HTTP リスナー)

    HTTP_Listener-config

    Service Endpoint Path (サービスエンドポイントパス)

    /partner2

    Global HTTP Request (グローバル HTTP 要求)

    HTTP_R​equest_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

  3. [OK]​ をクリックします。

Send Action 操作を追加する

購入注文確認メッセージを購入者アプリケーションに送信する ​Send action​ 操作を追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[RosettaNet]​ を選択して ​[Send action]​ 操作を ​[Listener]​ の横にドラッグします。

  2. プロパティウィンドウで、次の項目を設定します。

    項目 Value (値)

    Display Name (表示名)

    Send action

    Module configuration (モジュール設定)

    PO_R​esponderConfig_Seller

  3. [OK]​ をクリックします。

Transform Message コンポーネントの追加

購入注文確認メッセージのメッセージ ID を、​HTTP POST​ への応答で使用するプレーンテキストに変換する ​Transform Message​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Transform Message]​ コンポーネントをキャンバス上の ​[Send action]​ の横にドラッグします。

  2. プロパティウィンドウで、​[Output (出力)]​ セクションの括弧を次の DataWeave コードで上書きします。

    %dw 2.0
    output text/plain
    ---
    "Seller sent action message " ++ attributes.messageId ++ "\n"
    dataweave

販売者アプリケーションの 2 番目のフローの作成

販売者アプリケーションの 2 番目のフローでは、購入者アプリケーションから肯定応答シグナルを受信し、シグナルに関する情報を記録します。また、購入者アプリケーションから購入注文要求メッセージを受信し、要求に関する情報を記録します。

アクションソースを設定する

デフォルトパス (​/​) へのコールが行われたときに Mule フローを開始するように ​Action​ ソースを設定します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Rosettanet]​ を選択して ​[Action source]​ ソースをキャンバスにドラッグします。

  2. [Module configuration (モジュール設定)]​ 項目に​「PO_ResponderConfig_Seller」​と入力します。

Logger コンポーネントを追加する

肯定応答シグナルおよび購入注文要求メッセージに関する情報を記録する ​Logger​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Logger]​ コンポーネントをキャンバス上の ​Completion source​ の横にドラッグします。

  2. [Message (メッセージ)]​ 項目に、次のテキストを入力します。

    Seller received action message #[attributes.messageId]

販売者アプリケーションの 3 番目のフローの作成

販売者アプリケーションの 3 番目のフローでは、購入注文完了状態メッセージを購入者アプリケーションに送信し、購入注文完了状態メッセージに関する情報を記録します。このフローを作成するには、​Action​ ソースを設定し、​Logger​ コンポーネントを追加する必要があります。

アクションソースを設定する

購入者アプリケーションから完了状態を受信するように ​Action​ ソースを設定します。

Logger コンポーネントの追加

購入注文完了状態メッセージに関する情報を記録する ​Logger​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Logger]​ コンポーネントをキャンバス上の ​Action source​ の横にドラッグします。

  2. [Message (メッセージ)]​ 項目に、次のテキストを入力します。

    Seller action message #[attributes.replyAttributes.messageId] completed as #[payload.completionCode]

アプリケーションを保存して実行する

アプリケーションを保存するには、​[File (ファイル)] > [Save (保存)]​ をクリックします。

アプリケーションを実行するには、​[Run (実行)] > [Run as (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)]​ をクリックします。

販売者アプリケーションの XML

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

サンプルをテストする

購入者アプリケーションと販売者アプリケーションをテストするには、アプリケーションの実行後に次の手順を実行します。

  1. 購入者アプリケーションに購入注文要求を提供します。

  2. 販売者アプリケーションに購入注文要求応答を提供します。

購入注文要求ドキュメントの提供

購入者アプリケーションの ​HTTP_InputListener​ エンドポイントに対して HTTP POST を使用して、販売者に送信する購入注文要求を提供します。

サンプル注文要求Leaving the Site​をダウンロードできます。次に、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 を使用して、購入者に送信する購入注文情報を提供します。

サンプル購入注文確認Leaving the Site​をダウンロードして、任意の 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 プロトコルは同時に発生する多くの要求を見分けることができます。