技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Salesforce開発の基礎編7

トリガの実行順序

developer.salesforce.com

レコードの作成/更新を実行すると、次の順で処理される。

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

何か trail 進めようかと思ったけど、今日今時点でなぜか 503 なので、今日はここまで。