Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerWeb Service Consumer Connector の設定を作成したら、設定したサービスから SOAP 操作のコンシュームを開始できます。Web サービスコンシューマーの設定をまだ作成していない場合は、「Web サービスコンシューマーの設定ドキュメント」を参照してください。
Web Service Consumer Connector には 1 つの wsc:consume
操作があります。この操作には、2 つの重要なパラメーター Operation (操作) (operation
) と Message (メッセージ) (wsc:message
) があります。
wsc:consume
操作の基本構文は次のとおりです。
<wsc:consume config-ref="config" operation="clients-list">
<wsc:message>
<wsc:body>#[payload]</wsc:body>
</wsc:message>
</wsc:consume>
xml
SOAP メッセージのディスパッチで問題が発生したら、WSC:CANNOT_DISPATCH
エラーを受信します。
operation
パラメーターは、Web サービスのどの SOAP 操作を呼び出すかを定義します。デザインタイムでは、operation パラメーターは consume
操作の入力と出力のタイプを定義します。タイプは選択する操作によって異なります。
message
パラメーターは、Body、Headers、Attachments という 3 つの要素で構成される SOAP:ENVELOP
の表現です。これらの要素はすべて省略可能です。
body
はメッセージの主要部分です。SOAP メッセージの最終的なエンドポイントに向けられた SOAP メッセージが含まれています。このパラメーターは常に XML アプリケーション固有の要素です。
body
要素は埋め込まれた DataWeave スクリプトを値として受け入れるので、メッセージへの副作用がなく、または要求を作成するために複数のコンポーネントを使用する必要がなく、XML 要求を作成できます。デフォルトでは、メッセージの body の値は #[payload]
です。つまり、デフォルトで、受信ペイロードはサービスへの送信準備が整った XML エンティティであることが予期されます。
body 要素内の変換の例を次に示します。
<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: "Natasha",
lastname: "Ferrari"
},
client: {
name: "Lucas",
lastname: "Barzola"
}
}]
</wsc:body>
</wsc:message>
</wsc:consume>
xml
body が有効な XML でない場合、または何らかの理由で要求を作成できない場合、WSC:BAD_REQUEST
エラーが発生します。
body のコンテンツが指定されていない場合、Web サービスコンシューマーはコンテンツの生成を試みます。これは、body 内で XML エンティティが予期されない場合にのみ機能します。
省略可能な headers
要素には、SOAP メッセージに関するアプリケーション固有の情報 (認証や支払いなど) が含まれます。body
要素と同様に、この要素は XML エンティティであり、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: "NahuelMonin",
con#pass: "%M4g\/iT0Rn4!"
}]
</wsc:header>
</wsc:message>
</wsc:consume>
xml
DataWeave スクリプト内では、ルートが "headers"
である必要があります。そうでない場合は、アプリケーションの実行中に次のエラーが返されます: Invalid input headers XML: It must be an xml with the root tag named \'headers\'
。
Anypoint Studio では、Web サービスコンシューマーの Consume
操作をキャンバスにドラッグした後、Web サービスコンシューマーのプロパティを使用して、[Headers (ヘッダー)] 項目に SOAP ヘッダーを指定できます。
SOAP ヘッダーの設定についての詳細は、 「How to set SOAP headers in Web Service Consumer in Mule 4 (Mule 4 の Web サービスコンシューマーで SOAP ヘッダーを設定する方法)」を参照してください。
attachments
要素を使用して、SOAP メッセージに添付ファイルをバインドすることができます。SOAP を使用するトランスポート用の添付ファイルを作成するには、DataWeave スクリプトを宣言する必要があります。このスクリプトの各エントリは添付ファイルを表し、その値で添付ファイルのコンテンツを指定します。次に例を示します。
<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
この例では、clientsJson
という新しい添付ファイルを宣言し、そのコンテンツは jsonFile
という変数に保存されています。この変数は、たとえば file:read
操作から設定することができます。
consume
操作の出力は、message
パラメーターで使用するのと同じ要素を含む受信 SOAP メッセージを表し、各部分にアクセスすることができます。
例を挙げます。
<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.auth.header" value="#[payload.headers.auth]">
<set-variable name="soap.attachment.json" value="#[payload.attachments.json]">
</flow>
xml
この例では、soap.body
という新しい変数に本文のコンテンツが保存されています。soap.auth.header
変数に auth
というヘッダーが、soap.attachment.json
という変数に json
という添付ファイルのコンテンツがそれぞれ保存されています。
Web サービス操作をコンシュームするとき、応答のコンテンツだけではなく、メッセージのディスパッチに使用された基になるトランスポートのメタデータも把握したい場合があります。たとえば、HTTP を使用する場合、属性には HTTP 要求にバインドされている HTTP ヘッダーが含まれます (content-length
、status
など)。
Web Service Consumer Connector は、Mule メッセージの属性を使用してこの情報にアクセスします。