障害パスでフローエラーを処理する
学習の目的
この単元を完了すると、次のことができるようになります。
- 未対応の障害の一般的な原因を特定する。
- 障害パスを使用してフローのエラーを処理する。
- 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/2cb0c4ccf9b7da001ac1bac0a217a766_i.12.png)
障害パスを追加できる要素は、[Get Records (レコードを取得)]、[Create Records (レコードを作成)]、[Update Records (レコードを更新)]、[Delete Records (レコードを削除)]、[Action (アクション)] です。
FaultMessage を使用してわかりやすいエラーメッセージを表示する
Salesforce は、フローの種別ごとに異なる方法でエラーを処理します。例として、画面フローを見てみましょう。Pyroclastic, Inc. には、営業担当がシンプルな商談を作成する手順を案内するフローがあります。ですが、このフローを実行するユーザーは「unhandled fault」エラーに遭遇することがあるため、その際にエラーの内容を詳しく提供するようにフローを修正します。
これは画面フローですので、障害パスで画面要素を使用して 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/7c5195a6d779bc5ecc033c2fc658e85a_i.13.png)
- 障害パスで
をクリックします。
-
[Screen (画面)] を選択します。
- [Label (表示ラベル)] に
Fault Screen(障害画面) と入力します。
- [Components (コンポーネント)] サイドバーで、[Display Text (表示テキスト)] を選択して、画面キャンバスに表示テキストの画面コンポーネントを追加します。
- 画面コンポーネントの [API Name (API 参照名)] に
FaultTextと入力します。
- [Insert a resource (リソースを挿入)] 項目で [Running Flow Interview (実行中のフローインタビュー)] を選択し、[FaultMessage] を選択します。
FaultMessage グローバル変数は、詳細なエラーメッセージを提供します。このメッセージは少し技術的な内容になる場合がありますが、何が問題だったのかをトラブルシューティングするうえで重要な情報が含まれています。
- リッチテキスト項目で、{!$Flow.FaultMessage} の後に改行を追加し、次のテキストを追加します。This text block displays details about what the user entered on the screen. (Because Name, Stage and Account are record fields, their values are stored in their record variable.) These details might help to identify what went wrong.
Name (名前): {!oppVar.Name} Stage (フェーズ): {!oppVar.StageName} Close Date (完了予定日): {!Close_Date} Account (取引先): {!oppVar.AccountId}
-
[Done (完了)] をクリックします。
- フローを保存します。
障害メッセージを確認する
[Debug (デバッグ)] ボタンを使用してフローを実行し、障害パスの画面がどのように表示されるかを確認しましょう。
-
[Debug (デバッグ)] をクリックします。
- [Debug (デバッグ)] パネルで、[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 では必須であるため、画面でもこの項目は必須です。
リソース

