[salesforce]トリガと実行順序
Force.com上ではトリガと呼ばれる仕組みを実装できます。トリガとはForce.com上でデータベースの操作を行うDMLイベントが発生したときに実行されるAPEXスクリプトのことです。トリガは以下のイベント時に実行することができます。
- before insert , after insert
- before update, after update
- before delete, after delete
- after undelete
一方で、DMLイベント発生時にはトリガとは別にForce.com上では様々な処理が実行される場合がありえます。設定している場合は、ワークフローや割り当てルールや電子メール送信など。これらの処理がどのような順序で実行されるかのまとめが以下になります。
- 元のレコードがロード、または初期化される
- 新しいレコードのフィールド値がロードされ、古い値を上書きする
- 全てのbeforeトリガが実行される
- カスタム検証ルールを含むシステム検証が行われる
- レコードはデータベースに保存されるが、コミットはされない
- すべてのafterトリガが実行される
- 割り当てルールが実行される
- 自動返信ルールが実行される
- ワークフロールールが実行される
- ワークフローフィールドが更新されたら、レコードがリロードされる
- 10の処理をうけて、beforeトリガとafterトリガを再度1度だけ実行する
- エスカレーションルールが実行される
- レコードが積み上げ集計項目をもっていたりクロスオブジェクトワークフローの一部である場合は、親レコードの該当項目の値も更新する
- すべてのDML操作がデータベースにコミットされる
- 電子メールの送信など、コミット後のロジックが実行される