今回はSalesforceから公開されたREST APIを呼び出す方法について記載しました。今回はSOAP編になります。
今回使うコンポーネント
コンポーネント | アイコン・領域 | 用途 |
---|---|---|
Invoke apex soap method | SalesforceのSOAP Webサービスを呼び出す |
使い方
まずはSalesforce側でwebservice Apexクラスを作成します。webservice Apexクラスは以前少し取り上げていますが、globalクラスとして定義し、webServiceメソッドとして記述します。今回は以下のコードを使用して、文字列を引数として、メッセージを返すシンプルなコードでやってみることにします。
global class MyWebService {
webService static String makeContact(String message) {
return 'message is ' +message;
}
}
SOAPを呼び出すフローを以下のように記載します。Invoke apex soap methodでwebServiceメソッドを呼び出しますが、その前後のTransform Messageで入出力を定義します。
Transform messageの書き方は少々コツが入ります。SOAPを使用するということは、WSDLの読み込みが必須となります。そのため、Invoke apex soap method前のTransform messageには、webServiceの情報が詰まっているWSDLを読み込みをします。
具体的には以下のような記載で、WSDLを取得し、引数の情報などをセットします。
%dw 2.0
output application/xml
ns ns0 http://soap.sforce.com/schemas/class/MyWebService
---
{
ns0#makeContact: {
ns0#message: "TestMessge"
}
}
ここでいうWSDLの取得にあたる部分が3行目。nsと記載されているのは、名前空間(Name Space)を意味し、MyWebServiceのメソッド情報を取得しているという感じです。ns0は変数みたいなもので、取得したWSDL情報をns0という箱の中にインポートしているような形になります。
Invoke apex soap methodにはInput、Apex Class name、Apex Class Method Nameを指定します。Invoke apex rest methodほど複雑な入力はないため、xml形式のInputが間違っていなければ問題なく設定できるかと思います。
項目 | 設定内容 |
---|---|
Input | Transform Messageで設定したpayload |
Apex Class Name | Apexクラス名(MyWebService) |
Apex Class Method Name | メソッド名(mekeContact) |
Invoke apex soap method直後のTransform Messageはxml形式のものをJSON形式に変換するために入れています。
%dw 2.0
output application/json
---
payload
フローを実行した結果のレスポンスは以下のようになります。
{
"makeContactResponse": {
"result": "message isTestMessge"
}
}
このようにSalesforce上で作成されたwebservice Apexクラスを呼び出すこともできるため、より実装の幅が広がるのではないかと思います。
コメント