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

リモートコールイン

コンテキスト

Salesforce を使用して、リードの追跡、パイプラインの管理、商談の作成、リードを顧客に変換する注文詳細の取得を行っています。ただし、Salesforce システムでは注文の保存や処理は行っていません。注文は外部 (リモート) システムによって管理されます。そのリモートシステムは、注文が処理フェーズで渡されると、Salesforce の注文状況を更新する必要があります。

問題

リモートシステムはどのように Salesforce に接続して認証され、外部イベントについて Salesforce に通知し、レコードを作成し、既存のレコードを更新するのか?

検討項目

このパターンに基づいてソリューションを適用する場合、次のようなさまざまな項目を検討する必要があります。
  • Salesforce へのリモートコールの目的は、イベント駆動型アーキテクチャを使用して外部で発生したイベントを Salesforce に通知することか? または、特定のレコードに対して CRUD 操作を実行することが目的か? イベント駆動型アーキテクチャを使用する場合、イベントプロデューサ (リモートプロセス) は Salesforce イベントコンシューマから分離されます。
  • Salesforce へのコールでは、リモートプロセスが応答を待機してから処理を続行する必要があるか? リモートプロセスは、非同期コールのシミュレーションに必要なければ応答を破棄できますが、Salesforce へのリモートコールは常に同期された要求-返信です。
  • 各トランザクションは、1 つの Salesforce オブジェクトまたは複数の関連オブジェクトに対して機能するか?
  • メッセージ形式はどれか (たとえば、SOAP、REST、SOAP over HTTP、REST over HTTP など)
  • メッセージサイズは比較的小さいか、大きいか?
  • リモートシステムが SOAP 対応の場合、リモートシステムは、Salesforce が契約を指示するコントラクトファースト手法で参加できるか? これは、事前定義された WSDL が提供される、SOAP API を使用する場合は必須です。
  • トランザクション処理は必須か?
  • Salesforce のカスタマイズ耐性はどの程度か?

ソリューション

次の表は、このインテグレーションに関する問題へのさまざまなソリューションの一覧です。
ソリューション 適合度 コメント
SOAP API 最適
  • アクセス性 — Salesforce が提供する SOAP API を使用してリモートシステムは以下の操作を実行できます。
    • イベントを公開して Salesforce 組織に通知
    • 組織内のデータのクエリ
    • データの追加、更新、削除
    • 組織のメタデータの取得
    • 管理タスク実行のためのユーティリティの実行
  • 同期 API — API コールが行われた後、リモートクライアントアプリケーションはサービスから応答を受信するまで待機します。Salesforce への非同期コールはサポートされていません。
  • 生成された WSDL — Salesforce では、リモートシステムに 2 つの WSDL を使用できます。
    • Enterprise WSDL — Salesforce 組織に固有の強く型付けされた WSDL を使用できます。
    • Partner WSDL — Salesforce 組織に固有ではない、緩やかに型付けされた WSDL を使用できます。
  • セキュリティ — SOAP API を実行するクライアントは、有効なログイン情報を持ち、API コールを実行するためのセッションを取得する必要があります。API は、ログインユーザのプロファイルに基づいて Salesforce に設定されたオブジェクトレベルおよび項目レベルのセキュリティを反映します。
  • トランザクション/コミット動作 — デフォルトでは、各 API コールは、一部のレコードがエラーとマークされた場合に部分的な成功を許容します。これを「オールオアナッシング」動作に変更して、エラーが発生したらすべての結果をロールバックすることができます。複数の API コールにまたがってトランザクションを実行することはできません。この制限を打開するために、1 つの API で複数のオブジェクトに影響を与えることができます。
  • 大量データ — 大量データ (5,000 件を超えるレコード) 操作の場合、REST ベースの Bulk API を使用します。
  • イベント駆動型アーキテクチャ — プラットフォームイベントは、Salesforce オブジェクトの定義と同じ方法で定義されます。SOAP API を介したイベントの公開は、Salesforce レコードの作成と同じです。作成と挿入操作のみがサポートされています。
REST API 最適
  • アクセス性 — Salesforce が提供する REST API を使用してリモートシステムは以下の操作を実行できます。
    • イベントを公開して Salesforce 組織に通知
    • 組織内のデータのクエリ
    • データの追加、更新、削除
    • 組織のメタデータの取得
    • 管理タスク実行のためのユーティリティの実行
  • 同期 API — API コールが行われた後、リモートクライアントアプリケーションはサービスから応答を受信するまで待機します。Salesforce への非同期コールはサポートされていません。
  • REST API と SOAP API の比較 — REST はリソース (エンティティ/オブジェクト) を URI として公開し、HTTP 動詞を使用してこれらのリソースに対する CRUD 操作を定義します。SOAP とは異なり、REST API では、事前定義した契約は不要で、応答には XML と JSON を利用し、緩やかな型付けを使用します。REST API は軽量であり、Salesforce との相互作用のための単純な方法を提供します。インテグレーションおよび開発が容易という利点があり、モバイルアプリケーションおよび Web アプリケーションで使用するためには最適な選択です。
  • セキュリティ — REST API を実行するクライアントは、有効なログイン情報を持ち、API コールを実行するためのセッションを取得する必要があります。API は、ログインユーザのプロファイルに基づいて Salesforce に設定されたオブジェクトレベルおよび項目レベルのセキュリティを反映します。
  • トランザクション/コミット動作 — デフォルトでは、各レコードは、個別のトランザクションとして扱われ、個別にコミットされます。1 つのレコード変更が失敗しても、他のレコード変更はロールバックされません。この動作を「オールオアナッシング」動作に変更できます。1 回の API コールで一連の更新を実行するには、REST API 複合リソースを使用します。
  • REST 複合リソース — 1 回の API コールで複数の操作を実行するには、これらの REST API リソースを使用します。1 回のコールの出力を、次のコールの入力として使用することもできます。要求のすべてのレスポンスボディと HTTP 状況は、1 つのレスポンスボディで返されます。要求全体が API の制限への単一のコールとしてカウントされます。
  • 大量データ — 大量データ (500,000 件を超えるレコード) 操作の場合、REST ベースの Bulk API を使用します。
  • イベント駆動型アーキテクチャ — プラットフォームイベントは、Salesforce オブジェクトの定義と同じ方法で定義されます。REST API を介したイベントの公開は、Salesforce レコードの作成と同じです。作成と挿入操作のみがサポートされています。
Apex Web サービス 準最適 Apex クラスメソッドは、外部のアプリケーションに Web サービメソッドとして公開できます。このメソッドは SOAP API に代わる選択肢であり、通常は、次の追加要件を満たす必要がある場合にのみ使用されます。
  • 完全なトランザクションサポートが必要である (たとえば、取引先、取引先責任者、および商談をすべて 1 つのトランザクションで作成する場合��ど)。
  • コミットする前に、カスタムロジックを Salesforce 側で適用する必要がある。

Apex Web サービスを使用する利点と、Salesforce でメンテナンスが必要な追加コードを比較して評価する必要があります。

コンシューマでのトランザクション事前挿入ロジックはイベント駆動型アーキテクチャには適用されないため、プラットフォームイベントには適用されません。イベントが発生したことを Salesforce 組織に通知するには、SOAP API、REST API、または Bulk API を使用します。

Apex REST サービス 準最適 Apex クラスは、それに対して定義された HTTP 動詞 (POST や GET など) を使用して特定の URI に対応付けられた REST リソースとして公開できます。

REST API 複合リソースを使用して、1 回のトランザクションで複数の更新を実行できます。

SOAP とは異なり、クライアントがサービス定義/契約 (WSDL) を使用してクライアントスタブを生成する必要はありません。リモートシステムには、HTTP 要求を作成して、返された結果 (XML または JSON) を処理する機能のみが必要です。

コンシューマでのトランザクション事前挿入ロジックはイベント駆動型アーキテクチャには適用されないため、プラットフォームイベントには適用されません。イベントが発生したことを Salesforce 組織に通知するには、SOAP API、REST API、または Bulk API を使用します。

Bulk API バッチに最適 Bulk API は、REST 規則に基づいており、大規模データセットの読み込みまたは削除用に最適化されています。アクセス性とセキュリティ動作は、REST API と同じです。

Bulk API では、クライアントアプリケーションは、複数のバッチを送信し、そのバッチが Salesforce によりバックグラウンドで処理されることで、大量のレコードをクエリ、挿入、更新、更新/挿入、削除できます。対照的に、SOAP API は、一度に少数のレコードを更新するリアルタイムのクライアントアプリケーション用に最適化されています。

SOAP API を使用しても多数のレコードを処理することはできますが、数百から、数千、数百万のレコードがデータセットに含まれている場合には実用性に欠けます。これは、比較的オーバーヘッドが高く、パフォーマンスが低いという特性のためです。

  • イベント駆動型アーキテクチャ — プラットフォームイベントは、Salesforce オブジェクトの定義と同じ方法で定義されます。Bulk API を介したイベントの公開は、Salesforce レコードの作成と同じです。作成と挿入操作のみがサポートされています。バッチ内のイベントは、一括処理ジョブが処理されるときに非同期で Salesforce イベントバスに公開されます。

概要図

次の図は、外部イベントからの通知用の REST API または Salesforce オブジェクトを照会する SOAP API を使用してこのパターンを実装した場合のイベントの順序を示します。イベントの順序は、REST API を使用する場合と同じです。

SOAP API を介して Salesforce を照会するリモートシステム リモートコールイン - SOAP API を使用したリモートシステムコールイン
REST API を介して Salesforce に通知するリモートシステム リモートコールイン - REST API を使用したリモートシステムコールイン

結果

イベント駆動型アーキテクチャでは、リモートシステムは SOAP API、REST API、または Bulk API を使用して Salesforce へのコールを行い、Salesforce イベントバスにイベントを公開します。イベントを公開すると、すべての登録者に通知されます。イベント登録者は、プロセスビルダーのプロセス、フロー、または Lightning コンポーネント、Apex トリガなどの Salesforce Platform を使用できます。イベント登録者は、CometD 登録者のように Salesforce Platform の外部にいることもできます。

Salesforce オブジェクトを直接操作する場合、このパターンに関連するソリューションでは次の操作が可能です。
  • リモートシステムが Salesforce API をコールして、データベースを照会し、単独のオブジェクト操作 (作成、更新、削除など) を実行する。
  • リモートシステムが Salesforce REST API 複合リソースをコールして、一連のオブジェクト操作を実行する。
  • リモートシステムが、複数オブジェクトのトランザクション操作とカスタムの処理前/後ロジックをサポートできるように作成されたカスタム Salesforce API (サービス) をコールする。

コールメカニズム

コールメカニズムは、このパターンを実装するために選択されるソリューションに応じて異なります。
コールメカニズム 説明
SOAP API リモートシステムは Salesforce Enterprise または Partner WSDL を使用してクライアントスタブを生成します。このスタブは標準 SOAP API の呼び出しに使用されます。
REST API リモートシステムは、Apex REST サービスにアクセスする前に認証を行う必要があります。リモートシステムでは、OAuth 2.0 またはユーザ名/パスワード認証を使用できます。いずれの場合も、クライアントは認証 HTTP ヘッダーと適切な値 (SOAP API へのログインコール経由で OAuth アクセストークンまたはセッション ID を取得可能) を設定する必要があります。

次に、リモートシステムは、適切な動詞で REST 呼び出し (HTTP 要求) を生成し、返された結果 (JSON および XML データ形式がサポート対象) を処理します。

Apex Web サービス リモートシステムはカスタム Apex Web サービス WSDL を使用してクライアントスタブを生成します。このスタブはカスタム Apex Web サービスの呼び出しに使用されます。
Apex REST サービス REST API のように、リソース URI と該当する動詞は、@RestResource@HttpGet、および @HttpPost アノテーションを使用して定義されます。
Bulk API Bulk API は、REST ベースの API であるため、コールメカニズムは REST API と同じです。
フローを呼び出す REST API REST API を使用して、呼び出し可能なカスタムアクションエンドポイントをコールして自動起動フローを呼び出します。

エラー処理と回復

エラー処理および回復戦略は、全体的なソリューションの一部として検討する必要があります。

  • エラー処理 — すべてのリモートコールインメソッド、標準またはカスタムの API では、リモートシステムがタイムアウトや再試行の管理など後続で発生するエラーを処理する必要があります。ミドルウェアを使用して、エラー処理と回復のロジックを提供できます。
  • エラー回復 — サービス品質要件で定められている場合は、カスタムの再試行メカニズムを作成する必要があります。この場合、設計特性を冪等にすることが重要です。プラットフォームイベントでは、登録者が再実行 ID を使用して、メッセージが公開されてから一定期間内にメッセージを取得できます。

冪等設計に関する考慮事項

冪等機能によって、呼び出しを繰り返しても安全で、悪影響がないことが保証されます。冪等性が実装されていない場合、同じメッセージを繰り返し呼び出すと異なる結果になり、レコードの重複作成、トランザクションの重複処理など、データ整合性に問題が生じる可能性があります。

リモートシステムは複数回の (重複した) コールを管理して、エラーやタイムアウトの場合は、重複挿入や冗長な更新などを回避する必要があります (特に下流のトリガやワークフロールールが起動する場合)。Salesforce 内でこうした状況を管理することは可能ですが (特にカスタム SOAP および REST サービスの場合)、リモートシステム (またはミドルウェア) でエラー処理と冪等設計を管理することをお勧めします。

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

適用されるセキュリティに関する考慮事項は、選択するパターンソリューションに応じて異なります。すべての場合で、プラットフォームはログインユーザのアクセス権 (プロファイル設定、共有ルール、権限セットなど) を使用します。さらに、プロファイル IP 制限を使用して、API へのアクセスを特定の IP アドレス範囲に制限できます。
ソリューション セキュリティに関する考慮事項
SOAP API Salesforce は、Secure Sockets Layer v3 (SSL) および Transport Layer Security (TLS) プロトコルをサポートします。暗号鍵の長さは、128 ビット以上でなければなりません。

リモートシステムがセッション ID を取得するには、有効なログイン情報を使用してログインする必要があります。リモートシステムにすでに有効なセッション ID がある場合は、明示的なログインなしで API をコールできます。これは、このドキュメントですでに説明したコールバックパターンで使用されます。このパターンでは、先行する Salesforce アウトバウンドメッセージに含まれているセッション ID とレコード ID が後続の作業で使用されます。

クライアントは、コールごとに新しいセッション ID を取得するのではなく、SOAP API キャッシュをコールし、セッション ID を再利用してパフォーマンスを最大化することをお勧めします。

REST API リモートシステムで認証用に OAuth の信頼を確立することをお勧めします。それによって、HTTP 動詞を使用して特定のリソースに対し REST コールを実行できます。また、他の手段で (たとえば、SOAP API をコールして取得、送信メッセージ経由で提供など) 取得された有効なセッション ID で REST コールを行うことも可能です。

クライアントは、コールごとに新しいセッション ID を取得するのではなく、REST API キャッシュをコールし、セッション ID を再利用してパフォーマンスを最大化することをお勧めします。

Apex Web サービス リモートシステムで認証用に OAuth の信頼を確立することをお勧めします。
Apex REST サービス リモートシステムで認証用に OAuth の信頼を確立することをお勧めします。
Bulk API リモートシステムで認証用に OAuth の信頼を確立することをお勧めします。
「セキュリティに関する考慮事項」を参照してください。

補足

適時性

SOAP API および Apex Web サービス API は同期します。次のタイムアウトが適用されます。
  • セッションタイムアウト — Salesforce 組織のセッションタイムアウト設定に基づいて、アクティビティがない場合、セッションはタイムアウトします。
  • クエリタイムアウト — 各 SOQL クエリには、120 秒という個別のタイムアウト制限があります。

データ量

データ量に関する考慮事項は、選択するソリューションと通信の種類に応じて異なります。
ソリューション 通信の種類 制限
SOAP API または REST API 同期
  • SOAP ログイン — SOAP ログイン要求のサイズは、10 KB 未満に制限されています。login() 関数に対して 1 時間につき 1 ユーザあたり最大 3,600 コールを行うことができます。この制限を超えると、API はエラーを返します。
  • 作成、更新、削除 — リモートシステムが一度に作成、更新、または削除できるレコード数は最大 200 件です。複数回のコールを行えば合計 200 件を超えるレコードを処理できますが、要求ごとのサイズは 200 レコードに制限されています。
  • BLOB データ — sObject Basic Information、sObject Rows、または sObject Collections REST リソースを使用して、Salesforce 標準オブジェクトの BLOB データを挿入または更新できます。sObject Basic Information または sObject Rows リソースの場合、アップロードの最大ファイルサイズは、ContentVersion オブジェクトの場合は 2 GB、使用可能な他の標準オブジェクトの場合は 500 MB です。sObject Collections リソースを使用する場合、1 回の要求の全ファイルの最大合計サイズは 500 MB です。
  • クエリ結果サイズ — デフォルトでは、query() または queryMore() コールで返される、クエリ結果オブジェクト内に返される行数 (バッチサイズ) は 500 に設定されています。返される最大行数は 2,000 です。バッチサイズを明示的に設定できますが、要求したバッチサイズが実際のバッチサイズになるとは限りません。パフォーマンスを最大化するために変更が行われます。返される行数がバッチサイズを上回る場合、queryMore() API コールを使用して複数のバッチを反復処理します。追加のルールが適用される場合もあるため、詳細は、『Salesforce Developer の制限および割り当てクイックリファレンス』を参照してください。
  • イベントメッセージ — イベントメッセージの最大サイズは 1 MB です。Salesforce API を使用したイベントの公開は、標準の API 制限にカウントされます。
Bulk API 同期

Bulk API は、大規模なデータセットの非同期のインポートまたはエクスポート用に最適化されています。

Bulk API は、バッチ要求と関連データを送信するときは同期します。データの実際の処理は、非同期に行われます。API とバッチ処理制限の詳細は、「Bulk API の制限」を参照してください。

  • 24 時間あたりに送信可能なバッチ数は最大で 10,000 件に制限されています。

  • 1 つのバッチには、最大で 10,000 件のレコードを含めることができます。

  • イベントメッセージ — イベントメッセージの最大サイズは 1 MB です。Salesforce API を使用したイベントの公開は、標準の API 制限にカウントされます。

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

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

ソリューション エンドポイントに関する考慮事項
SOAP API リモートシステムは、Salesforce で事前に定義されたメッセージ形式に基づいて Salesforce SOAP API をコールするクライアントを実装できなければなりません。

リモートシステム (クライアント) は、契約が Salesforce によって提供されるコントラクトファースト実装に参加する必要があります (Enterprise または Partner WSDL など)。

REST API リモートシステムは、Salesforce で定義された REST サービスを呼び出し、XML または JSON の結果を処理する REST クライアントを実装できなければなりません。
Apex Web サービス リモートシステムは、Salesforce で定義された、事前定義形式の SOAP メッセージを呼び出すクライアントを実装できなければなりません。

リモートシステム は、Apex Web サービスが実装された後に契約が Salesforce によって提供される、コードファースト実装に参加する必要があります。各 Apex Web サービスには独自の WSDL があります。

Apex REST サービス エンドポイントに関する考慮事項は、REST API と同じです。

状態管理

システムを統合するとき、継続的な状態追跡にキーは重要です。たとえば、レコードがリモートシステムで作成され、そのレコードへの継続的な更新をサポートする場合などです。2 つのオプションがあります。
  • Salesforce が、リモートシステムのリモートレコードの主キーまたは一意のサロゲートキーを保存する。
  • リモートーシステムが、Salesforce の一意のレコード ID または他の一意のサロゲートキーを保存する。

この同期パターンでインテグレーションキーを処理する場合に固有の考慮事項があります。

マスタシステム 説明
Salesforce このシナリオでは、リモートシステムは Salesforce RecordId またはその他の一意のサロゲートキーをレコードから保存します。
リモートシステム このシナリオでは、Salesforce が、リモートシステムの一意の識別子への参照を保存します。プロセスは同期するため、キーは、外部 ID 項目を使用した同じトランザクションの一部として指定できます。

複雑なインテグレーションシナリオ

このパターンでは、加工やプロセスオーケストレーションなどの複雑なインテグレーションシナリオを処理する場合、ソリューションごとに異なる考慮事項があります。
ソリューション 考慮事項
SOAP API または REST API SOAP API と REST API は、オブジェクトに対する単純なトランザクションを提供します。集約、オーケストレーション、加工など、複雑なインテグレーションシナリオは Salesforce では実行できません。これらのシナリオは、リモートシステムまたはミドルウェアで処理する必要がありますが、ミドルウェアをお勧めします。
Apex Web サービスまたは Apex REST サービス カスタム Web サービスでは、クロスオブジェクト機能、カスタムロジック、より複雑なトランザクションサポートを提供することができます。このソリューションは慎重に使用する必要があり、加工、オーケストレーション、エラー処理ロジックなどにミドルウェアが適しているか常に考慮する必要があります。

ガバナ制限

Salesforce Platform は、マルチテナントという性質上、API を使用するときに制限があります。
ソリューション 制限
SOAP API、REST API、およびカスタム Apex API
  • API 要求制限 – Salesforce は、24 時間あたりの API コール数に制限を適用します。制限は、Salesforce のエディションの種類とライセンス数に基づきます。たとえば、Unlimited Edition では、24 時間あたり、Salesforce または Lightning Platform ライセンスにつき、5,000 API 要求を使用できます。詳細は、『Salesforce Developer の制限および割り当てクイックリファレンス』を参照してください。
  • API クエリカーソル制限 — ユーザは一度に最大 10 個のクエリカーソルを開くことができます。10 個を超えると、10 個のカーソルのうち最も古いものが解放されます。リモートアプリケーションが解放されたクエリカーソルを開こうとすると、エラーになります。たとえば、インテグレーションユーザログイン情報を共有する場合、最大クエリカーソル数を考慮する必要があります。可能な場合は、ミドルウェアで別のクエリを (順次に) 実行する前に完全なクエリを完了するか、各アプリケーションで指定されたインテグレーションユーザを使用する必要があります。または、ミドルウェアは、「ラウンドロビン」式に複数のユーザの要求を実行することが必要になる場合があります。
  • コール制限 — 作成、更新、およびクエリの制限については、補足の「データ量」を参照してください。
Bulk API 詳細は、補足の「データ量」を参照してください。
プラットフォームイベント
  • イベント通知の制限 — 標準プラットフォームイベントの場合、1 時間あたり最大 100,000 イベントを公開できます。大規模の使用量ベースのプラットフォームイベントの場合、1 時間あたり最大 250,000 イベントを公開できます。大規模のイベント使用状況を監視するには、REST API の limits リソースを使用します。
  • イベントメッセージサイズの制限 — イベントメッセージの最大サイズは 1 MB です。Salesforce API を使用したイベントの公開は、標準の API 制限にカウントされます。

信頼できるメッセージング

信頼できるメッセージングは、個々のコンポーネント自体が信頼できない可能性がある場合、リモートシステムへのメッセージ配信保証の問題を解決しようとします。Salesforce SOAP API および REST API は同期し、信頼できるメッセージングプロトコル (WS-ReliableMessaging など) の明示的なサポートは提供しません。

リモートシステムに信頼できるメッセージングシステムを実装して、エラーとタイムアウトのシナリオを適切に管理することをお勧めします。外部システムからのプラットフォームイベントの公開は Salesforce API に依存するため、SOAP API と REST API に同じ考慮事項が適用されます。

ミドルウェア機能

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

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

ある印刷関連の消耗品とサービスを提供する企業が、Salesforce をフロントエンドとして使用してプリンタ用品と注文を管理しているとします。プリンタを表す Salesforce 納入商品レコードは、クライアントサイトのプリンタを定期的に監視するオンプレミス型のプリンタ管理システム (PMS) からの印刷使用統計情報 (インク状況、用紙レベル) で更新されます。設定されたしきい値 (残りが 30% 未満のインク状況や用紙レベルなど) に達すると、イベントに関連する複数のアプリケーション/プロセス (変数) に通知され、メールまたは Chatter アラートが送信され、注文レコードが作成されます。PMS は Salesforce ID を保存します (Salesforce が納入商品レコードのマスタ)。

次の制約が適用されます。
  • PMS はコントラクトファーストインテグレーションに参加できます。この場合、Salesforce が契約を提供し、PMS が Salesforce サービス (Enterprise または Partner WSDL 経由で定義) のクライアント (コンシューマ) として機能します。

  • Salesforce でのカスタム開発は行いません。

この例は、イベントを発行する Salesforce SOAP API または REST API、および Salesforce の宣言型自動化 (プロセスビルダー) を使用して実装するのが最適です。プラットフォームイベントを使用する主な理由は、可変で無制限の登録者数ですが、注文などのレコードの有限リストを簡単に更新する場合は、SOAP または REST API を使用してレコードを更新します。

Salesforce で、次の処理を実行します。
  • Salesforce でプラットフォームイベントを定義し、PMS からの通知データを含めます。
  • プリンタイベント通知によってトリガされるプロセスビルダープロセスを作成します。このプロセスはプリンタ納入商品を更新し、(自動起動フローを使用して) 注文を作成します。
  • Enterprise または Partner WSDL をダウンロードして、リモートシステムに提供します。
リモートシステムでは、次の処理を実行します。
  • Enterprise または Partner WSDL からクライアントスタブを作成します。

  • インテグレーションユーザのログイン情報を使用して (OAuth Web サーバまたはベアラートークンフローを介して) Salesforce への認証を行います。
  • プリンタ状況イベントの発生時に、PMS は API をコールし、(プリンタの使用統計情報を使用して) プリンタ状況プラットフォームイベントを作成します。Salesforce イベントバスは、プロセスビルダー登録者とその他すべての登録者に通知します。

プラットフォームイベントを使用する場合、イベントバスを使用して大規模プラットフォームイベントに対して 72 時間イベントを再実行できます。ミドルウェアソリューションを使用してこれらのイベントを公開すると、公開側でエラー処理を組み込むのに役立ちます。ただし、より高い信頼性が必要な場合は、登録側でエラー処理を実装できます。

この例は、次の内容を説明しています。
  • Salesforce 同期 API クライアント (コンシューマ) の実装。

  • プラットフォームイベントを公開するための Salesforce へのコールバック (前述の要求/返信プラットフォームイベントパターンと連携)。