0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Salesforce Pub/Sub API を利用してみる

Last updated at Posted at 2023-12-25

※ これから記載する事項は、私が所属する会社とは一切関係のない事柄です。

今回は Pub/Sub APIサンプルを実行する方法を紹介したいと思います。

Pub/Sub API では何ができるの?

Pub/Sub API は gRPC と HTTP/2 に基づいた API で、リアルタイムでイベントを介してデータのやり取りを行うことができます。公開されたイベントはイベントバスに 72 時間保存されるので、一時的に切断されていたとしても過去のイベントを再取得することができます。

ユースケースとしては外部システムとのデータの同期やオブジェクト変更時の通知といったようなことが挙げられます。

Trailhead の「Pub/Sub API を使用する」に記載のイベントの種類は下記の通りです。

  • 変更データキャプチャ — 変更データキャプチャを使用すると、サポート対象である変更された項目すべてのレコードの変更を受信します。追跡されるレコード操作は、レコードの作成、更新、削除、復元です。各イベントメッセージには、変更に関する情報を表示するヘッダー項目が含まれます。
  • プラットフォームイベント — カスタムプラットフォームイベントを使用して、カスタム通知を公開および登録できます。プラットフォームイベントオブジェクトと項目を作成して、イベントデータのスキーマを定義できます。また、リアルタイムイベント監視イベントなど、Salesforce によって定義および公開される標準プラットフォームイベントに登録して、Salesforce 内のユーザー関連アクティビティやセキュリティ関連アクティビティなどを監視できます。

Pub/Sub API サンプルの使い方

Salesforce は Github は gRPC の定義ファイルである proto ファイル を公開していると同時にさまざまな言語でサンプルを公開していますので、そちらの使い方を紹介したいと思います。

今回は Go を利用する想定で記載しますが Go のインストール方法については割愛します。

1. 接続アプリケーションの作成

以前紹介した Qiita「Salesforce Bulk API 2.0 を使ってみる」の「1. 接続アプリケーションの作成とアクセストークンの取得」と同様です。

2. Github から ソースコードをクローン or ダウンロード

Github レポジトリ「pub-sub-api」をクローン or ダンロードしてください。すると下記のようなフォルダ構成のソースコード群が取得できます。
image.png

3. Go のサンプルコードの変数を上書きする

go/common/common.go ファイルの下記の変数にそれぞれ値を設定します。

変数名 説明
ClientId 接続アプリケーションの「コンシューマ鍵」
ClientSecret 接続アプリケーションの「コンシューマの秘密」
Username 組織にログインする際のユーザ ID
Password 組織にログインする際のパスワード
OAuthEndpoint https://login.salesforce.com」。サンドボックスの場合は「https://test.salesforce.com
TopicName 登録するイベントのトピック名(後述)。

スクリーンショット 2023-12-25 16.17.09.png

4. 実行する

今回はイベントに登録(サブスクライブ)します。下記のように go/examples フォルダ内にあるサブスクライブするためのサンプルを実行します。

# go フォルダ内に移動
cd go

# 依存関係のダウンロード
go mod vendor

# サブスクライブの実行
go run examples/subscribe/main.go

実行すると下記のようにイベントの発生を待つようになります。

この時点で有効なトピック名を設定してない場合はエラーが発生します。

image (1).png

「変更データキャプチャ」をサブスクライブしてみる

今回は取引先が変更された想定でどのようにサブスクライブされるかを確認します。

変更データキャプチャで利用できるオブジェクト限られます。一覧はこちらです。

1. 変更データキャプチャの設定(ヘルプ

設定 > 変更データキャプチャ に遷移し、[選択されたエンティティ] として取引先を選択し、保存します。
スクリーンショット 2023-12-25 16.45.19.png

2. Go の変数の上書き

Go の go/common/common.go ファイルの TopicName に取引先オブジェクトの変更イベントを設定します。
標準オブジェクトの変更イベントは /data/<Standard_Object_Name>ChangeEvent のようなフォーマットで入力されるので、取引先 (Accout) オブジェクトの場合は /data/AccountChangeEvent となります。

その他のフォーマットについては「Subscription Channels」をご覧ください。

スクリーンショット 2023-12-25 16.52.30.png

3. サブスクライブして取引先を変更してみる

再度コマンドを実行します。

go run examples/subscribe/main.go

そして取引先の名前を「A」から「B」に変更してみます。
スクリーンショット 2023-12-25 16.57.12.png

すると、下記のように変更イベントが表示されるのがわかります。
スクリーンショット 2023-12-25 16.59.33.png

「プラットフォームイベント」をサブスクライブしてみる

今回は注文概要オブジェクトの変更を知らせるプラットフォームイベントを作成してそれをフローで公開してみようと思います。

1. プラットフォームイベントの設定(ヘルプ

設定 > プラットフォームイベント から「Order Summary Change」というイベントを作成しました。
スクリーンショット 2023-12-25 17.09.52.png

イベントオブジェクトのフィールドとして注文番号 (Order No) と状況 (Status) を設定しました。
スクリーンショット 2023-12-25 17.11.08.png

2. Go の変数の上書き

Go の go/common/common.go ファイルの TopicName に「Order Summary Change」イベントを設定します。
プラットフォームイベントは /event/Event_Name__e のようなフォーマットで入力されるので、「Order Summary Change」イベントの場合は /event/Order_Summary_Change__e となります。

スクリーンショット 2023-12-25 17.14.31.png

3. フローを作成して実行してみる

再度コマンドを実行します。

go run examples/subscribe/main.go

「Order_Summary_Change」オブジェクトレコードを作成するシンプルなフローを作成します。
スクリーンショット 2023-12-25 17.21.12.png

「Order_Summary_Change」オブジェクトフィールドの Order No には「1234567」、Status には「Approved」を設定し実行します。
スクリーンショット 2023-12-25 17.21.06.png

すると下記の通り公開際れたイベントを取得することができます。
スクリーンショット 2023-12-25 17.22.07.png

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?