2021/05/24

SalesforceのPush Topicを使用してデータ変更の通知を受信する

 
  

Salesforceのプッシュ技術 Push Topic

Salesforceのプッシュ技術で使用されているPushTopicは、ストリーミングAPIの登録メカニズムのひとつです。特定の条件にしたがってPushTopicを作成し、クライアントが受信する情報を指定します。 登録チャネルに応じて、Salesforceのサーバから情報がプッシュ送信されます。クライアントが、Salesforceへの接続を維持しているときに受信可能です。 ストリーミングAPIの通信はBayeuxプロトコルとCometDを使用し、クライアントからサーバへの接続はlong pollingを使用します。

SalesforceのPush Topicの概要

PushTopicでは、クライアントが登録するチャネルを定義し、Salesforceのレコードの変更に関する通知をトリガします。 PushTopicレコードで指定した条件と定義したSOQLクエリに基づいて、Push Topic通知が送信され、通知にはクエリで指定した項目が含まれます。

SalesforceのPush Topicイベントでできること

SalesforceのPushTopicイベントにより、定義したSOQLクエリと一致するデータについて、作成、更新、削除、復元操作などの変更が行われたとき、通知を受信できます。 Salesforceアプリケーション内のページのほか、Salesforce外のアプリケーションサーバとクライアントで、Push Topicイベントを受信できます。 <SalesforceのPush Topicイベントでできること> ・Salesforceのレコードの変更に関する通知を受信する。 ・SOQLクエリの項目と一致するレコードの変更をキャッチする。 ・共有ルールのアクセスを許可されたレコードに関する通知のみ受信する。 ・登録した検索条件と一致するイベントについて、イベントのストリームを制限する。

Push Topic通知を生成・送信する流れ

Push Topicレコードが作成されたとき、Salesforceのシステムは、以下の流れでPush Topic通知を生成します。 Push Topic項目のPush Topicクエリ、イベント、通知によって、チャネル内で通知を生成するタイミングを定義します。サーバは毎秒ポーリングを行って、登録されているチャネルの新規通知を確認しますが、ポーリングはサーバ全体の負荷状況により変動する可能性があります。 ①SOQLクエリに基づいて、チャネルを定義するPush Topicを作成する。 ②通知を受信したいクライアントをチャネルに登録する。 ③レコードの変更(作成、更新、削除、復元)が評価される。 →Push Topicクエリの条件に一致した場合のみ④へ ④サーバが通知を生成、チャネルに登録しているクライアントに送信する。 ⑤クライアントが通知を受信する。

SalesforceにおけるPush Topicの作成方法

Push Topicクエリでは、通知を生成するレコードイベントの種類(作成、更新、削除、復元)を定義します。Push TopicクエリはPush Topicチャネルの基礎となり、有効なSOQLクエリであることが前提です。 Push Topicクエリの変更は直ちにサーバに反映され、有効になります。クライアントは、最新のSOQLクエリにもとづく通知を受信します。また、Push TopicのNameを変更しても、登録内容は変更されません。 <通知を適時送信するための要件> ・クエリのSELECT句にはIdが含まれている。 例)SELECT Id、Name FROMなど ・クエリに含まれるエンティティは1つに限る。 ・指定されたAPIバージョンが有効なオブジェクトである。

Salesforceの開発者コンソールでPush Topicレコードを作成する

SOQLクエリを含むPush Topicレコードの作成について説明します。手順としては、Salesforceの開発者コンソールから実行匿名ウィンドウを開いて、Apexコードを入力、実行します。次項で、Apexコードのサンプルを紹介します。 ①開発者コンソールから、Apexコードを入力する。 開発者コンソール>[Debug(デバッグ)]> [Open Execute Anonymous Window(実行匿名ウィンドウ)] >[Enter Apex Code(Apexコードを入力)] ②Apexコードを貼り付けて、 [Execute(実行)] をクリックする。

Push Topicレコードのサンプル

こちらがPush Topicレコードのサンプルです。
PushTopic pushTopic = new PushTopic();
pushTopic.Name = 'InvoiceStatementUpdates';
pushTopic.Query = 'SELECT Id, Name, Status__c, Description__c FROM Invoice_Statement__c';
pushTopic.ApiVersion = 51.0;
pushTopic.NotifyForOperationCreate = true;
pushTopic.NotifyForOperationUpdate = true;
pushTopic.NotifyForOperationUndelete = true;
pushTopic.NotifyForOperationDelete = true;
pushTopic.NotifyForFields = 'Referenced';
insert pushTopic; 

SalesforceのPush Topicを活用してデータ変更の通知を受信する

Salesforceのプッシュ技術であるPush Topicについて説明しました。 Push Topicにより、SOQLクエリの項目と一致するレコード変更があったとき、チャネルを登録したクライアントが通知を受信できます。 Push Topicの作成の手順を理解して活用しましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】