この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

データ仮想化

コンテキスト

Salesforce を使用して、リードの追跡、パイプラインの管理、商談の作成、リードを顧客に変換する注文詳細の取得を行っています。ただし、Salesforce システムでは注文の保存や処理は行っていません。注文は外部 (リモート) システムによって管理されます。営業担当は、外部システムを習得したり使用したりせずに、Salesforce でリアルタイムの注文情報を表示および更新したいと考えています。

問題

Salesforce でデータを外部システムから Salesforce に移行することなく、Salesforce の外部に保存されているデータを表示、検索、変更するには?

検討項目

このパターンに基づいてソリューションを適用する場合、次のようなさまざまな項目を検討する必要があります。
  • Salesforce で宣言型/ポイント & クリックのアウトバウンドインテグレーションまたは UI マッシュアップを作成するか?
  • 大量のデータがあり、Salesforce 組織にコピーしたくないか?
  • 常に少量のリモートシステムデータにアクセスする必要があるか?
  • 最新データにリアルタイムでアクセスする必要があるか?
  • データをクラウドまたはバックオフィスシステムに保存しているが、そのデータを Salesforce 組織で表示または処理したいか?
  • Salesforce への特定種別のデータ保存に関するデータレジデンシーの懸念があるか?

解決策

次の表は、このインテグレーションに関する問題へのさまざまなソリューションの一覧です。
ソリューション 適合度 コメント
Salesforce Connect 最適 Salesforce Connect を使用して、Salesforce データと共に外部ソースのデータにアクセスします。SAP、Microsoft、Oracle などのレガシーシステムから、Salesforce 内にデータのコピーを作成することなく、リアルタイムでデータを取得できます。

Salesforce Connect では外部システムのデータテーブルを組織の外部オブジェクトに対応付けます。外部オブジェクトはカスタムオブジェクトと似ていますが、Salesforce 組織外にあるデータに対応付けられる点が異なります。Salesforce Connect は外部データへのライブ接続を使用して、外部オブジェクトを常に最新の状態に保ちます。外部オブジェクトにアクセスすると、外部システムからデータがリアルタイムに取得されます。

Salesforce Connect では、次のことができます。

  • 外部システムのデータを照会する。
  • 外部システムのデータを作成、更新、削除する。
  • リストビュー、詳細ページ、レコードフィード、カスタムタブ、ページレイアウトから外部オブジェクトにアクセスする。
  • 異なるソースからのデータを統合するために、外部オブジェクトと標準オブジェクトまたはカスタムオブジェクトとのリレーションを定義する。
  • コラボレーションのために外部オブジェクトページ上で Chatter フィードを有効にする。
  • 外部データのレポート (制限付き) を実行する。
  • Salesforce モバイルアプリケーションでデータを表示する。

Salesforce Connect を使用して外部システムに保存されているデータにアクセスするには、次のいずれかのアダプタを使用します。

  • OData 2.0 アダプタまたは OData 4.0 アダプタ — OData 2.0 または 4.0 プロデューサによって公開されたデータに接続します。
  • 組織間アダプタ — 別の Salesforce 組織に保存されているデータに接続します。組織間アダプタは、標準の Lightning Platform REST API を使用します。OData とは異なり、組織間アダプタは仲介 Web サービスなしで別の組織に直接接続します。
  • Apex を使用して作成されたカスタムアダプタ — OData アダプタや組織間アダプタがニーズに適さない場合は、Apex Connector Framework を使用して独自のアダプタを開発します。
要求と返信 準最適 Salesforce Web サービス API を使用して、外部システムデータにアクセスして更新するアドホックデータ要求を行います。このソリューションには、次の方法があります。

Salesforce SOAP API を使用する。Apex SOAP コールアウトを同期して開始するカスタム Visualforce ページまたはボタン。Salesforce では、WSDL を使用してプロキシ Apex クラスを生成できます。このクラスには、リモートサービスをコールするために必要なロジックがあります。Visualforce ページでユーザがアクションを開始すると、Apex コントローラアクションがコールされ、このプロキシ Apex クラスを実行してリモートコールが行われます。Visualforce ページでは、Salesforce アプリケーションをカスタマイズする必要があります。

Salesforce REST API を使用する。Apex HTTP コールアウト (REST サービス) を同期して開始するカスタム Visualforce ページまたはボタン。Salesforce では、標準の GET、POST、PUT、DELETE メソッドを使用する HTTP サービスを呼び出すことができます。いくつかの HTTP クラスを使用して、RESTful サービスと統合できます。Visualforce ページでユーザがアクションを開始すると、Apex コントローラアクションがコールされ、このプロキシ Apex クラスを実行してリモートコールが行われます。Visualforce ページでは、Salesforce アプリケーションをカスタマイズする必要があります。

このソリューションについての詳細は、「リモートプロセスの呼び出し — 要求と返信」を参照してください。

概要図

次の図は、OData アダプタを使用して外部システムからデータを取得する Salesforce Connect の使用方法を示します。

Salesforce Connect を使用したデータ視覚化

このシナリオの内容は次のとおりです。

  1. ブラウザは AJAX コールを実行し、対応する外部オブジェクトアダプタに対してアクションを実行します。
  2. アダプタはアクションを OData 要求に変換し、インテグレーションレイヤとサービスレイヤを介してリモートシステムに HTTP GET 要求を行います。
  3. リモートシステムは、インテグレーションレイヤとサービスレイヤを介して Salesforce に JSON 応答を返します。
  4. 応答は OData から外部オブジェクトに変換されてブラウザに返��れます。

結果

このパターンに関連するソリューションの適用により、トランザクションの結果をエンドユーザに表示できるユーザインターフェースからの呼び出しが可能になります。

コールメカニズム

コールメカニズムは、このパターンを実装するために選択されるソリューションに応じて異なります。

コールメカニズム 説明
外部オブジェクト Salesforce Connect では Salesforce 外部オブジェクトを外部システムのデータテーブルに対応付けます。組織にデータをコピーする代わりに、Salesforce Connect は必要なときにリアルタイムでデータにアクセスします。データが組織外に保存されていても、Salesforce Connect は Lightning プラットフォームとのシームレスなインテグレーションを提供します。外部オブジェクトは、グローバル検索、参照関係、レコードフィード、Salesforce モバイルアプリケーションなどの Salesforce ツールで使用できます。外部オブジェクトはまた、Apex、SOSL、SOQL クエリ、Salesforce API、およびメタデータ API、変更セット、パッケージを介したリリースでも使用できます。
Lightning コンポーネントまたは Visualforce ページ ユーザインターフェースを伴うエンドツーエンドプロセスの一部としてリモートプロセスをトリガし、その結果を Salesforce レコードで表示または更新する必要がある場合に使用します。たとえば、クレジットカードの支払いを外部の支払ゲートウェイに送信するプロセスがこれに該当します。この場合、支払い結果がすぐに返されてユーザに表示されます。ユーザインターフェースイベントからトリガされるインテグレーションの場合、一般的にカスタム Lightning コンポーネントまたは Visualforce ページを作成する必要があります。

エラー処理

エラー処理を全体的なソリューションの一部として含めることが重要です。エラーが発生した (例外やエラーコードがコール元に返された) 場合、エラーはコール元が処理します。Salesforce Connect Validator は、いくつかの一般的なクエリを実行し、エラーの種類と失敗の原因を確認するための無料ツールです。

利点

Salesforce Connect ソリューションを使用する利点のいくつかを次に示します。

  • このソリューションは Salesforce のデータストレージを使用しません。
  • ユーザは外部システムと Salesforce 間でデータを定期的に同期することを心配する必要がありません。
  • OData、組織間アダプタ、またはカスタム Apex アダプタでの最小限のコード使用により、すばやく実現できる宣言型の設定。
  • ユーザは外部オブジェクトの形式でカスタムオブジェクトとほとんど同じ機能を使用して、外部データにアクセスできます。
  • グローバル検索を使用して、接続された外部システムで統合検索を実行できます。
  • クラウドおよびオンプレミスのソースから外部データにアクセスするレポートを実行できます。以下のレポートに関する考慮事項を参照してください。

Salesforce Connect の考慮事項

Salesforce Connect ソリューションには次の考慮事項があります。

セキュリティに関する考慮事項

このパターンのソリューションは、標準 Salesforce 組織レベルのセキュリティに準拠する必要があります。HTTPS プロトコルを使用して、リモートシステムに接続することをお勧めします。詳細は、「セキュリティに関する考慮事項」を参照してください。

OData コネクタを使用している場合は、OData 外部データソースのクロスサイトリクエストフォージェリ (CSRF) における特殊な動作、制限、および推奨事項について理解しておく必要があります。詳細は、「Salesforce Connect — OData 2.0 および 4.0 アダプタに関する CSRF の考慮事項」を参照してください。

補足

適時性

このパターンでは適時性は非常に重要です。次の点に留意してください。

  • 要求はユーザインターフェースから呼び出されるため、ユーザがプロセスを待機しないようにする必要があります。
  • 外部システムの可用性および外部システムへの接続によっては、外部データの取得に時間がかかることがあります。Salesforce には、外部システムからの応答を待つための設定可能な最大 120 秒のタイムアウト値があります。
  • リモートプロセスの実行は、Salesforce のタイムアウト制限内やユーザの想定時間内に終わるように適時に完了する必要があります。

データ量

このパターンは、主に少量のリアルタイムアクティビティで使用されます。これは、Apex コールソリューションの要求または応答のタイムアウト値や最大サイズが比較的小さいためです。データペイロードがメッセージに含まれるバッチアクティビティではこのパターンを使用しないでください。

エンドポイント機能と標準のサポート

エンドポイントの機能と標準のサポートは、選択するソリューションによって異なります。

ソリューション エンドポイントに関する考慮事項
Salesforce Connect

OData API — Open Data Protocol を使用して Salesforce 外に保存されているデータにアクセスします。外部データは、OData プロデューサ経由で公開されている必要があります。

その他の API — 利用可能な他のアダプタがニーズに適さない場合は、Apex Connector Framework を使用して独自のカスタムアダプタを開発できます。カスタムアダプタは、どのソースからでもデータを取得できます。たとえば、コールアウトを介してインターネットから取得できるデータや、プログラムで操作や生成さえできるデータもあります。

Salesforce への接続 — Lightning Platform REST API を使用して他の Salesforce 組織に保存されているデータにアクセスします。

ミドルウェアを介した接続

ミドルウェアを介した接続 — Salesforce Connect パートナーエコシステムは、Salesforce と緊密に連携してミドルウェアゲートウェイのサービスから OData エンドポイントを公開します。そのため、追加コードを記述することなく Salesforce をエンドポイントに接続できます。

要求と返信 Apex SOAP コールアウト

エンドポイントで HTTP を介して Web サービスコールを受信できる必要があります。Salesforce は、公開インターネットを介してエンドポイントにアクセスできる必要があります。

Apex HTTP コールアウト

エンドポイントで HTTP コールを受信できる必要があります。Salesforce は、公開インターネットを介してエンドポイントにアクセスできる必要があります。

Apex HTTP コールアウトを使用して、標準の GET、POST、PUT、DELETE メソッドを使用する RESTful サービスをコールできます。

状態管理

システムを統合する場合、継続的に状態を追跡するためにキーが重要になります。たとえば、レコードがリモートシステムで作成された場合、通常は継続的な更新をサポートするためにレコードには何らかの識別キーが必要です。2 つのオプションがあります。

  • Salesforce が、リモートレコードの主キーまたは一意のサロゲートキーを保存する。
  • リモートシステムが、Salesforce の一意のレコード ID または他の一意のサロゲートキーを保存する。この同期パターンでインテグレーションキーを処理する場合に固有の考慮事項があります。
マスタシステム 説明
Salesforce リモートシステムは Salesforce レコード ID またはその他の一意のサロゲートキーをレコードから保存します。
リモートシステム リモートプロセスへのコールでアプリケーションから一意のキーが返され、Salesforce はそのキー値を一意のレコード項目に保存します。

複雑なインテグレーション

場合によっては、このパターンで規定されるソリューションで複雑なインテグレーションシナリオを実装する必要が生じることがあります。これらのシナリオは、多くの場合ミドルウェアを使用して解決されます。次のようなシナリオがあります。

  • 複数のシステムへのコールにおけるコールとその結果の集約
  • インバウンドメッセージとアウトバウンドメッセージの両方の加工
  • 複数のシステムへのコールにおけるトランザクションの整合性の確保
  • Salesforce と外部システム間のその他のプロセスオーケストレーション活動

制限の管理

各アダプタには異なる制限が適用されます。詳細は、「Salesforce Connect — すべてのアダプタの一般的な制限」を参照してください。

ミドルウェア機能

次の表は、このパターンに使用されるミドルウェアシステムの望ましいプロパティの一覧です。

プロパティ 必須 望ましい 不要
イベント処理 X
プロトコル変換 X
変換/加工 X
キューイングとバッファリング X
同期伝送プロトコル X
非同期伝送プロトコル X
仲介ルーティング X
プロセスコレオグラフィとサービスオーケストレーション X
トランザクション性 (暗号化、署名、信頼できる配信、トランザクション管理) X
ルーティング X
抽出、加工、読み込み (ETL) X
long polling X

外部オブジェクトリレーション

外部オブジェクトでは、18 文字の Salesforce レコード ID を使用して関連レコードを関連付ける、標準参照関係がサポートされます。ただし、Salesforce 組織の外部に保存されたデータは、多くの場合レコード ID が含まれていません。そのため、外部オブジェクトでは、外部参照と間接参照という、2 つの特殊なタイプの参照関係を使用できます。

この表には、外部オブジェクトで使用できるリレーション種別がまとめられています。

リレーション 許可された子オブジェクト 許可された親オブジェクト レコードを照合する親項目
参照関係 標準、カスタム、外部 標準、カスタム 18 文字の Salesforce レコード ID
外部参照 標準、カスタム、外部 外部 外部 ID 標準項目
間接参照 外部 標準、カスタム External ID および Unique 属性を使用して、カスタム項目を選択します

Salesforce Connect — OData 2.0 および 4.0 アダプタに関する高データボリュームの考慮事項

組織で外部オブジェクトにアクセスするときにレート制限に達する場合は、関連付けられた外部データソースで [高データボリューム] オプションを選択することを検討してください。このオプションを選択すると、ほとんどのレート制限が迂回されますが、一部の特殊動作と制限は適用されます。詳細は、「Salesforce Connect — OData 2.0 および 4.0 アダプタに関する高データボリュームの考慮事項」を参照してください。

Salesforce Connect — OData 2.0 および 4.0 アダプタのクライアント駆動ページングとサーバ駆動ページング

外部データの Salesforce Connect クエリで、大量の結果セットがバッチやページに分割されて示されることはよくあります。ページングの動作を外部システム (サーバ駆動) で制御するか、Salesforce Connect の OData 2.0 または 4.0 アダプタ (クライアント駆動) で制御するかを決定します。外部データソースの [サーバ駆動のページ設定] 項目は、クライアント駆動とサーバ駆動のどちらのページングを使用するかを指定します。外部データソースのサーバ駆動ページングを有効にすると、要求されたページサイズ (デフォルトのqueryMore() バッチサイズの 500 行を含む) が Salesforce で無視されます。バッチは、外部システムによって返されるページで決まりますが、各ページは 2,000 行を超えることはできません。ただし、その場合でも Salesforce Connect の OData アダプタの制限は適用されます。

ある製造会社が、Salesforce を使用して、顧客のケースを管理しているとします。カスタマーサービスエージェントは、バックオフィスの ERP システムからリアルタイムの注文情報にアクセスし、ERP で学習したりレポートを手動で実行したりすることなく顧客の全体像を把握したいと考えています。

このパターンで規定されるソリューションを実装する場合、次の操作を実行する必要があります。
  • OData エンドポイントで外部データソースを設定する。リモートアプリケーションには OData のネイティブサポートが含まれる可能性があります。その他のアプリケーションの場合、Dell Boomi、Informatica、Jitterbit、MuleSoft、Progress Software などの主要なインテグレーションベンダーが Salesforce Connect で Salesforce と提携してアダプタを作成しています。
  • 直接、またはミドルウェアソリューションを介して、Salesforce Connect で OData エンドポイントを参照する。
  • 外部データベーステーブルを Salesforce の外部オブジェクトと同期する。ユーザがこれらの外部オブジェクトのデータを使用してページにアクセスすると、Salesforce Connect はバックエンドアプリケーションに対するリアルタイムのコールアウトを実行します。