Dreamforceレポート1日目 SalesforceのOData対応

みなさんこんにちは。 現在サンフランシスコで開催中のDremforce2013のレポートを現地よりお届けするシリーズ第一回です。 今回は初日である11/18のセッションの中から、非常に重要度が高い発表であると思われるSalesforceのOData対応(Spring 2014より)について紹介します。

そもそもODataって何?

ODataとは、HTTP経由でデータの参照・更新を行うためのWebプロトコルです。

例えば http://●●●/Companies(0)/Persones?$top=10&$orderby=age だとCompaniesのIDが0であるレコードに紐づくPersonsの一覧をageでorderbyして上位10件を返しましょう、という約束事です。 データはAtomPubまたは JSON で転送されます。

今回の機能追加内容は?

「ExternalObjectSource」という、外部データを受けるためのObjectが追加されます。これを使うことで「ODataに対応した外部システム(SAP等)のデータをSalesforce側から参照する」ことが容易にできるようになります。 更新はできませんし「SalesforceをデータソースとしてODataで外部システムから参照」といった機能が提供された訳ではありません。

デモ1:ODataによる外部連携

最初のデモではSAPをデータソースとしてSalesforce側でデータテーブルに一覧表示していました。 設定手順としてはシンプルで、ExternalObjectSourceをSalesforce側に作成し、あとは作成したExternalObjectSourceをあたかも通常のCustomObjectのようにVisualforcePageやApexClassから利用するだけです。 外部データはSalesforce側にコピーされる訳ではなく、参照のたびに再取得されます。

設定項目

ExternalObjectSourceを作成するための設定項目としては

  • Label
  • Name
  • Type : データタイプ。Odata/Apex connector frameworkのいずれか。ApexConnectorFrameworkを選択するとODataに対応していない外部システムのデータ(Bingの検索結果等)をExternlObjectSourceとして扱えます
  • Identity type : 認証方式。Oauth, Basic, Anonymousのいずれか
  • ServerURL
  • 接続用クラス : Type でApex connector frameworkを選んだ場合のみ
  • データ取得用クラス : Type でApex connector frameworkを選んだ場合のみ

となります。

ODataの外部リソースとして利用可能なもの

代表的なものとしては

  • Java
    • odata4j
    • ApacheOlingo
  • .NET
    • WCF DataService
    • LightSwitch
  • PHP
    • odataphpprod
  • Ruby
    • https://github.com/lmcalpin/odata_server
  • Node.js
    • datajs
    • JayData

があります。

デモ2:ODataに対応していない外部データの利用

2番目のデモとして、ExternalObjectSourceのTypeにODataでは無くApex Connector Frameworkを選択、外部リソースとしてはBing検索を指定しデータを取得するデモが行われました。 Apex Connector Frameworkの方はODataと違いデータソースとしては何でもあり、ただし接続用クラスとデータ取得(整形)用クラスを自分で書く必要があります。ODataについてのセッションの大枠は以上です。

他に、質疑応答で

  • ODataを使って他のSalesforce組織との連携はできるか? / salesforce はOData出力の仕組みは提供していない
  • ExaternalObjectSourceにトリガーを張ることはできるかできるか /できない
  • Visualforceモバイルは対応してる? / まだ。将来的には
  • 連携元のデータ型が変えられたらどうなる? / exceptionが出るかもしれない
  • ODataのバージョンは? / 現在はVersion2。Version4もキャッチアップしていく
  • セキュリティは? / ExternalObjectSourceに対しプロパティごとに参照権限設定可能

等の話がありました。

日本語通訳が無いセッションであったため聞き間違い等がある可能性があります。 またSpring2014までに仕様が変わる可能性もあります。 Dreamforce2013レポート1日目は以上です。では2日目をお楽しみに!