2017.05.23

SalesforceのApexWebサービスを起動するには

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

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!ぜひお試しください。

1 件

関連する記事