Salesforce開発の基礎編7
トリガの実行順序
レコードの作成/更新を実行すると、次の順で処理される。
- 変更元レコードがあればまず読み込まれる
- メモリ上で更新後の値を作成する
この時標準UIからの更新であれば、UIに設定されてるバリデーション、項目自体に設定された桁数などのチェックが走る。 - フロートリガが実行される。
フローについては Salesforce開発の基礎編4 - 技術をかじる猫 この辺参照。 - before トリガの実行。トリガの内容はこの辺参照 Salesforce開発の基礎編5 - 技術をかじる猫
- null チェックや桁数チェックが再度起動。これは「before trigger」で値が設定されるためですね。
多分この辺で数式項目が処理されます。 - 重複ルールが実行される。重複ルールはオブジェクトマネージャから設定できる。
- データベースに
insert
される。(transaction commit はまだ実行されてません) after trigger
が実行される。- 割り当てルールが実行されます。
- 自動応答ルールが実行される。
- ワークフロールールが実行
- ワークフローの項目更新があればここで更新
- 更新が発生すると、
before insert
,after insert
トリガが実行される。
- 更新が発生すると、
- プロセスビルダで指定したフローが実行される。実行順序は保証されない。
- エスカレーションルールの実行
- エンタイトルメントルールが実行
- レコードの保存後に実行されるように設定されたレコードトリガフローを実行
- レコードに積み上げ集計項目が含まれる場合、またはレコードがクロスオブジェクトワークフローの一部である場合、計算が実行
- 親オブジェクトのさらに親の積み上げ集計を実行(だからオブジェクトの親子関係は 3階層までしか持てない)
- 共有設定の処理(Summer 21 ではバグで、Process automated/System が所有者だとこの処理が走らない)
- トランザクションコミット
- メール送信など確定後処理
何か trail 進めようかと思ったけど、今日今時点でなぜか 503 なので、今日はここまで。