0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プラットフォームイベントの活用事例

Posted at

Salesforceにおけるプラットフォームイベントの活用事例と実装方法

1. プラットフォームイベントとは?

Salesforceの「プラットフォームイベント」は、非同期でのデータ処理を実現する仕組みです。
従来のワークフローやプロセスビルダーでは難しい「リアルタイムなイベント駆動型処理」を可能にします。

🔹 主な用途

  • システム間の連携(Salesforceと外部システムのリアルタイム連携)
  • 複数の処理を非同期で実行(例:商談成立後に請求書作成とメール送信を並行処理)
  • バッチ処理の代替(大量データの更新通知)

2. 活用事例①:商談成立後に請求書を自動作成 & メール通知

📌 要件

  • 商談(Opportunity)が成約(Closed Won)になったら、請求書(Invoice)を作成する
  • その後、請求書作成の通知メールを営業担当者に送る

📌 実装の流れ

  1. プラットフォームイベントを作成(InvoiceEvent)
  2. Apexトリガーでイベントを発行(商談が成約したら発行)
  3. イベントを購読して請求書を作成(Apex または フローで購読)
  4. 請求書作成後に通知メールを送信

3. 実装

① プラットフォームイベントの作成

設定 → プラットフォームイベント から、新しいイベント InvoiceEvent を作成し、
以下のフィールドを定義します。

フィールド名 API名 データ型
商談ID OpportunityId__c Lookup (Opportunity)
金額 Amount__c Currency
請求先メール Email__c Email

② Apexトリガーでイベントを発行

商談のステージがClosed Wonになったら、InvoiceEventを発行する

trigger OpportunityTrigger on Opportunity (after update) {
    List<InvoiceEvent__e> events = new List<InvoiceEvent__e>();

    for (Opportunity opp : Trigger.new) {
        Opportunity oldOpp = Trigger.oldMap.get(opp.Id);

        // ステージが"Closed Won"に変更された場合、イベントを発行
        if (opp.StageName == 'Closed Won' && oldOpp.StageName != 'Closed Won') {
            InvoiceEvent__e event = new InvoiceEvent__e(
                OpportunityId__c = opp.Id,
                Amount__c = opp.Amount,
                Email__c = opp.Owner.Email
            );
            events.add(event);
        }
    }
    
    // プラットフォームイベントを発行
    EventBus.publish(events);
}

③ フローでイベントを購読し、請求書を作成

  1. 設定 → フロー → 新規フロー → プラットフォームイベントの購読を選択
  2. 購読するイベントInvoiceEvent__e
  3. 請求書オブジェクト(Invoice__c)を作成
    • 商談IDInvoiceEvent__e.OpportunityId__c
    • 請求金額InvoiceEvent__e.Amount__c
    • 請求日Today()
  4. メール通知を送信
    • 送信先 → InvoiceEvent__e.Email__c
    • メール本文 → 「商談が成約し、請求書が作成されました。」

4. 活用事例②:外部システム(ERP)とのリアルタイム連携

📌 要件

  • Salesforceで新しい受注(Order)が作成されたら、外部のERPシステムに通知
  • ERP側で処理が完了したら、Salesforceの受注ステータスを更新

📌 実装の流れ

  1. Salesforceで注文データを作成
  2. プラットフォームイベント(OrderEvent)を発行
  3. 外部システムがOrderEventを購読し、ERPにデータ送信
  4. ERPが処理完了後、Salesforceの受注ステータスを更新

5. 実装

① プラットフォームイベントを作成

フィールド名 API名 データ型
注文ID OrderId__c Lookup (Order)
金額 Amount__c Currency
ステータス Status__c Text

② Apexトリガーでイベントを発行

trigger OrderTrigger on Order (after insert) {
    List<OrderEvent__e> events = new List<OrderEvent__e>();

    for (Order ord : Trigger.new) {
        OrderEvent__e event = new OrderEvent__e(
            OrderId__c = ord.Id,
            Amount__c = ord.TotalAmount,
            Status__c = ord.Status
        );
        events.add(event);
    }

    // 外部システムに通知
    EventBus.publish(events);
}

③ 外部システムが購読(AWS Lambda, Heroku など)

外部のERPシステムは、Salesforceのプラットフォームイベントを購読し、処理後にSalesforceへ更新リクエストを送信。
例えば、AWS Lambda で受信処理を実装:

import requests
import json

def lambda_handler(event, context):
    for record in event['Records']:
        order_id = record['OrderId__c']
        status = "Processed"

        # Salesforceの受注ステータスを更新
        url = f"https://yourinstance.salesforce.com/services/data/v56.0/sobjects/Order/{order_id}"
        headers = {
            "Authorization": "Bearer YOUR_ACCESS_TOKEN",
            "Content-Type": "application/json"
        }
        data = json.dumps({"Status": status})

        requests.patch(url, headers=headers, data=data)

6. まとめ

活用事例 プラットフォームイベントの役割
商談成立後の請求書作成 & メール通知 非同期で請求書を作成し、メール通知
外部システムとのリアルタイム連携 ERPに受注情報を送信し、処理後にSalesforceを更新

🔹メリット
非同期処理 でユーザーの待ち時間を削減
システム間の連携 をリアルタイムで実現
フローやApexで柔軟に処理 できる

👨‍💻 試験対策ポイント

  • EventBus.publish() でイベント発行
  • フロー or Apex でイベントを購読
  • 非同期処理での活用(外部システム連携や自動化)
0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?