Memos About Salesforce

Salesforceにハマってたこと!

SFDC トランザクション処理順番 数式はいつ処理される

SFDCで開発をして、経験が多くなってくると

だんだん、この辺を気になってくるし、なるべきし

今回、レコードに適用される salesforce ロジックの順序について

共有したいと思います。

欲しけりゃくれてやる・・・。

探せ!

この世の全てをそこに置いてきた〜笑

目次

salesforce ロジックの順序

数式以外、1トランザクションは下記の順番でロジックを評価する
  • 古いレコードをデータベースからロード(または、新しい挿入の初期化)

  • 新しいレコードの値で古い値を上書き

  • システムの入力規則(商談商品を挿入する場合、システムの入力規則に加えてカスタム入力規則が実行されます)

  • すべての before トリガを実行(EE / UE のみ)

  • カスタム入力規則

  • レコードをデータベースに保存(しかし、コミットされていない)

  • レコードをデータベースから再ロード

  • すべての after トリガを実行(EE / UE のみ)

  • 割り当てルール

  • 自動応答ルール

  • ワークフロー ルール

  • プロセス

  • エスカレーション ルール

  • 積み上げ集計数式の値の更新(存在する場合)

  • データベースのコミット

  • コミット後のロジック(メールの送信)

数式はいつなの

数式項目は上記の順序の中ではない

数式項目に任意の方法でアクセスするたびにその結果を計算しリアルタイムに表示します

例えば、レコード詳細画面でアクセスするたびとか、

クエリ発行する際するたびに

数式が再計算し、結果を表示するなのです。

よくはまっちゃうことはトリガのテストクラスかもね

なかなか、期待値ではない、

その時に、クエリを掛けるか、更新を掛けるかと思う。