概要
本記事ではSalesforceのプラットフォームイベントについての概要や使用方法を簡単に整理します。
イベント駆動型アーキテクチャ
イベント駆動型アーキテクチャとは、イベントプロデューサ/イベントコンシューマ/イベントバスから構成されます。イベントプロデューサは、イベント発生時の情報を取得してイベントバスにメッセージとして転送します。転送されたメッセージは、プロデューサとは非同期にイベントコンシューマで受信して処理を実行します。
従来の要求-応答通信モデルでは、Webシステムやデータベースに要求を実行して同期で応答を受信していました。したがって、応答するWebシステムやデータベースの可用性に依存していました。
イベント駆動型アーキテクチャの使用用途は、外部システムとのインテグレーション等で別トランザクションで非同期に処理を実行したいような場合かと思います。
そして、プラットフォームイベントは、Salesforce Platform上でイベント駆動型アーキテクチャを実現する機能となります。
カスタムプラットフォームイベントの定義
カスタムプラットフォームイベントは、カスタムオブジェクト(sObject)と同じように定義することができます。また、カスタムオブジェクトと同様に作成したプラットフォームイベントには、カスタム項目を追加することができます。ただし、レイアウトやLightningレコードページで表示することはできません。
プラットフォームイベントのAPI参照名のサフィックスは、__eとなります。(通常のカスタムオブジェクトでは、__cとなる部分です。)
例) event__e
みたいな感じです。
プラットフォームイベントの公開
上記で定義したプラットフォームイベントに対してレコードを作成することがイベントの公開になります。公開するための方法は以下のいずれかとなります。イベント駆動型アーキテクチャでいうと、イベントプロデュースにあたります。
- プロセスビルダー
- フロー
- Apex
- API(SOAP API/REST API/Bulk API etc)
それぞれの機能での実装は、通常のカスタムオブジェクトにレコードを作成するのと同じようなイメージとなります。
プラットフォームイベントの登録
上記で公開したプラットフォームイベントのレコードによりメッセージを受信して動作する処理を登録します。登録するための方法は以下のいずれかとなります。イベント駆動型アーキテクチャでいうと、イベントコンシューマにあたります。
- プロセスビルダー
- フロー
- Apexトリガー
- Litghtningコンポーネント(empApiコンポーネント)
- CometDクライアント
プロセスビルダーとフローには、プラットフォームイベントを開始のタイミングとして選択することができます。
プロセスビルダー
フロー
Apexトリガーは、カスタムオブジェクトのトリガーと同様にプラットフォームイベントのオブジェクトに対して作成することができます。処理種別は、after triggerとして実装します。また、通常のカスタムオブジェクトの最大バッチ数は200ですが、プラットフォームイベントは、2000となります。
Lightningコンポーネントは、empApiコンポーネントを使用してリスンするプラットフォームイベントを登録することができます。
参考(lightning-emp-api)
https://developer.salesforce.com/docs/component-library/bundle/lightning-emp-api/documentation
CometDは、外部クライアントでプラットフォームイベントの受信を登録できます。CometD クライアントを実装するか EMP コネクタのオープンソースのコミュニティツールを使用して作成することができます。具体的な実装のサンプルは、下記に記載されています。
参考(Java クライアントを使用した登録とイベントの再生)
https://developer.salesforce.com/docs/atlas.ja-jp.platform_events.meta/platform_events/code_sample_java_client_intro.htm
参考
Platform Events Developer Guide (プラットフォームイベント開発者ガイド)
https://developer.salesforce.com/docs/atlas.ja-jp.platform_events.meta/platform_events/platform_events_intro.htm
プラットフォームイベントの基礎
https://trailhead.salesforce.com/ja/content/learn/modules/platform_events_basics
インスタント通知アプリケーションの作成
https://trailhead.salesforce.com/ja/content/learn/projects/workshop-platform-events