Web Service Addressing の例

この例では、次のコンポーネントおよび操作を使用して、WS-Addressing を設定して SOAP 要求を送信します。

  • [HTTP] > [Listener]

    フローを開始するコンポーネント。

  • Transform Message

    入力データを新しい出力構造または形式に変換するコンポーネント。

  • SAP S/4HANA > Invoke

    指定されたサービスに要求を送信する操作。

  • Logger

    Mule コンソールに応答を表示するコンポーネント。

    WS-Addressing を有効にして SOAP 要求を送信するための Mule フロー
    Figure 1. この例のフローでは、WS-Addressing を有効にして SOAP 要求を送信します。

この例では、一部の項目値に設定プロパティを使用します。コードで変数をそれらの値に置き換えるか、​src/main/resources/mule-artifact.properties​ ファイルで各変数の値を指定できます。

始める前に

以下が必要です。

  • SAP S/4HANA インスタンスおよび Anypoint Platform へのアクセス権

WS-Addressing ヘッダーを使用した SOAP 要求の送信

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

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

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

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

Listener を追加および設定する

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

    "[Mule Palette (Mule パレット) ビュー内で選択されている HTTP Listener"]

  2. Listener​ 操作をキャンバスにドラッグします。

  3. [Listener (リスナー)]​ 設定で、​[Connector configuration (コネクタ設定)]​ の横にある ​[+]​ をクリックしてグローバル要素を追加します。

  4. デフォルトを受け入れます。

  5. [Path (パス)]​ 項目を ​/wsa​ に設定します。

    HTTP Listener の一般設定項目

Invoke 操作を追加および設定する

  1. [Mule Palette (Mule パレット)]​ ビューで​「SAP S4 HANA」​を検索し、​[Invoke]​ 操作を選択します。

  2. [Invoke]​ 操作をキャンバスの ​[Listener (リスナー)]​ コンポーネントの右にドラッグします。

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

  4. Invoke​ 操作のグローバル要素を設定します。

    • Name (名前)
      設定の参照に使用される名前。この例では、​SAP_S4_HANA_Cloud_SOAP_Config​ を使用します。

    • Service base URL (サービスベース URL)
      コネクタからアクセスする SAP S/4HANA インスタンス (エンドポイント) のベース URL。

    • Username (ユーザー名)
      SAP S/4HANA にログインするためのアカウントユーザー名。

    • Password (パスワード)
      SAP S/4HANA にログインするためのアカウントパスワード。

      Invoke 操作のサンプル値を含む [SAP S/4HANA SOAP Configuration (SAP S/4HANA SOAP 設定)] ウィンドウ
      Figure 2. 次の画像は、​Invoke​ 操作のグローバル要素のサンプル値を示しています。
  5. [Addressing]​ タブを開きます。

  6. WS-Addressing プロパティを設定します。

    • Version (バージョン)
      WS-Addressing バージョン。

    • From (送信元)
      SOAP 要求の送信元となるエンドポイントの参照。

      [Web Service Addressing] 項目を設定
      Figure 3. 次の画像は、​[Addressing]​ 項目のサンプル値を示しています。
  7. Studio キャンバスの下部にある ​[Configuration XML (設定 XML)]​ をクリックして、対応する XML を表示します。

    <s4hana-soap:config name="SAP_S4_HANA_Cloud_SOAP_Config">
        <s4hana-soap:basic-authentication-connection baseUrl="${config.cloud.soap.baseUrl}"
            username="${config.cloud.soap.username}" password="${config.cloud.soap.password}" />
        <s4hana-soap:web-service-addressing wsaVersion="WSA200408" />
    </s4hana-soap:config>
  8. エディターの ​[Global Elements (グローバル要素)]​ タブに戻り、​SAP_S4_HANA_Cloud_SOAP_Config​ 設定を開きます。

  9. ウィンドウ下部の ​[Test Connection…​ (接続をテスト…​)]​ ボタンをクリックして、正常に設定されていることを確認します。

  10. テスト接続に成功したら、​[Test connection (接続をテスト)]​ と ​[Global Element Properties (グローバル要素のプロパティ)]​ ウィンドウを閉じます。

  11. エディターの [Message flow (メッセージフロー)] タブを開いて、​Invoke​ 操作のプロセッサーを開きます。

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

    • Display Name (表示名)
      UI に表示するコネクタ操作の名前。

    • Connector Configuration (コネクタ設定)
      SAP_S4_HANA_Cloud_SOAP_Config​ という名前の ​Invoke​ 操作で以前に作成したグローバル設定。

    • Service name (サービス名)
      サービスの名前。この例では、​CreditManagementAccountByIDQuery_In​ を選択します。

    • Operation name (操作名)
      サービスの操作名。この例では、​CreditManagementAccountByIDQuery_In​ を選択します。

    • メッセージ
      SOAP メッセージのコンテンツ。

  13. メッセージペイロードのグラフィカルビューを開き、SOAP メッセージコンテンツを設定します。この例では、次のペイロードを設定します。

    %dw 2.0
    output application/xml
    ns ns0 http://sap.com/xi/SAPGlobal/Global
    ---
    {
        ns0#CreditManagementAccountByIDQuery: {
            MessageHeader: {
                ID: "@" as String,
                CreationDateTime: now()
            },
            Selection: {
                DebtorPartyInternalID: "0011100050" as String,
                CreditsegmentInternalID: 1 as String
            },
            LanguageCode: "ZZZ" as String
        }
    }
  14. Invoke​ 操作の ​[General (一般)]​ プロパティを設定します。

    Invoke 操作の一般プロパティ
  15. [Advanced (詳細)]​ タブを開き、​[Web Service Addressing]​ ドロップダウンを ​None​ から ​Edit inline​ に変更します。

  16. 次の項目を設定します。

    • To (宛先)
      このメッセージの意図される受信者のアドレス。

    • Version (バージョン)​ (省略可能)
      WS-Addressing バージョン。何も指定されていない場合、コネクタでは設定の値が使用されます。

    • From (送信元)​ (省略可能)
      メッセージの送信元となるエンドポイントの参照。何も指定されていない場合、コネクタでは設定の値が使用されます。

    • メッセージ ID
      時間と空間でメッセージを一意に識別する識別子。何も指定されていない場合、コネクタでは時間ベースの UUID が使用されます。

    • Relates to (関連先)​ (省略可能)
      メッセージが関連するメッセージ ID。

      Invoke 操作の詳細プロパティ
      Figure 4. 次の画像は、​Invoke​ 操作の ​[Web Service Addressing]​ プロパティを示しています。

Transform Message コンポーネントを追加および設定する

応答で JSON に変換する内容を使用して、​[Transform Message]​ コンポーネントをフローに追加します。

  1. [Mule Palette (Mule パレット)]​ ビューで、​「Transform Message」​を検索します。

    [Mule Palette (Mule パレット)] ビュー内で選択されている [Transform Message (Core)] コンポーネント
  2. [Transform Message]​ コンポーネントをキャンバスの ​[Invoke]​ 操作の右にドラッグします。

  3. [Transform Message]​ 設定で、出力を json に設定し、​[Output (出力)]​ セクションの括弧をキーワード ​message​ に置換します。

    %dw 2.0
    output application/json
    ---
    message

Logger コンポーネントを追加および設定する

Logger​ コンポーネントを追加して、Mule コンソールにメッセージ応答を表示するように設定します。

  1. [Mule Palette (Mule パレット)]​ ビューで、​「Logger」​を検索します。

  2. [Logger]​ コンポーネントをキャンバスの ​[Transform Message]​ コンポーネントの右にドラッグします。

  3. 次の項目を設定します。

    • Display Name (表示名)
      Logger コンポーネントの名前。

    • メッセージ
      Mule ログメッセージを指定する文字列または DataWeave 式。

    • Level (レベル)
      ログレベルを設定します。デフォルト値は ​INFO​ です。

      [Logger] プロパティウィンドウ
      Figure 5. 次のイメージは、項目のサンプル値を示しています。

アプリケーションの実行と検証

  1. アプリケーションを実行し、正常にデプロイされるまで待機します。

  2. Web ブラウザーから次の URL にアクセスします: http://localhost:8081/wsa​。

  3. 正常な応答が返されたことを確認します。

  4. [payload (ペイロード)]​ で ​[headers (ヘッダー)]​ プロパティを見つけ、​[Relates to (関連先)]​ プロパティの値が ​Invoke​ 操作の ​[Message ID (メッセージ ID)]​ 項目で設定した値と同じであることを確認します。

Web Service Addressing の XML の例

このユースケース例のフローを Mule アプリケーションに読み込むには、次のコードを XML エディターに貼り付けます。必要に応じて、環境に合わせて値を変更します。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	xmlns:s4hana-soap="http://www.mulesoft.org/schema/mule/s4hana-soap"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	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/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/s4hana-soap http://www.mulesoft.org/schema/mule/s4hana-soap/current/mule-s4hana-soap.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">

	<configuration-properties file="mule-artifact.properties"/>

	<s4hana-soap:config name="SAP_S4_HANA_Cloud_SOAP_Config">
        <s4hana-soap:basic-authentication-connection baseUrl="${config.cloud.soap.baseUrl}"
        username="${config.cloud.soap.username}" password="${config.cloud.soap.password}" />
		<s4hana-soap:web-service-addressing wsaVersion="WSA200408" />
    </s4hana-soap:config>

	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>

	<flow name="web-service-addressing">
		<http:listener config-ref="HTTP_Listener_config" path="/wsa" />
		<s4hana-soap:invoke config-ref="SAP_S4_HANA_Cloud_SOAP_Config"
                    service="https://mysap.s4hana.instance.com/sap/bc/srt/wsdl_ext/flv_10002S111AD1/srvc_url/sap/bc/srt/scs_ext/sap/creditmanagementaccountbyidqu1"
                    operation="CreditManagementAccountByIDQuery_In">
                <s4hana-soap:addressing wsaTo="https://mysap.s4hana.instance.com/sap/bc/srt/scs_ext/sap/creditmanagementaccountbyidqu1"
                                        wsaMessageID="#[123456]" />
                <s4hana-soap:message><![CDATA[#[%dw 2.0
output application/xml
ns ns0 http://sap.com/xi/SAPGlobal/Global
---
{
	ns0#CreditManagementAccountByIDQuery: {
		MessageHeader: {
			ID: "@" as String,
			CreationDateTime: now()
		},
		Selection: {
			DebtorPartyInternalID: "0011100050" as String,
			CreditsegmentInternalID: 1 as String
		},
		LanguageCode: "ZZZ" as String
	}
}]]]></s4hana-soap:message>
            </s4hana-soap:invoke>
		<ee:transform doc:name="Transform Message">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
message]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<logger level="INFO" message="#[payload]"/>
	</flow>
</mule>