障害パスでフローエラーを処理する
学習の目的
この単元を完了すると、次のことができるようになります。
- 未対応の障害の一般的な原因を特定する。
- 障害パスを使用してフローのエラーを処理する。
- $Flow.FaultMessage を使用して、より詳細なエラーメッセージを伝える。
フローで最も嫌がられるエラーメッセージ
Salesforce で画面フローや自動起動フローを使っていると、フロー作成者が最も嫌がるエラーメッセージがユーザーから報告されることがあります。
An unhandled fault has occurred in this flow (このフローで未対応の障害が発生しました)
An unhandled fault has occurred while processing the flow. Please contact your system administrator for more information. (フローを処理中に未対応の障害が発生しました。詳細は、組織のシステム管理者にお問い合わせください。)
このエラーメッセージはフローで何かが正しく動作しなかったことを意味しますが、何が問題なのかまでは教えてくれません。さらに厄介なことに、この詳細や指示が含まれていない曖昧なエラーメッセージは、フローを実行しているユーザーに表示されるためユーザーを混乱させてしまいます。
未対応の障害は、エラーが発生したフローであればどのフローでも報告されますが、エラーメッセージはフローの種別によって表示が異なることがあります。たとえば、レコードトリガーフローの場合は、次のように表示されます。
|
🚫 We hit a snag. (問題が発生しました。) Review the errors on this page. (このページのエラーを確認してください。)
|
|---|
メッセージがどのように表示される場合でも、未対応の障害が発生するとフローの実行は停止し、ユーザーは最初からやり直す必要があります。
ここでは、未対応の障害の一般的な原因をいくつか紹介します。
- フローが、実行ユーザーがアクセスできない項目を含むレコードを作成しようとした。
- フローが、実行ユーザーがアクセスできないレコードを編集しようとした。
- フローが、必須項目を設定せずにレコードを作成しようとした。
- フローが、文字数が正しくない ID を使用してレコードを編集しようとした。
- フローが、無効なメールアドレスにメールを送信しようとした。
- フローが、入力規則によってブロックされている処理を実行しようとした。
予防は最良の対策
ですが、安心してください。フローをリリースする前に特定の手順を実行することで、このエラーメッセージのほとんどを防止できます。ここで取り上げるのは、もう 1 つの開発者の概念であるエラー処理です。

エラー処理とは、エラーがユーザーや自動化に与える影響を制御することです。たとえば、入力規則はエラー処理の 1 つです。入力規則は、ユーザーによる誤操作を事前に想定し、誤操作時にはエラーメッセージを表示して、正しい操作を具体的に伝えることが目的です。フローでは、何が問題だったのかの詳細を取得し、その情報をユーザーに提供する要素を追加できます。これにより、「An unhandled fault has occurred (未対応の障害が発生しました)」といった曖昧なメッセージよりも多くの情報をユーザーに伝えることができます。どちらの方法もユーザーにより良い指導を提供することで、より良いユーザーエクスペリエンスにつなげます。
ほとんどの未対応の障害エラーに対処するには、Flow Builder の障害パス機能を使用します。障害パスは、Flow Builder キャンバス上の副次的なパスで、元の要素で未対応の障害が発生した場合にのみ実行されます。フローは、「An unhandled fault has occurred (未対応の障害が発生しました)」と表示する代わりに、メインパスではなく障害パスに分岐します。発生したエラーの詳細を提供する要素は、障害パスに配置するのが最適です。
![フローの [Create Records (レコードを作成)] 要素からの障害パス。](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/flow-implementation-2/handle-flow-errors-with-fault-paths/images/ja-JP/70bdac19620bdefc2e101e9a634bbfea_i.12.jpg)
障害パスを追加できる要素は、[Get Records (レコードを取得)]、[Create Records (レコードを作成)]、[Update Records (レコードを更新)]、[Delete Records (レコードを削除)]、[Action (アクション)] です。
$Flow.FaultMessage を使用してわかりやすいエラーメッセージを表示する
Salesforce は、フローの種別ごとに異なる方法でエラーを処理します。例として、画面フローを見てみましょう。Pyroclastic, Inc. には、営業担当がシンプルな商談を作成する手順を案内するフローがあります。ですが、このフローを実行するユーザーは「unhandled fault」エラーに遭遇することがあるため、その際にエラーの内容を詳しく提供するようにフローを修正します。
これは画面フローですので、障害パスで画面要素を使用して $Flow.FaultMessage グローバル変数を表示します。
- [Guided Opp Create (商談作成ガイド)] フローを開きます。
-
[Create Opportunity (商談を作成)] 要素をクリックします。
-
[Add Fault Path (障害パスを追加)] を選択します。
![[Copy Element (要素をコピー)]、[Cut Element (要素を切り取り)]、[Delete Element (要素を削除)]、[Add Fault Path (障害パスを追加)] の選択肢が表示されている [Create Records (レコードを作成)] 要素メニュー。](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/flow-implementation-2/handle-flow-errors-with-fault-paths/images/ja-JP/f7be74cd61ec8b11f2f23cb581073d1d_i.13.jpg)
- 障害パスで
をクリックします。
-
[Screen (画面)] を選択します。
- [Label (表示ラベル)] に
Fault Screen(全画面) と入力します。
- [Components (コンポーネント)] サイドバーで、[Display Text (表示テキスト)] を選択して、画面キャンバスに表示テキストの画面コンポーネントを追加します。
- 画面コンポーネントの [API Name (API 参照名)] に
FaultTextと入力します。
- [Insert a resource (リソースを挿入)] 項目で、[$Flow] を選択してから [FaultMessage] を選択します。
$Flow.FaultMessage グローバル変数は、詳細なエラーメッセージを提供します。このメッセージは少し技術的な内容になる場合がありますが、何が問題だったのかをトラブルシューティングするうえで重要な情報が含まれています。
- リッチテキスト項目で、{!$Flow.FaultMessage} の後に改行を追加し、次のテキストを追加します。このテキストブロックには、ユーザーが画面で入力した内容の詳細が表示されます。(Name (名前)、Stage (フェーズ)、Account (取引先) はレコード項目であるため、それぞれの値はレコード変数に保存されます。) これらの詳細は、問題の原因を特定するのに役立つ場合があります。
Name (名前): {!oppVar.Name} Stage (フェーズ): {!oppVar.StageName} Close Date (完了予定日): {!Close_Date} Account (取引先): {!oppVar.AccountId}
-
[Done (完了)] をクリックします。
- フローを保存します。
障害メッセージを確認する
[Debug (デバッグ)] ボタンを使用してフローを実行し、障害パスの画面がどのように表示されるかを確認しましょう。
-
[Debug (デバッグ)] をクリックします。
- [Debug flow (フローをデバッグ)] ウィンドウで、[Run (実行)] をクリックします。
- 次のデータを入力します。
- Opportunity Name (商談名):
UA Generators - Stage (フェーズ): Prospecting (プロスペクティング)
- Close Date (完了予定日): (デフォルトの日付を削除して [Close Date (完了予定日)] を空白のままにする)
- Account Name (取引先名): (
University(大学) と入力してから University of Arizona (アリゾナ大学) を選択する)
- Opportunity Name (商談名):
-
[Next (次へ)] をクリックします。
商談では常に [Close Date (完了予定日)] 項目が必須であるため、完了予定日を削除すると、フローでエラーが発生して障害パスに進むことが想定されます。![デバッグ結果には、手順 3 で入力した情報と、次のエラーメッセージが表示されます。This error occurred when the flow tried to create records: REQUIRED_FIELD_MISSING: Required fields are missing: CloseDate (フローがレコードを作成しようとした際に次のエラーが発生しました。REQUIRED_FIELD_MISSING: 必須項目の [CloseDate (完了予定日)] がありません)](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/flow-implementation-2/handle-flow-errors-with-fault-paths/images/ja-JP/78e87b99e5d9ed43e941374e7da74f64_i.18.jpg)
障害メッセージには問題を解決するのに十分な詳細が含まれています。[Close Date (完了予定日)] 項目は Salesforce では必須であるため、画面でもこの項目は必須です。
リソース

