1

質問があります...トリガー後(挿入後など)にレコードのフィールド値( trigger.newの一部)を更新できない場合、ワークフロー(評価基準:レコードが作成される)はどのように変更できますかフィールド値?

4

3 に答える 3

1

レコードがtrigger.newの一部であり、トリガー後にレコードを変更/更新しようとすると、ロックされると例外がスローされます。

After Triggers の実行が成功すると、レコードのロックが解除され、 After Triggersの最初の実行後にワークフロー ルールが実行されますレコードにロックがないため、ワークフロー フィールドの更新によってレコードが変更される可能性があります。

希望、それはあなたの疑いをクリアします! :)

于 2016-07-12T11:54:25.437 に答える
0

insert、update、または upsert ステートメントを使用してレコードを保存すると、Salesforce は次のイベントを順番に実行します。

  1. データベースから元のレコードをロードするか、upsert ステートメントのレコードを初期化します。
  2. リクエストから新しいレコード フィールドの値を読み込み、古い値を上書きします。要求が標準 UI の編集ページからのものである場合、Salesforce はシステム検証を実行してレコードをチェックします。
    • レイアウト固有のルールへの準拠
    • レイアウト レベルおよびフィールド定義レベルでの必須値
    • 有効なフィールド形式
    • 最大フィールド長

Apex アプリケーションや SOAP API コールなど、他のソースからの要求の場合、Salesforce は外部キーのみを検証します。トリガを実行する前に、Salesforce はカスタム外部キーがオブジェクト自体を参照していないことを確認します。

見積品目や商談品目などの複数品目が作成された場合、Salesforce はユーザ定義の入力規則を実行します。

  1. トリガーの前にすべて実行します。
  2. すべての必須フィールドの値が null でないことの確認など、ほとんどのシステム検証手順を再度実行し、ユーザー定義の検証規則を実行します。Salesforce が 2 回目に実行しない唯一のシステム検証 (要求が標準 UI 編集ページからのものである場合) は、レイアウト固有のルールの適用です。
  3. 重複ルールを実行します。重複ルールがレコードを重複として識別し、ブロック アクションを使用する場合、レコードは保存されず、トリガーやワークフロー ルールの後など、それ以上の手順は実行されません。
  4. レコードをデータベースに保存しますが、まだコミットしません。
  5. トリガーの後にすべて実行します。
  6. 割り当てルールを実行します。
  7. 自動応答ルールを実行します。
  8. ワークフロー ルールを実行します。
  9. ワークフロー フィールドの更新がある場合は、レコードを再度更新します。
  10. レコードがワークフロー フィールドの更新で更新された場合、標準の検証に加えて、更新前トリガーと更新後トリガーがもう一度 (あと 1 回だけ) 発生します。カスタム検証ルール、重複ルール、エスカレーション ルールは再実行されません。
  11. プロセスを実行します。

ワークフロー フロー トリガーがある場合は、フローを実行します。

プロセス ビルダーは、以前はパイロット プログラムで使用できたフロー トリガー ワークフロー アクションに取って代わりました。フロー トリガー ワークフロー アクションを使用している組織は、引き続きそれらを作成および編集できますが、フロー トリガー ワークフロー アクションは新しい組織では使用できません。

  1. エスカレーション ルールを実行します。
  2. 資格ルールを実行します。
  3. レコードに積み上げ集計項目が含まれているか、クロスオブジェクト ワークフローの一部である場合、計算を実行し、親レコードの積み上げ集計項目を更新します。親レコードは保存手順を経ます。
  4. 親レコードが更新され、祖父母レコードに積み上げ集計項目が含まれているか、クロスオブジェクト ワークフローの一部である場合、計算を実行し、祖父母レコードの積み上げ集計項目を更新します。祖父母レコードは保存手順を経ます。
  5. Criteria Based Sharing 評価を実行します。
  6. すべての DML 操作をデータベースにコミットします。
  7. 電子メールの送信など、コミット後のロジックを実行します。

詳細については、Salesforce のドキュメントを参照してください。

于 2016-07-08T12:05:47.607 に答える
0

ワークフロー フィールドの更新により、実際には、挿入操作の完了後に新しい更新操作が発生します。

したがって、その場合の実行順序は次のようになります。

  • インサートトリガー前
  • トリガー挿入後
  • ワークフロー フィールドの更新
  • 更新トリガー前
  • 更新後トリガー
于 2016-07-08T18:05:16.680 に答える