質問があります...トリガー後(挿入後など)にレコードのフィールド値( trigger.newの一部)を更新できない場合、ワークフロー(評価基準:レコードが作成される)はどのように変更できますかフィールド値?
3 に答える
レコードがtrigger.newの一部であり、トリガー後にレコードを変更/更新しようとすると、ロックされると例外がスローされます。
After Triggers の実行が成功すると、レコードのロックが解除され、 After Triggersの最初の実行後にワークフロー ルールが実行されます。レコードにロックがないため、ワークフロー フィールドの更新によってレコードが変更される可能性があります。
希望、それはあなたの疑いをクリアします! :)
insert、update、または upsert ステートメントを使用してレコードを保存すると、Salesforce は次のイベントを順番に実行します。
- データベースから元のレコードをロードするか、upsert ステートメントのレコードを初期化します。
- リクエストから新しいレコード フィールドの値を読み込み、古い値を上書きします。要求が標準 UI の編集ページからのものである場合、Salesforce はシステム検証を実行してレコードをチェックします。
- レイアウト固有のルールへの準拠
- レイアウト レベルおよびフィールド定義レベルでの必須値
- 有効なフィールド形式
- 最大フィールド長
Apex アプリケーションや SOAP API コールなど、他のソースからの要求の場合、Salesforce は外部キーのみを検証します。トリガを実行する前に、Salesforce はカスタム外部キーがオブジェクト自体を参照していないことを確認します。
見積品目や商談品目などの複数品目が作成された場合、Salesforce はユーザ定義の入力規則を実行します。
- トリガーの前にすべて実行します。
- すべての必須フィールドの値が null でないことの確認など、ほとんどのシステム検証手順を再度実行し、ユーザー定義の検証規則を実行します。Salesforce が 2 回目に実行しない唯一のシステム検証 (要求が標準 UI 編集ページからのものである場合) は、レイアウト固有のルールの適用です。
- 重複ルールを実行します。重複ルールがレコードを重複として識別し、ブロック アクションを使用する場合、レコードは保存されず、トリガーやワークフロー ルールの後など、それ以上の手順は実行されません。
- レコードをデータベースに保存しますが、まだコミットしません。
- トリガーの後にすべて実行します。
- 割り当てルールを実行します。
- 自動応答ルールを実行します。
- ワークフロー ルールを実行します。
- ワークフロー フィールドの更新がある場合は、レコードを再度更新します。
- レコードがワークフロー フィールドの更新で更新された場合、標準の検証に加えて、更新前トリガーと更新後トリガーがもう一度 (あと 1 回だけ) 発生します。カスタム検証ルール、重複ルール、エスカレーション ルールは再実行されません。
- プロセスを実行します。
ワークフロー フロー トリガーがある場合は、フローを実行します。
プロセス ビルダーは、以前はパイロット プログラムで使用できたフロー トリガー ワークフロー アクションに取って代わりました。フロー トリガー ワークフロー アクションを使用している組織は、引き続きそれらを作成および編集できますが、フロー トリガー ワークフロー アクションは新しい組織では使用できません。
- エスカレーション ルールを実行します。
- 資格ルールを実行します。
- レコードに積み上げ集計項目が含まれているか、クロスオブジェクト ワークフローの一部である場合、計算を実行し、親レコードの積み上げ集計項目を更新します。親レコードは保存手順を経ます。
- 親レコードが更新され、祖父母レコードに積み上げ集計項目が含まれているか、クロスオブジェクト ワークフローの一部である場合、計算を実行し、祖父母レコードの積み上げ集計項目を更新します。祖父母レコードは保存手順を経ます。
- Criteria Based Sharing 評価を実行します。
- すべての DML 操作をデータベースにコミットします。
- 電子メールの送信など、コミット後のロジックを実行します。
詳細については、Salesforce のドキュメントを参照してください。
ワークフロー フィールドの更新により、実際には、挿入操作の完了後に新しい更新操作が発生します。
したがって、その場合の実行順序は次のようになります。
- インサートトリガー前
- トリガー挿入後
- ワークフロー フィールドの更新
- 更新トリガー前
- 更新後トリガー