SalesforceのEvent、Taskオブジェクトで繰り返し予定を扱う上で、トリガーの動作が複雑なためまとめました。
まず繰り返し行動を作成すると以下のようなレコードが作成されます。
以下において行動(Event)を例に記載していますが、Todo(Task)も同等な仕様になっています。
親レコードのIsRecurrenceがtrueで、子レコードは繰り返し日分が作成され、RecurrenceActivityIdに親レコードのIDが入ります。
id | subject | IsRecurrence | RecurrenceActivityId |
---|---|---|---|
xxxxxxx1 | 親レコード行動 | true | xxxxxxx1 |
xxxxxxx2 | 子レコード行動1 | false | xxxxxxx1 |
xxxxxxx3 | 子レコード行動2 | false | xxxxxxx1 |
xxxxxxx4 | 子レコード行動3 | false | xxxxxxx1 |
以下において各トリガー発生時の動作についてのまとめです。
新規作成時
Trigger発行数 | 2 |
---|---|
Trigger種別 | Insert |
レコード数 | ・親レコード1件(Insert) ・繰り返し分のn件(Insert) |
繰り返し行動の更新時
終了日延長
Trigger発行数 | 2 |
---|---|
Trigger種別 | Insert、Update |
レコード数 | 1.延長した日のn件(Insert) 2.親レコード1件(Update) |
終了日短縮
Trigger発行数 | 2 |
---|---|
Trigger種別 | Delete、Update |
レコード数 | 1.短縮した日のn件(Delete) 2.親レコード1件(Update) |
開始日延長(未来日が開始日のみ編集可)
Trigger発行数 | 3 |
---|---|
Trigger種別 | Delete、Insert、Update |
レコード数 | 1.古い繰り返し日(すべての子レコード)のn件(Delete) 2.新しい繰り返し日のn件(Insert) 3.親レコード1件(Update) |
開始日短縮(未来日が開始日のみ編集可)
Trigger発行数 | 3 |
---|---|
Trigger種別 | Delete、Insert、Update |
レコード数 | 1.古い繰り返し日(すべての子レコード)のn件(Delete) 2.新しい繰り返し日のn件(Insert) 3.親レコード1件(Update) |
開始/終了時間編集
Trigger発行数 | 1 |
---|---|
Trigger種別 | Update |
レコード数 | 1.親レコード1件(Update) |
子レコードの時刻は更新されないが、繰り返し行動の親レコードの時刻は更新される
項目更新
Trigger発行数 | 1 |
---|---|
Trigger種別 | Update |
レコード数 | 1.親レコード1件(Update) |
子レコードの項目は更新されないが、繰り返し行動の親レコードの項目は更新される
一件のみ更新時
Trigger発行数 | 1 |
---|---|
Trigger種別 | Update |
レコード数 | 1.編集対象の子レコード1件(Update) |
一件のみ削除
Trigger発行数 | 1 |
---|---|
Trigger種別 | Delete |
レコード数 | 1.削除対象の子レコード1件(Delete) |
繰り返し行動の削除
Trigger発行数 | 1 |
---|---|
Trigger種別 | Delete |
レコード数 | 1.親レコード1件(Delete) |
※繰り返し行動またはタスクが過去になっている場合は、それらのレコードは削除されない
未来日付になっている予定のみが削除される