【Salesforce】一括APEXトリガ

スポンサーリンク

スポンサーリンク

Trailhead

一括 Apex trigger を作成する

フェーズが Closed Won の商談にフォローアップ ToDo を追加する一括 Apex trigger を作成します。Apex trigger は商談の挿入後または更新後に起動します。

  • Apex trigger を作成する:
    • Name: ClosedOpportunityTrigger
    • Object: Opportunity
    • イベント: after insert と after update
    • 条件: フェーズが Closed Won
    • 操作: ToDo を作成する:
      • Subjectテスト ToDo をフォローアップする
      • WhatId: 商談 ID (ToDo を商談に関連付ける)
    • Apex trigger を一括処理化して 200 件以上の商談を挿入または更新できるようにする
https://trailhead.salesforce.com/ja/content/learn/modules/apex_triggers/apex_triggers_bulk

この課題をクリアできるソースは以下の通り。

trigger ClosedOpportunityTrigger on Opportunity (after insert, after update) {
    // 商談のIDと関連するToDoを格納するMapを作成
    Map<Id, Task> tasksToInsert = new Map<Id, Task>();

    // トリガによって挿入または更新された商談のループを作成
    for(Opportunity opp : Trigger.new) {
        // フェーズがClosed Wonである場合にのみ処理を実行
        if(opp.StageName == 'Closed Won') {
            // 新しいToDoを作成
            Task newTask = new Task(
                Subject = 'テスト ToDo をフォローアップする',
                WhatId = opp.Id  // ToDoを商談に関連付ける
            );
            // Mapに商談IDとToDoを追加
            tasksToInsert.put(opp.Id, newTask);
        }
    }

    // ToDoを一括で挿入
    if(!tasksToInsert.isEmpty()) {
        insert tasksToInsert.values();
    }
}

この処理の説明は以下です。

  1. ClosedOpportunityTrigger という名前のトリガを作成し、Opportunity オブジェクトに対して after insert および after update イベントを指定します。
  2. 新しいMap tasksToInsert を作成し、商談のIDと新しいToDoタスクを関連付けます。
  3. 挿入または更新されたすべての商談をループし、各商談のフェーズが ‘Closed Won’ である場合にのみ、新しいToDoタスクを作成します。
  4. 新しいToDoタスクの Subject'テスト ToDo をフォローアップする' に設定し、WhatId を商談のIDに設定して、ToDoタスクを商談に関連付けます。
  5. tasksToInsert Mapに商談IDとToDoタスクを追加します。
  6. Mapが空でない場合、insert ステートメントを使用してMap内のすべてのToDoタスクを一括で挿入します。

このトリガは一括処理を利用しているため、200件以上の商談を挿入または更新する際にも効率的に処理を実行します。

コメント

スポンサーリンク






スポンサーリンク





タイトルとURLをコピーしました