Anypoint Studio を使用した Web Service Consumer 1.10 の設定 - Mule 4

Anypoint Studio (Studio) エディターは、Mule アプリケーション、プロパティ、および設定ファイルの設計と更新に役立ちます。

Studio でコネクタを追加および設定する手順は、次のとおりです。

「アプリケーションログの表示」​で説明されているように、コネクタを実行するときに、アプリケーションログを表示して問題を確認できます。

Studio で初めてコネクタを設定する場合は、​「Anypoint Studio を使用したコネクタの設定」​を参照してください。このトピックを読んだ後に、コネクタ項目に関する追加情報が必要な場合は、​「Web Service Consumer Connector リファレンス」​を参照してください。

Mule プロジェクトを作成する

Studio で、コネクタを追加および設定する新しい Mule プロジェクトを作成します。

  1. Studio で、​[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)]​ を選択します。

  2. Mule プロジェクトの名前を入力して、​[Finish (完了)]​ をクリックします。

コネクタを Mule プロジェクトに追加する

Web Service Consumer Connector を Mule プロジェクトに追加して、XML コードにコネクタの名前空間およびスキーマの場所を自動的に入力し、プロジェクトの ​pom.xml​ ファイルに必須の連動関係を追加します。

  1. [Mule Palette (Mule パレット)]​ ビューで、​[(X) Search in Exchange ((X) Exchange 内を検索)]​ をクリックします。

  2. [Add Dependencies to Project (連動関係をプロジェクトに追加)]​ で、検索項目に「​web service consumer​」と入力します。

  3. [Available modules (使用可能なモジュール)]​ で ​[Web Service Consumer (Web サービスコンシューマー)]​ をクリックします。

  4. [Add (追加)]​ をクリックします。

  5. [Finish (完了)]​ をクリックします。

Studio でコネクタを Mule プロジェクトに追加しても、Studio ワークスペースの他のプロジェクトはそのコネクタを使用できません。

ソースの設定

入力元は、指定された条件が満たされたときにフローを開始します。

たとえば、HTTP ​リスナー​を設定する手順は、次のとおりです。

  1. [Mule Palette (Mule パレット)]​ ビューで、​[HTTP]​ > ​[Listener (リスナー)]​ を選択します。

  2. [Listener (リスナー)]​ を Studio キャンバスにドラッグします。

  3. [Listener (リスナー)]​ 設定画面で、必要に応じて ​[Display Name (表示名)]​ 項目の値を変更します。

  4. [Path (パス)]​ 項目の値を指定します。

  5. [Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (​+​) をクリックして、アプリケーション内のすべての ​HTTP Listener​ インスタンスで使用できるグローバル要素を設定します。

  6. [General (一般)]​ タブで、接続情報を指定します。

  7. [TLS]​ タブで、必要に応じて TLS 情報を指定します。

  8. [Advanced (詳細)]​ タブで、必要に応じて再接続戦略を含む再接続情報を指定します。

  9. [Test Connection (接続をテスト)]​ をクリックして、Mule が特定のサーバーに接続できることを確認します。

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

フローにコネクタの操作を追加する

フローにコネクタの操作を追加すると、そのコネクタで実行する特定の操作をすぐに定義できます。

consume 操作を Web Service Consumer Connector に追加するには、次の手順に従います。

  1. [Mule Palette (Mule パレット)]​ ビューで ​[Web Service Consumer (Web サービスコンシューマー)]​ を選択し、​consume​ 操作を選択します。

  2. その操作を Studio キャンバスの入力元の右にドラッグします。

Web Service Consumer Connector の操作
Figure 1. Web Service Consumer Connector の操作

コネクタのグローバル要素を設定する

コネクタを設定する場合、アプリケーション内のそのコネクタのすべてのインスタンスで使用できるグローバル要素を設定することをお勧めします。SOAP Web サービス操作をコンシュームするには、コンシュームするサービスを参照する設定を作成する必要があります。

Web Service Consumer Connector のグローバル要素を設定するには、次の手順に従います。

  1. Studio キャンバスでコネクタの名前を選択します。

  2. [General (一般)]​ タブの ​[Basic Settings (基本設定)]​ セクションで、​[Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (+) をクリックし、グローバル要素設定項目にアクセスします。

  3. [General (一般)]​ タブの ​[Connection (接続)]​ セクションで、次のパラメーターを設定します。

    • WSDL location (WSDL の場所)
      リモートまたはローカル WSDL ファイル URL。

    • Service (サービス)
      サービス名。

    • Port (ポート)
      ポート名。

    • Address (住所)
      Service​ パラメーターと ​Port​ パラメーターで指定されていない場合に使用する、要求をディスパッチする先の Web サーバーのアドレス。

WSDL location​ パラメーター、​Service​ パラメーター、および ​Port​ パラメーターは、有効な設定には必須です。

次の例は、航空会社ごとにフライトのリストを取得するようにグローバル要素を設定する方法を示しています。

Web サービスコンシューマーのグローバル要素
Figure 2. Web サービスコンシューマーのグローバル要素

[Configuration XML (設定 XML)]​ タブでは、XML は次のように記述されます。

<wsc:config name="wsc">
  <wsc:connection
   wsdlLocation="http://ilt.mulesoft-training.com/essentials/delta?wsdl"
   service="TicketServiceService"
   port="TicketServicePort"/>
</wsc:config>
xml

consume 操作の設定

Web Service Consumer Connector のグローバル要素を設定したら、​operation​、​message​ (​body、headers、attachments​) などの consume 操作パラメーターを設定します。また、consume 操作の出力や、メッセージのディスパッチに使用するメタデータ属性についても説明します。

パラメーター

consume 操作には 2 つの主要なパラメーターがあります。

  • Operation
    Web サービスのどの SOAP 操作を呼び出すかを定義します。デザインフェーズでは、このパラメーターは consume 操作の入力と出力のタイプを定義します。タイプは選択する操作によって異なります。

  • Message
    3 つの省略可能なパラメーターから構成される ​SOAP:ENVELOP​ の表現です。

    • Body
      SOAP メッセージに含める XML 本文。必要なパラメーターをすべて含みます。パラメーターが必要でない場合は ​null

    • Headers
      SOAP メッセージに含める XML ヘッダー

    • Attachments
      SOAP 要求に含める添付ファイル

これらの consume 操作パラメーターを設定する手順は次のとおりです。

  1. Studio キャンバスでコネクタの名前を選択します。

  2. consume 操作の ​[General (一般)]​ セクションで ​operation​ を定義し、​[Message (メッセージ)]​ セクションで ​body​、​headers​、​attachments​ の各パラメーターを定義します。

consume 操作の設定
Figure 3. consume 操作の設定

[Configuration XML (設定 XML)]​ タブの consume 操作の基本設定は次のようになります。

<wsc:consume config-ref="config" operation="addClients">
    <wsc:message>
        <wsc:body>#[payload]</wsc:body>
    </wsc:message>
</wsc:consume>
xml

body パラメーター

body​ パラメーターは SOAP メッセージの主要部分です。このパラメーターは、埋め込まれた DataWeave スクリプトを受け入れるので、メッセージへの副作用がなく、または要求を作成するために複数のコンポーネントを使用する必要がなく、XML 要求を作成できることが想定されます。このパラメーターには次のような特徴があります。

  • デフォルト値は ​#[payload]​ で、受信ペイロードはサービスへの送信準備が整った XML エンティティであることが予期されます。

  • body が有効な XML でない場合、または何らかの理由で要求を作成できない場合、​WSC:BAD_REQUEST​ エラーが発生します。

  • body で本文を提供しないと、Web Service Consumer Connector は本文を生成しようとしますが、これは本文に XML エンティティが想定されない場合にのみ機能します。

  • 一部の Web サービスでは、ドキュメントが XML であることを識別するために、バージョンとエンコードに関する情報を含む XML Prolog タグをエンベロープの body XML コンテンツに追加する必要があります。

次の例は、​body​ パラメーター内で DataWeave 式を使用して、XML Prolog オプションを有効にすることで強制的に Web Service Consumer Connector にペイロードをディスパッチさせる方法を示しています。

  1. Studio キャンバスでコネクタの名前を選択します。

  2. [General (一般)]​ タブの ​body​ パラメーター項目に DataWeave 式を追加します。

  3. [Advanced (詳細)]​ タブの ​[Message Customization (メッセージのカスタマイズ)]​ セクションで、​[Force XML Prolog into body (body に XML Prolog を適用)]​ を次のように有効化します。

本文への XML Prolog の設定
Figure 4. 本文への XML Prolog の設定

[Configuration XML (設定 XML)]​ タブでは、XML は次のように記述されます。

<wsc:consume config-ref="config" operation="addClients">
    <wsc:message>
        <wsc:body>
        #[
        %dw 2.0
        output application/xml
        ns con http://service.soap.clients.namespace/
        ---
        con#clients: {
            client: {
                name: "admin1",
                lastname: "textpassword1"
            },
            client: {
                name: "admin2",
                lastname: "textpassword2"
            }
        }]
        </wsc:body>
    </wsc:message>
    <wsc:message-customizations forceXMLProlog="true" />
</wsc:consume>
xml

headers パラメーター

headers​ パラメーターには、SOAP メッセージに関するアプリケーション特有の情報 (認証、支払いなど) が含まれます。このパラメーターは、埋め込まれた DataWeave スクリプトを値として受け入れる XML エンティティです。

次の XML 例は、​headers​ パラメーター内の DataWeave 式を示しています。

<wsc:consume config-ref="config" operation="addClients">
    <wsc:message>
        <wsc:body>#[payload]</wsc:body>
        <wsc:headers>
          #[
          %dw 2.0
          output application/xml
          ns con http://service.soap.clients.namespace/
          ---
          "headers": {
              con#user: "admin",
              con#pass: "textpassword"
          }]
        </wsc:header>
    </wsc:message>
</wsc:consume>
xml

DataWeave スクリプト内では、ルートが ​"headers"​ である必要があります。そうでない場合は、アプリケーションの実行中に次のエラーが返されます: Invalid input headers XML: It must be an xml with the root tag named \'headers\'​。

attachments パラメーター

attachments​ パラメーターを使用して、SOAP メッセージに添付ファイルをバインドすることができます。SOAP を使用するトランスポート用の添付ファイルを作成するには、DataWeave スクリプトを宣言します。このスクリプトの各エントリは添付ファイルを表し、エンティティ値で添付ファイルのコンテンツを指定します。次に例を示します。

次の XML 例では、​attachments​ パラメーター内で DataWeave 式を使用して、​clientsJson​ という新しい添付ファイルを宣言しています。添付ファイルの値は ​jsonFile​ 変数に保存されます。この変数は、​file:read​ 操作から設定することができます。

<wsc:consume config-ref="config" operation="addClients">
    <wsc:message>
        <wsc:body>#[payload]</wsc:body>
        <wsc:attachments>
          #[{ clientsJson: vars.jsonFile } ]
        </wsc:attachments>
    </wsc:message>
</wsc:consume>
xml

出力

consume 操作の出力は、​Message​ パラメーターで使用するのと同じ要素を含む受信 SOAP メッセージを表し、各部分にアクセスすることができます。

下記の XML 例は、以下を保存します。

  • 本文のコンテンツを ​soap.body​ 変数に保存

  • auth​ というヘッダーのコンテンツを ​soap.header.auth​ 変数に保存

  • json​ という添付ファイルのコンテンツを ​soap.attachment.json​ 変数に保存

<flow name="output">
  <wsc:consume config-ref="config" operation="addClients">
      <wsc:message>
          <wsc:body>#[payload]</wsc:body>
      </wsc:message>
  </wsc:consume>
  <set-variable name="soap.body" value="#[payload.body]">
  <set-variable name="soap.header.auth" value="#[payload.headers.auth]">
  <set-variable name="soap.attachment.json" value="#[payload.attachments.json]">
</flow>
xml

属性

アプリケーションが Web サービス操作をコンシュームするときには、応答のコンテンツだけではなく、メッセージのディスパッチに使用された、基になるトランスポートのメタデータも把握したい場合があります。たとえば、HTTP を使用する場合、属性には HTTP 要求にバインドされている HTTP ヘッダーが含まれます (​content-length​、​status​ など)。

Web Service Consumer Connector は、Mule メッセージの属性を使用してこの情報にアクセスします。

アプリケーションログの表示

問題を確認するため、アプリケーションログを次の方法で表示できます。

  • アプリケーションを Anypoint Platform から実行している場合、出力は Anypoint Studio のコンソールウィンドウに表示される。

  • コマンドラインから Mule を使用してアプリケーションを実行している場合、アプリケーションログは OS コンソールに表示される。

アプリケーションのログファイル (​log4j2.xml​) でログファイルパスがカスタマイズされていない場合、デフォルトの場所 ​MULE_HOME/logs/<app-name>.log​ でアプリケーションログを表示することもできます。

次のステップ

グローバル要素と接続情報を設定したら、コネクタの他の項目を設定します。​「追加設定情報」​で、詳細な設定手順を参照してください。