はじめに
暦は冬 現は秋
立冬を迎え 冬の足音が近づく
皆さん こんにちは(*´▽`)ノ゙
製品開発本部 開発部の塚本です。
読書の秋 食欲の秋 スポーツの秋・・・
色々な秋を満喫したいところですが、寒くて満喫する気がおきない今日この頃です(´∀`;)
皆さん いかがお過ごしでしょうか(´‐`*?)
今回は、アダプタとSalesforceのSOAP APIを組み合わせた小ネタを紹介します。
皆さんならどうしますか?
会社Aに会社Bが吸収合併されて1つの会社になりました。
会社Bの取引先責任者を会社Aの取引先責任者にマージしたいと思います。
皆さんならどのようにしますか(´‐`*?)
「Webサービスアダプタ」+「SalesforceのSOAP API」でマージができます!
使用するSalesforceのSOAP APIのコールは、login()とmerge()です。
login()は、ログインサーバにログインしてクライアントセッションを開始するためのAPIコールです。
SalesforceのSOAP API login()の詳細はこちら
merge()は、同じ種別の最大3つのレコードを1つのレコードに統合するためのAPIコールです。
SalesforceのSOAP API merge()の詳細はこちら
さっそくマージ方法をみていきましょう。
マージ方法
SalesforceのSOAP APIのmerge()を使用して取引先をマージすると、マージ元に関連付けられている取引先責任者をマージ先に関連付けすることができます。
こちらを使用して「会社Bの取引先責任者を会社Aの取引先責任者にマージしたい」というご要望を実現します!
以下のデータを使用してマージ方法をみていきます。
マージを実行するためには、Salesforceにログインして「セッションID」と「サーバURL」を取得する必要があります。
Salesforceへ「Webサービスアダプタ」+「SalesforceのSOAP API」でログインができます!
Salesforceアダプタを使用して「セッションID」と「サーバURL」を取得できますが「Webサービスアダプタ」+「SalesforceのSOAP API」での実行方法に注目してほしいので、あえてSalesforceアダプタは使用しません。
まずは、Salesforceにログインして「セッションID」と「サーバURL」を取得してみましょう。
■ ログイン ■
1. コントロールパネルよりグローバルリソースを設定
- WSDLファイルは、Salesforceから取得したPartner WSDLを使用します。
2. デザイナを開き、【ツールパレット】→【ネットワーク】→【Webサービス】→【Webサービス実行】
を配置
3. 必須設定のタブに必要な情報を入力
4. 手動設定タブよりSOAPエンベロープを定義
- 定義に必要な情報は、スクリプト変数を使用して入力しています。
- Salesforceで許可していない環境の場合は、パスワードにセキュリティトークンを付加する必要があり
ます。
例
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns0="urn:fault.partner.soap.sforce.com"
xmlns:ns1="urn:sobject.partner.soap.sforce.com"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<login xmlns="urn:partner.soap.sforce.com">
<username>${UserName}</username>
<password>${PassWord}</password>
</login>
</soapenv:Body>
</soapenv:Envelope>
5. 実行
以上で「セッションID」と「サーバURL」が取得できました。
それでは、マージをしてみましょう。
■ マージ ■
1. 新たにWSDLファイルをSalesforceから取得し、Soap Service Endpointを書き換え
- 先ほど取得した「サーバURL」に書き換えます。Partner WSDLを使用します。
<!-- Soap Service Endpoint -->
<service name="SforceService">
<documentation>Sforce SOAP API</documentation>
<port binding="tns:SoapBinding" name="Soap">
<soap:address location="ServerURL"/>
</port>
</service>
2. コントロールパネルよりマージ用グローバルリソースを設定
- WSDLファイルは、Soap Service Endpointを書き換えたものを使用します。
- WSDLファイル以外の設定は、ログイン用と同じです。
3. デザイナを開き、【ツールパレット】→【ネットワーク】→【Webサービス】→【Webサービス実行】
を配置
4. 必須設定のタブに必要な情報を入力
- 接続先は、マージ用グローバルリソースを設定します。
- オペレーションは、mergeを設定します。
- 上記以外の設定は、ログイン時と同じです。
5. 手動設定タブよりSOAPエンベロープを定義
- 定義に必要な情報は、一部スクリプト変数を使用して入力しています。
- 「MasterRecordId」は、マージ先となる取引先のレコードIDを設定します。
今回は、株式会社Aとなります。
- 「RecordToMergeIds」は、マージ元となる取引先のレコードIDを設定します。
今回は、株式会社Bとなります。
例
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns0="urn:fault.partner.soap.sforce.com"
xmlns:ns1="urn:sobject.partner.soap.sforce.com"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header xmlns="urn:fault.partner.soap.sforce.com">
<SessionHeader>
<sessionId>${SessionID}</sessionId>
</SessionHeader>
</soapenv:Header>
<soapenv:Body>
<merge xmlns="urn:partner.soap.sforce.com">
<request>
<masterRecord>
<ns1:type>Account</ns1:type>
<ns1:Id>${MasterRecordId}</ns1:Id>
</masterRecord>
<recordToMergeIds>${RecordToMergeIds}</recordToMergeIds>
</request>
</merge>
</soapenv:Body>
</soapenv:Envelope>
6. 実行
以上でマージができました。
作成したスクリプトは、以下のようになります。
マージした結果、株式会社Bが取引先から消えて、株式会社Bに関連付けられていた取引先責任者が株式会社Aに関連付けられました!
おわりに
いかがでしたでしょうか(´‐`*?)
Webサービスアダプタは、汎用的なアダプタですので、SalesforceのSOAP API以外とも組み合わせることができます。
ぜひ色々と組み合わせてWebサービスアダプタを使用してみてください。
(*´▽`)ノ゙