一括 Apex trigger を作成する
フェーズが Closed Won の商談にフォローアップ ToDo を追加する一括 Apex trigger を作成します。Apex trigger は商談の挿入後または更新後に起動します。
https://trailhead.salesforce.com/ja/content/learn/modules/apex_triggers/apex_triggers_bulk
- Apex trigger を作成する:
- Name:
ClosedOpportunityTrigger
- Object: Opportunity
- イベント: after insert と after update
- 条件: フェーズが
Closed Won
- 操作: ToDo を作成する:
Subject
:テスト ToDo をフォローアップする
WhatId
: 商談 ID (ToDo を商談に関連付ける)- Apex trigger を一括処理化して 200 件以上の商談を挿入または更新できるようにする
この課題をクリアできるソースは以下の通り。
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();
}
}
この処理の説明は以下です。
ClosedOpportunityTrigger
という名前のトリガを作成し、Opportunity
オブジェクトに対してafter insert
およびafter update
イベントを指定します。- 新しいMap
tasksToInsert
を作成し、商談のIDと新しいToDoタスクを関連付けます。 - 挿入または更新されたすべての商談をループし、各商談のフェーズが ‘Closed Won’ である場合にのみ、新しいToDoタスクを作成します。
- 新しいToDoタスクの
Subject
を'テスト ToDo をフォローアップする'
に設定し、WhatId
を商談のIDに設定して、ToDoタスクを商談に関連付けます。 tasksToInsert
Mapに商談IDとToDoタスクを追加します。- Mapが空でない場合、
insert
ステートメントを使用してMap内のすべてのToDoタスクを一括で挿入します。
このトリガは一括処理を利用しているため、200件以上の商談を挿入または更新する際にも効率的に処理を実行します。
コメント