Salesforceと外部システムの連携がわりと頻繁にニーズとして出てきたこともあり、外部連携についていろいろ試しているが、Salesforceの学習ツール:TrailheadにSalesforce Connectというモジュールがあったので、やってみた。
(Lightning Connectとしてリリースされた後に、Ruby on RailsでHerokuに簡単なアプリをデプロイ後、PostgresのテーブルとSalesforceを外部オブジェクトとして連携したことがあったので、あらためて再学習を含めてやった感じ。)
本モジュールのダイジェストを備忘としてメモ。
1. Salesforce Connect概要
Salesforce Connectとは、Salesforce外の別システムに登録されているデータをSalesforceのオブジェクト(外部オブジェクト)として取扱い、データ表示/変更を可能とするもので、リアルタイムなデータアクセスとなっている。
外部システムからのデータコピーではなく外部データへのライブ接続となる。
Salesforce Connect利用について
Salesforce Connectに適した環境
- 大量のデータがあり、Salesforce 組織にコピーしたくない
- 常に少量のデータが必要である
- 最新データにリアルタイムでアクセスする必要がある
- データをクラウドまたはバックオフィスシステムに保存しているが、そのデータを Salesforce 組織で表示または処理したい
Salesforce Connectに適さない環境
- 大量の外部データに頻繁にアクセスする必要がある
(ETLツールの方が適している)
外部オブジェクトとして取り扱うことのメリット
- カスタムオブジェクトと同様にリストビュー、詳細ページ、レコードフィード、カスタムタブが利用可能
- 標準オブジェクトまたはカスタムオブジェクトとのリレーション設定可能
- 外部オブジェクトページ上でChatter利用可能(同僚とのコラボレーション)
- グローバル検索、SOSL/SOQLクエリ、Apex、Visualforce、API等で利用可能
カスタムオブジェクトとの機能比較はTrailhead参照。
外部接続の種別
外部システムに保存されているデータに接続するために、特別に設計されたいずれかのアダプタを使用
- OData 2.0または4.0 アダプタ : Microsoftなどは既に本プロトコルサポート済み
- 組織間アダプタ : 別のSalesforce組織に保存されているデータに接続
- Apexで作成されたカスタムアダプタ : ODataアダプタや組織間アダプタが適用できない場合、Apex Connector Frameworkを使用して独自のアダプタを開発
2. Salesforce Connectの設定
設定の詳細はこちらを参照
サンプルの外部連携データとしてHeroku上に公開データあり(OData 2.0 データソース)
外部データソースに接続
1. [設定]画面の[クイック検索/検索...]に入力して[外部データソース]へ遷移。
2. [新規外部データソース]ボタンをクリック。
3. '外部データソース'に表示名を入力し、'名前'はAPI名として英数字で入力。
4. '種別'に[Salesforce Connect: OData 2.0]を選択。
5. 'URL'にHeroku上の外部接続向けデータ先のURLを入力。※本来はHerokuで設定必要(Heroku Connect)だがこのモジュールでは既に設定済みのURLあり
6. その他の設定はデフォルト値のままで[保存]。
外部オブジェクトを作成
1. 作成済みの外部データソースの詳細画面に遷移。
2. [検証して同期]ボタンをクリック。
3. 連携したいテーブルを選択し、[同期]ボタンをクリック。
4. 上記3で外部オブジェクトとして定義が保存されているので必要に応じてカスタムタブ等を設定する。
- 外部オブジェクトAPI名のサフィックスは、「__c」ではなく「__x」
- 参照関係を作成して、外部データを既存のデータにリンク可能
ユーザ認証を設定
本モジュールでは接続先(Heroku)への認証はないが、実際のシステム構築ではログイン情報が必要となるのが通常である。
###ID種別
- 指定ユーザ : Salesforce組織全体で外部システムの1つのログインアカウントを共有
- ユーザ : Salesforce組織で外部システムの複数のログインアカウントを使用。ユーザが外部システムの個人認証設定を指定。
###認証プロトコル
- OAuth 2.0
- パスワード認証
ということで今回はここまで。(実は初Qiita投稿)
次回はMicrosoft等とのシステム連携を実施予定。