Salesforce - レコードの変更を監視するトリガー(リアルタイム)
このトリガーは、指定したオブジェクトフィールドの変更について、Salesforceの変更データキャプチャイベントをリアルタイムで監視します。 このトリガーを使用すると、外部システムをSalesforceと同期させ、変更されたフィールドとイベントタイプに基づいて特定のアクションを実行できます。
レコードの変更を監視するトリガー
入力
| 入力項目 | 説明 |
|---|---|
| オブジェクト | 監視するオブジェクトタイプを選択します。 Salesforceは、標準オブジェクトのサブセットとすべてのカスタムオブジェクトをサポートしています。 オブジェクトの完全な一覧については、Salesforceの関連オブジェクトの変更イベントドキュメントを参照してください。 |
| 変更を監視 | オブジェクトで監視する操作を選択します。 デフォルトはUpdateです。 ジョブをトリガーする操作タイプは、Salesforceが変更イベント本文で返すフィールドに影響します:
|
| 取得するフィールド | この特定のオブジェクトのイベント通知に含める追加フィールドを最大10個選択します。 |
| SOQL WHERE句 | レコードをフィルタリングするSOQLクエリを入力します。 例: StageName = 'Closed Lost' AND IsClosed = false。 詳細については、SOQLガイドを参照してください。 |
| チャネルID | レシピが一時的に停止して再起動するときにイベントを取得するには、カスタムチャネルIDを入力します。 カスタムチャネルを作成するには、Salesforce tooling APIを使用できます。 |
出力
| フィールド名 | 説明 | |
|---|---|---|
| Replay ID | イベント通知の順序を示す番号。 この番号は、一括編集によってトリガーされた通知では一意ではありません。 | |
| 変更イベントヘッダー | コミット番号 | コミットされたトランザクションのシステム変更番号(SCN)で、順番に増加します。 このフィールドは診断目的で提供されます。 フィールド値はSalesforce内で一意であることは保証されませんが、単一のデータベースインスタンス内では一意です。 Salesforce組織が別のデータベースインスタンスに移行した場合、コミット番号は一意または連番でないことがあります。 |
| コミットユーザー | 変更操作を実行したユーザーのID。 | |
| Sequence number | トランザクション内の変更の順序。 シーケンス番号は1から始まります。 リードの変換は、複数の変更を含むことがあるトランザクションの例です。 リードの変換では、一連の変更が発生し、そのすべてが同じトランザクション内で行われます。 詳細については、Salesforce リード変換の変更イベントガイドを参照してください。 | |
| エンティティ名 | 変更イベント用に生成されたオブジェクトAPI名。 | |
| 変更タイプ | 変更の原因となった操作。 例:
| |
| 変更されたフィールド | LastModifiedDateシステムフィールドを含む、変更されたフィールドのリスト。 このフィールドは、レコード作成を含むUPDATE以外の操作では空です。 | |
| 変更元 | クライアントによって設定されている場合、変更を開始したSalesforce APIとAPIクライアントIDを返します。 このフィールドは、APIアプリまたはLightning Experienceから行われた変更の場合にのみ入力されます。 | |
| トランザクションキー | 各Salesforceトランザクションを一意に識別する文字列。 このキーを使用して、同じトランザクション内で行われたすべての変更を識別し、グループ化できます。 | |
| コミットタイムスタンプ | 変更が発生した日時。1970年1月1日00:00:00 GMTからのミリ秒数で表されます。 | |
| レコードID | 単一のレコードIDを含みます。 Salesforceは、同じオブジェクトタイプの複数のレコードが同じトランザクション内で1秒以内に変更された場合、レコード変更通知を1つのマージイベントに結合します。 詳細については、 Salesforceマージイベント ドキュメントを参照してください。 Salesforceは、影響を受けるすべてのレコードに対して1つの変更イベントを送信します。 その後、Workatoはこれらをそれぞれ個別のイベント通知に分割します。 同じトランザクションキーを持つ複数のイベントが表示される場合があります。 これは、ユーザビリティと一貫性を向上させるために行われます。ユーザーは各トリガーイベントが単一のレコードのみに関係することを確信できます。 | |
| 変更イベント本文 注: Fields to Retrieveで選択したフィールドは、各特定の操作について記載されているフィールドとともに常に返されます。 | 作成 | イベントメッセージ本文には、新しいレコードの空でないフィールドとシステムフィールド(CreatedDateフィールドやOwnerIdフィールドなど)が含まれます。 |
| Update | 本文には、更新されたレコードで変更されたフィールドのみが含まれます。 空の値(null)に更新された場合にのみ、空のフィールドが含まれます。 また、LastModifiedDateシステムフィールドも含まれます。 本文には、LastModifiedByIdフィールドが変更された場合(レコードを変更したユーザーが保存したユーザーと異なる場合)にのみ含まれます。 | |
| 削除 | 削除されたレコードについては、本文にフィールドまたはシステムフィールドは含まれません。 | |
| Undelete | 本文には、復元されたレコードについて、元のレコードの空でないすべてのフィールドとシステムフィールドが含まれます。 | |
権限
このトリガーが期待どおりに機能するようにするには、次の権限を有効にする必要があります:
- フローを管理
- フローユーザー
- アプリケーションをカスタマイズ
| 変更イベントを受信する対象 | 必要な権限 |
|---|---|
| 特定の標準オブジェクトまたはカスタムオブジェクト | 対象オブジェクトの「すべて表示」 |
| ユーザー | すべてのユーザーの参照 |
| タスクやイベントなど、「すべて表示」権限がない標準オブジェクト | すべてのデータの参照 |
イベント通知はフィールドレベルセキュリティ設定にリンクされています。 配信されたイベントには、サブスクライブしているユーザーが表示を許可されているフィールドのみが含まれます。 ユーザーがアクセスできないフィールドは、変更イベントメッセージに含まれません。
詳細については、Salesforceデータキャプチャドキュメントを参照してください。
制限
- Salesforceでは、監視できる個別のオブジェクトは最大5個までです。 5個を超えるオブジェクトを監視する予定がある場合は、アドオンライセンスを取得する必要があります。 詳細については、割り当てを参照してください。 同じオブジェクトを監視するレシピは最大100個まで持つことができますが、すべてのレシピ全体で監視できるオブジェクトは最大5個までです。
- Salesforceが公開できるイベントメッセージの最大サイズは1 MBです。 エンティティに数百のカスタムフィールドまたはロングテキストエリアフィールドがある場合、この制限に達する可能性があります。
- 24時間以内のイベント通知の最大数は、Enterprise Editionでは25,000件、Performance EditionおよびUnlimited Editionでは50,000件です。
詳細については、割り当てを参照してください。
Salesforce Change Data Capture通知は、複数のレコードに対して同一の編集が一括で行われた場合にイベントメッセージをグループ化します。 その場合、単一の通知イベントに対して1つのジョブを取得しますか。
単一レコードと複数レコードという2つの別個のケースをユーザーが処理する必要がないように、個別のジョブを作成します。 各ジョブには単一レコードの詳細が含まれます。 ジョブ情報には同じSalesforce replayIdが含まれます。
Last updated: