0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

今日はSalesforceのトリガーの実行順序について説明します。

トリガーの実行順序

Salesforceでは、トリガーが実行される順序が決まっています。この順序があることで、データが正しく処理されます。ここでは、トリガーの実行順序をステップごとに説明します。

1. レコードの初期設定:
最初に、元のレコードがデータベースから読み込まれるか、、upsert ステートメント用にレコードが初期設定されます。

"upsert"

挿入(insert)と更新(update)を組み合わせた操作です。もしレコードが存在しなければ新しく作成し、存在すれば更新します。この初期設定は、どのレコードが新規で、どのレコードが既存かを決めるための準備です。例えば、新しい顧客情報を追加する場合や、既存の顧客情報を更新する場合に、適切に対応できるように準備をします。

2. 値の上書き:
要求から新しいレコード項目の値が読み込まれ、古い値を上書きします。Salesforceは、要求の種類に応じてさまざまな検証チェックを実行します。

  • 標準UI編集ページからの要求:

    • レイアウト固有のルール
    • レイアウトレベルおよび項目定義レベルで必要な値
    • 有効な項目形式
    • 最大項目サイズ
  • ユーザーオブジェクトからの要求:

    • カスタム検証ルール
  • 複数行品目の作成からの要求:

    • カスタム検証ルール
  • ApexアプリケーションやSOAP APIコールからの要求:

    • 外部キーと制限付き選択リストの検証
    • カスタム外部キーがオブジェクト自体を参照しないことの確認

3. レコードトリガーフローの実行:
保存前に実行されるように設定されたレコードトリガーフローが実行されます。

4. beforeトリガーの実行:
すべてのbeforeトリガーが実行されます。

5. システム検証の再実行:
必須項目の確認やカスタムの入力規則の実行など、システム検証のほとんどの手順がもう一度実行されます。ただし、標準UI編集ページからの要求に対しては、レイアウト固有のルールの適用は再実行されません。

6. 重複ルールの実行:
重複するレコードを特定し、ブロックアクションを実行します。重複が検出された場合、レコードは保存されず、後続のステップも実行されません。

7. レコードの保存:
レコードはデータベースに保存されますが、まだ確定されません。

8. afterトリガーの実行:
すべてのafterトリガーが実行されます。

9. 割り当てルールの実行:
割り当てルールが実行されます。

10. 自動応答ルールの実行:
自動応答ルールが実行されます。

11. ワークフロールールの実行:
ワークフロールールが実行され、ワークフロー項目自動更新が存在する場合、次の手順が実行されます。

  • レコードの再更新:
    • レコードが再度更新されます。
      -システム検証の再実行:
      カスタム入力規則、フロー、重複ルール、プロセスおよびエスカレーションルールは再実行されません。
  • before updateトリガーとafter updateトリガーの再実行:
    • レコードの操作(挿入または更新)に関わらず、もう一度実行されます。

12. エスカレーションルールの実行:
エスカレーションルールが実行されます。

13. Salesforceフロー自動化の実行:
次のSalesforceフロー自動化が実行されますが、順序は保証されません。

  • プロセス
  • プロセスによって起動されたフロー
  • プロセスまたはフローでDML操作が実行されるとき、影響を受けるレコードに対して保存手順が実行されます。

14. レコードトリガーフローの実行:
保存後に実行されるように設定されたレコードトリガーフローが実行されます。

15. エンタイトルメントルールの実行:
エンタイトルメントルールが実行されます。

16. 積み上げ集計項目の計算:
レコードに積み上げ集計項目が含まれる場合、またはレコードがクロスオブジェクトワークフローの一部である場合、計算が実行され、親レコードの積み上げ集計項目が更新されます。親レコードに対して保存手順が実行されます。

17. 親レコードの更新:
親レコードが更新され、さらにその親レコードに積み上げ集計項目が含まれるか、その親レコードがクロスオブジェクトワークフローの一部である場合、計算が実行され、親の親レコードの積み上げ集計項目が更新されます。親の親レコードに対して保存手順が実行されます。

18. 条件に基づく共有の評価:
条件に基づく共有の評価が実行されます。

19. DML操作の確定:
すべてのDML操作がデータベースで確定されます。

"DML"

Data Manipulation Language(データ操作言語)の略です。DML操作は、データベース内のデータを操作するための命令のことです。

20. コミット後ロジックの実行:
変更がデータベースにコミットされた後、コミット後ロジックが実行されます。コミット後ロジックの例を次に示します。

  • メールの送信
  • キューに登録された非同期Apexジョブ(キュー可能ジョブやfutureメソッドを含む)
  • レコードトリガーフローの非同期パス

まとめ

Salesforceのトリガーは、データが正しく処理されるために重要な役割を果たしています。これらのステップを順番に実行することで、Salesforceは効率的で信頼性の高いシステムとなっています。

資料

詳しい情報はSalesforceの公式ドキュメントを参照してください。トリガーの実行順序についての詳細な説明が記載されています。

この記事が、Salesforceのトリガーについての理解を深める手助けになれば嬉しいです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?