When an Account record is created, the following happens: Before insert triggerincrements the count field once. After insert record-triggered flowexecutes and increments the count again. When the record is subsequently updated: Before update triggerincrements the count again. After update record-triggered flowincrements it once more. Thus, the final value of thecountfield =4. Order of Execution in Salesforce
最新のコメント (最新のコメントはトップにあります。)
suisei - 2025-11-23
ワークフロールール内のフィールド更新は、ワークフロールールを再評価しないように設定されてれば2
generativeAI - 2025-11-22
正解は **B** (2) です。
Salesforce の **「実行順序 (Order of Execution)」** と **「再帰 (Recursion)」** の挙動を理解しているかを問う問題です。
最新のコメント (最新のコメントはトップにあります。)
ワークフロールール内のフィールド更新は、ワークフロールールを再評価しないように設定されてれば2
正解は **B** (2) です。
Salesforce の **「実行順序 (Order of Execution)」** と **「再帰 (Recursion)」** の挙動を理解しているかを問う問題です。
### 正解の解説
**B. 2**
処理の流れは以下のようになります。
1. **レコードの挿入 (Insert) 開始:**
* 初期値は **0** です。
2. **Apex トリガーの評価:**
* トリガーは **`before update`** イベントに記述されています。
* 現在は `insert` 操作中であるため、この時点では **トリガーは実行されません**。
3. **レコードの保存:**
* カウント **0** でデータベースに一時保存されます。
4. **フローの実行:**
* 「レコードトリガーフロー」が実行されます(作成時)。
* フローがカウントを **+1** します。(値は **1** になる)
* フローによる項目更新は、システム内部で **「更新 (Update)」** 処理として扱われます。
5. **再帰処理 (Update トランザクションの開始):**
* フローによる更新が発生したため、Salesforce は更新時の実行順序を再評価します。
* ここで、**Apex トリガー (`before update`)** が発火します。
* トリガーがカウントを **+1** します。(値は **2** になる)
6. **最終コミット:**
* 最終的に **2** が保存されます。
---
### 不正解の解説
**C. 1**
* これは、Apex トリガーが実行されなかった場合(フローのみ動作)、またはフローが「保存前 (Before-Save)」かつトリガーが動かなかった場合の値です。
* 問題文にあえて `before update` トリガーが存在するということは、フローによる更新がトリガーを誘発する(実行順序の再実行)ことを意図しています。
**A. 4** / **D. 3**
* これらは、トリガーやフローが無限ループ(再帰制御なしで何度も回り続ける)した場合の値を想定していますが、Salesforce の標準的な実行順序の問題では、通常「フローによる1回の再実行」までを考慮します。
### 💡 学習のポイント
[cite_start]提供されたドキュメントの「複数回実行の回避」セクション [cite: 1065-1067] にも、以下の記述があります。
> **「after update 後、フローが実行され項目自動更新」** されると、トリガーが複数回実行される原因となる。
この「自動化ツール(フロー/ワークフロー)による更新」→「トリガーの再起動」という流れは、PDI試験の鉄板パターンです。...