初心者向け:Salesforceプラットフォームイベントの全貌


プラットフォームイベントは、Salesforceが提供するイベント駆動型アーキテクチャを実現する機能です。これにより、リアルタイムでのデータ交換やシステム間の連携が可能になります。

プラットフォームイベントの概要

プラットフォームイベントは、以下の特徴を持っています:

  • イベント駆動型アーキテクチャの実現
  • 非同期処理による高い柔軟性
  • Salesforce内外のシステムとの統合が容易

プラットフォームイベントの構成要素

プラットフォームイベントは主に以下の要素で構成されています:

  • イベントプロデューサ: イベントを発生させ、メッセージをイベントバスに送信する
  • イベントバス: メッセージを一時的に保持し、コンシューマに配信する
  • イベントコンシューマ: イベントバスからメッセージを受信し、処理を実行する

プラットフォームイベントの使用方法

イベントの定義

カスタムプラットフォームイベントは、カスタムオブジェクトと同様に定義できます4。

  • API参照名のサフィックスは __e を使用
  • カスタム項目の追加が可能

イベントの公開(プロデューサ)

イベントの公開には以下の方法があります:

  • プロセスビルダー
  • フロー
  • Apex
  • API(SOAP API、REST API、Bulk API等)

イベントの登録(コンシューマ)

イベントの登録と処理には以下の方法があります4:

  • プロセスビルダー
  • フロー
  • Apexトリガー
  • Lightningコンポーネント(empApiコンポーネント)
  • CometDクライアント

使用例

1. 注文処理システム

注文ステータスが変更されたときにプラットフォームイベントを発行し、外部システムに通知する例

trigger DemoOrderTrigger on DemoOrder__c (after update) {
    List<DemoOrderEvent__e> events = new List<DemoOrderEvent__e>();
    for(DemoOrder__c od : Trigger.new){
        if(!String.isEmpty(od.Status__c) && od.Status__c == '出荷依頼'){
            DemoOrderEvent__e ev = new DemoOrderEvent__e();
            ev.OrderNumber__c = od.Name;
            ev.Status__c = od.Status__c;
            events.add(ev);
        }
    }
    if(!events.isEmpty()){
        EventBus.publish(events);
    }
}

2. リアルタイム通知システム

Lightningコンポーネントを使用して、プラットフォームイベントをリアルタイムで受信し、ユーザーインターフェースを更新する。

3. 外部システム連携

Javaアプリケーションを使用して、Salesforceのプラットフォームイベントを購読し、外部システムと連携する。

プラットフォームイベントは、システム間の効率的な通信と連携を実現し、ビジネスプロセスの最適化に貢献します。適切に活用することで、柔軟で拡張性の高いシステム構築が可能になります。

コメント