詳細情報:
トランザクションでのフローの実行方法
フローは、操作を 1 つの単位としてグループ化するトランザクション内で実行されます。操作が失敗すると、トランザクション全体がロールバックされ、データの整合性が維持されます。これには、Apexトリガー、エスカレーション ルール、トランザクションのすべてのフロー インタビューが含まれます。
各トランザクションで、Salesforce は、共有リソースが枯渇することがないようにガバナ制限を適用します。複数の Salesforce 組織がリソースを共有するため、Salesforce は 1 つの組織がすべてのリソースを独占し、他の組織がリソース不足に陥らないようにします。アパートで 1 つの貯水槽から各世帯に配水するしくみと似ています。隣人が水を使い切ってしまったら、シャワーを浴びられなくなります。(陳腐なたとえですが、お分かりいただけるのではないでしょうか)。トランザクション単位のガバナ制限によって、こうしたリソース不足が阻止されます。
Winter '26 以降、すべてのフロー種別を設定して、アクションを正常に実行するために新しいトランザクションが必要かどうかを実行時に決定できます。以前は、画面フローのみがトランザクションを制御していました。レコードトリガーフローの場合、非同期またはスケジュール済みパスのアクションにトランザクション制御を適用できますが、すぐに実行するパスには適用できません。
| アクションが | デフォルトのアクション動作は |
|---|---|
| Winter '26 以降 | フローで決定 (推奨) |
| Summer '25 以前 | 現在のトランザクションで常に続行 |
トランザクション制御オプションは、すべてのカスタムアクションの [アドバンス設定] のアクションで使用でき、標準アクションではコールアウトを実行する場合にのみ使用できます。
設定の説明
アクションを正常に実行するために新しいトランザクションが必要かどうかを実行時にフローが自動的に判断するようにアクションを設定します。
| 設定 | 説明 |
|---|---|
| フローで決定 (推奨) | フローは、アクションを正常に実行するために新しいトランザクションが必要かどうかを実行時に判断します。このアクションにコールアウトが含まれ、現在のトランザクションに待機中の操作がある場合、現在のトランザクションは、新しいトランザクションでアクションを実行する前に確定されます。フローをデバッグする場合、アクションは常に現在のトランザクションで実行され、コールアウトがあるとエラーが発生する可能性があります。 |
| 常に新しいトランザクションを開始 | このアクションが実行される前に、現在のトランザクションがコミットされます。その後、アクションは新しいトランザクションで実行されます。何らかの理由でアクションが失敗した場合、Salesforce は以前のトランザクションの操作をロールバックできません。デバッグの実行はサポートされていません。 |
| 現在のトランザクションで常に続行 | このアクションは、常に現在のトランザクションで実行されます。現在のトランザクションに待機中の操作があるときにアクションにコールアウトが含まれる場合、フローは失敗します。 |
- トランザクションの開始方法
フローの配布方法により、そのフローのインタビューを実行するトランザクションの開始方法が異なります。 - トランザクションの終了方法
トランザクションの終了時点は、フローに特定の要素が含まれているかどうか、および元々の開始理由がレコードの変更かどうかによって異なります。
トランザクションの開始方法
フローの配布方法により、そのフローのインタビューを実行するトランザクションの開始方法が異なります。
| 配布方法 | トランザクションの開始時点 |
|---|---|
| プロセスビルダー1 | レコードが作成または更新されたとき。 |
| フロー URL | URL にアクセスしたとき。 |
| カスタムボタンまたはカスタムリンク | ボタンまたはリンクがクリックされたとき。 |
| Visualforce ページ | ページにアクセスしたとき。 |
Interview.start() メソッド |
メソッドが それ以外の場合は、メソッド (または親メソッド) が呼び出されたときにトランザクションが開始します。
|
| REST API (カスタムアクションまたはフローリソース) | REST コールが行われたとき。REST コールの実装方法に応じて、制限が他の操作と共有されることがあります。 |
1 フローがワークフロールールによって配布される場合も同様です。フロートリガーワークフローアクションのパイロットプログラムは終了します。組織でパイロットをすでに有効にしている場合は、引き続きフロートリガーワークフローアクションを作成および編集できます。組織でパイロット機能を有効にしなかった場合は、Flow Builder を使用してレコードトリガーフローを作成するか、プロセスビルダーを使用してプロセスからフローを起動します。
トランザクションの終了方法
トランザクションの終了時点は、フローに特定の要素が含まれているかどうか、および元々の開始理由がレコードの変更かどうかによって異なります。
トランザクションの終了時点:
- 画面要素、ローカルアクション要素、待機要素が実行されたとき
- 実行順序が完了したとき (レコードが作成または更新されたときにフローがトリガーされた場合)
- トランザクションのすべてのインタビューが終了したとき
特定のトランザクションで多くの操作が実行され、インタビューがその 1 つである場合、インタビューは他の操作とトランザクションのガバナ制限を共有します。
データローダーで 100 件のケースを更新します。トランザクションの実行順序および組織のカスタマイズによって、次の操作が実行されます。
| ステップ | トランザクションの操作 | 使用する DML ステートメント | 使用する SOQL クエリ |
|---|---|---|---|
| 1 | データベースにケースが保存されますが、まだ確定されていません。 | いいえ | 不可 |
| 2 | ケースの割り当てルールが実行されます。各ケースの所有者が更新されます。 | はい | 不可 |
| 3 | ケースのエスカレーションルールが実行されます。ケースが 10 日間オープンの場合、所有者にメールが送信されます。 | いいえ | 不可 |
| 4 | プロセスが開始されます。 | いいえ | 不可 |
| 5 | プロセスがケースの取引先を検索します。 | いいえ | あり |
| 6 | 取引先が「見込み有り」の場合は、プロセスが Chatter を使用して、取引先に関連付けられた新しいケースがあることを取引先所有者に通知します。 | はい | 不可 |
| 7 | プロセスがフローインタビューを起動します。 | いいえ | 不可 |
| 8 | フローインタビューが、ケースの親取引先とその取引先が有するケースの件数を検索します。 | いいえ | あり |
| 9 | フローインタビューが、取引先のオープンケースが 6 件以上かどうかを確認します。 | いいえ | 不可 |
| 10 | その場合は、フローインタビューが取引先のディビジョンマネージャーを検索し、取引先の Chatter フィードに投稿して、ディビジョンマネージャーと取引先所有者に通知します。 | はい | あり |
| 11 | そうでない場合は、フローインタビューが取引先の Chatter フィードに投稿して、取引先所有者のみに通知します。 | はい | 不可 |

