SkyOnDemandはSalesforceとの連携に多く利用されています。
SkyOnDemandにはSalesforce専用のアダプタが搭載されています。このアダプタは、Salesforceの各種APIを使用したデータの読み書きなど全部で39の機能が用意されているので、様々な要件のSalesforce連携を実現することができます。
さらに、これに加えてSalesforceに独自実装した「ApexWebサービス」を起動することも可能です。
ApexWebサービスとは?
SalesforceのApexコードでは、コーディングしたApexメソッドをWebサービスとして外部へ公開することができます。この概念をApexWebサービスと呼びます。公開することにより、自身で作成したApexコードを外部アプリケーションから利用可能となります。
SkyOnDemandから起動するには?
Webサービスを実行するための汎用的な機能である「Webサービスアダプタ」を使用します。これは、SkyOnDemandに搭載されているアダプタのひとつで、サービサーから取得したWSDLをロードさせることで、定義されたサービスの起動処理をUIベースで簡単に設定することができます。
利用シーン
例えば、次のような利用シーンが考えられます。
- 利用しているSalesforce組織では、Visualforce+Apexで画面開発を行っている
- 画面で使用するデータ更新ロジックはApexに実装されている
- 外部からデータを取り込む際に、画面と同じロジックを使用したい
ApexをWebサービス化しておけば、SkyOnDemandが他システムから収集してきたデータの取り込みの際にApexに実装したロジックを流用できそうですね。
Hello World! してみる
▼ まず、実装したApexはこんな感じです。クラスに"global"アクセス修飾子、メソッドに"WebService static"修飾子を定義することでApexWebサービスとして利用できるようになります。
global class SampleClass { WebService static String sayHello(String arg) { return 'Hello ' + arg; } }
▼ ApexWebサービスとして作成したApexクラスからはWSDLを取得することができます。今回は「SampleClass.wsdl」というファイル名でローカルへ保存します。
▼ ここからはSkyOnDemand側の設定です。まず、エクスプローラから任意のディレクトリへWSDLファイルをアップロードします。
▼ Webサービスアダプタのグローバルリソース接続設定を作成します。
▼ sayHelloメソッドを実行するスクリプトを作成します。
サーバ情報取得
ApexWebサービスへリクエストするには「Session ID」が必要です。今回は、Salesforceアダプタの「サーバ情報取得」コンポーネントを使用して、リクエスト前にセッションを作成しておくようにします。
arg を指定
マッピングにてsayHelloメソッドの引数argに"World!"を入力しています。
ApexWebサービス実行
Webサービスアダプタのコンポーネントです。プロパティからWSDLに定義されているメソッドを選択することができます。sayHelloメソッドを選択します。
前述したように、ApexWebサービスへリクエストするには「Session ID」が必要です。タブ「SOAPヘッダ」にてSessionHeaderを指定します。反転している部分は「サーバ情報取得」コンポーネント変数から「session_id」の値を代入するにように指定しています。(SOAPヘッダのタグは「WSDLを分析する...」をクリックすると表示されます。)
戻り値を変数代入
sayHelloメソッドの戻り値をスクリプト変数へ代入しています。
これでスクリプトは完成です。それでは実行してみます。
メソッドの戻り値に"Hello World!"が返されています。
なお、今回はSkyOnDemandのスクリプトはApexWebサービスを起動するだけのシンプルなものでしたが、スクリプトを作成する部品には条件分岐やデータの加工などのロジック部品も用意されているので、Apex側でなくSkyOnDemand側にロジックを持たせることも選択肢のひとつです。
また、ApexコードではApexから外部Webサービスを呼び出す「Apexコールアウト」が可能です。つまり今回とは逆にApexからSkyOnDemandに作成したスクリプトを起動するなんてこともできます。
Salesforceとの連携実績が豊富なSkyOnDemandでは、今回紹介したような様々な連携パターンを想定した機能を用意しています。Salesforce連携と言えばSkyOnDemand!ぜひお試しください。