Skip to main content

障害パスでフローエラーを処理する

学習の目的

この単元を完了すると、次のことができるようになります。

  • 未対応の障害の一般的な原因を特定する。
  • 障害パスを使用してフローのエラーを処理する。
  • $Flow.FaultMessage を使用して、より詳細なエラーメッセージを伝える。
メモ

メモ

日本語で受講されている方へ
Challenge は日本語の Trailhead Playground で開始し、かっこ内の翻訳を参照しながら進めていってください。Challenge での評価は英語データを対象に行われるため、英語の値のみをコピーして貼り付けるようにしてください。日本語の組織で Challenge が不合格だった場合は、(1) この手順に従って [Locale (地域)] を [United States (米国)] に切り替え、(2) [Language (言語)] を [English (英語)] に切り替えてから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしてみることをお勧めします。

翻訳版 Trailhead を活用する方法の詳細は、自分の言語の Trailhead バッジを参照してください。

Note

前のバッジ「フローの実装 I」を修了している必要があります (その Playground を再利用するためです)。パッケージがインストールされている必要がありますが、パッケージのインストールについてはこのバッジでは扱いません。

フローで最も嫌がられるエラーメッセージ

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. (このページのエラーを確認してください。)

  • We can’t save this record because the “Closed Won Opportunities” process failed. Give your Salesforce admin these details. <b>An unhandled fault has occurred in this flow</b> An unhandled fault has occurred while processing the flow. Please contact your system administrator for more information. (「Closed Won Opportunities (成立した商談)」処理失敗により、このレコードを保存できません。Salesforce システム管理者に次の詳細を報告してください。このフローで未対応の障害が発生しました。フローの処理中に未対応の障害が発生しました。詳細は、組織のシステム管理者にお問い合わせください。)

メッセージがどのように表示される場合でも、未対応の障害が発生するとフローの実行は停止し、ユーザーは最初からやり直す必要があります。

ここでは、未対応の障害の一般的な原因をいくつか紹介します。

  • フローが、実行ユーザーがアクセスできない項目を含むレコードを作成しようとした。
  • フローが、実行ユーザーがアクセスできないレコードを編集しようとした。
  • フローが、必須項目を設定せずにレコードを作成しようとした。
  • フローが、文字数が正しくない ID を使用してレコードを編集しようとした。
  • フローが、無効なメールアドレスにメールを送信しようとした。
  • フローが、入力規則によってブロックされている処理を実行しようとした。
Note

この単元では、フローを実行するユーザーに表示されるエラーメッセージについて説明します。すべてのフローエラーについて、Salesforce はフローとエラーの詳細を含むメールも送信します。詳細については、Salesforce ヘルプの「フロー実行時エラーのトラブルシューティング」および「フローやプロセスのエラーメール受信者の選択」を参照してください。

予防は最良の対策

ですが、安心してください。フローをリリースする前に特定の手順を実行することで、このエラーメッセージのほとんどを防止できます。ここで取り上げるのは、もう 1 つの開発者の概念であるエラー処理です。

危険な化学物質のフラスコに「Error (エラー)」と書かれたラベルが貼られ、実験室の作業員が防護具を着用して慎重に取り扱っているイラスト。

エラー処理とは、エラーがユーザーや自動化に与える影響を制御することです。たとえば、入力規則はエラー処理の 1 つです。入力規則は、ユーザーによる誤操作を事前に想定し、誤操作時にはエラーメッセージを表示して、正しい操作を具体的に伝えることが目的です。フローでは、何が問題だったのかの詳細を取得し、その情報をユーザーに提供する要素を追加できます。これにより、「An unhandled fault has occurred (未対応の障害が発生しました)」といった曖昧なメッセージよりも多くの情報をユーザーに伝えることができます。どちらの方法もユーザーにより良い指導を提供することで、より良いユーザーエクスペリエンスにつなげます。

ほとんどの未対応の障害エラーに対処するには、Flow Builder の障害パス機能を使用します。障害パスは、Flow Builder キャンバス上の副次的なパスで、元の要素で未対応の障害が発生した場合にのみ実行されます。フローは、「An unhandled fault has occurred (未対応の障害が発生しました)」と表示する代わりに、メインパスではなく障害パスに分岐します。発生したエラーの詳細を提供する要素は、障害パスに配置するのが最適です。

フローの [Create Records (レコードを作成)] 要素からの障害パス。

障害パスを追加できる要素は、[Get Records (レコードを取得)]、[Create Records (レコードを作成)]、[Update Records (レコードを更新)]、[Delete Records (レコードを削除)]、[Action (アクション)] です。

$Flow.FaultMessage を使用してわかりやすいエラーメッセージを表示する

Salesforce は、フローの種別ごとに異なる方法でエラーを処理します。例として、画面フローを見てみましょう。Pyroclastic, Inc. には、営業担当がシンプルな商談を作成する手順を案内するフローがあります。ですが、このフローを実行するユーザーは「unhandled fault」エラーに遭遇することがあるため、その際にエラーの内容を詳しく提供するようにフローを修正します。

これは画面フローですので、障害パスで画面要素を使用して $Flow.FaultMessage グローバル変数を表示します。

  1. [Guided Opp Create (商談作成ガイド)] フローを開きます。
  2. [Create Opportunity (商談を作成)] 要素をクリックします。
  3. [Add Fault Path (障害パスを追加)] を選択します。
    [Copy Element (要素をコピー)]、[Cut Element (要素を切り取り)]、[Delete Element (要素を削除)]、[Add Fault Path (障害パスを追加)] の選択肢が表示されている [Create Records (レコードを作成)] 要素メニュー。
  4. 障害パスで 要素を追加 をクリックします。
  5. [Screen (画面)] を選択します。
  6. [Label (表示ラベル)] に Fault Screen (全画面) と入力します。
  7. [Components (コンポーネント)] サイドバーで、[Display Text (表示テキスト)] を選択して、画面キャンバスに表示テキストの画面コンポーネントを追加します。
  8. 画面コンポーネントの [API Name (API 参照名)] に FaultText と入力します。
  9. [Insert a resource (リソースを挿入)] 項目で、[$Flow] を選択してから [FaultMessage] を選択します。
    $Flow.FaultMessage グローバル変数は、詳細なエラーメッセージを提供します。このメッセージは少し技術的な内容になる場合がありますが、何が問題だったのかをトラブルシューティングするうえで重要な情報が含まれています。
  10. リッチテキスト項目で、{!$Flow.FaultMessage} の後に改行を追加し、次のテキストを追加します。
    Name (名前): {!oppVar.Name}
    Stage (フェーズ): {!oppVar.StageName}
    Close Date (完了予定日): {!Close_Date}
    Account (取引先): {!oppVar.AccountId}
    このテキストブロックには、ユーザーが画面で入力した内容の詳細が表示されます。(Name (名前)、Stage (フェーズ)、Account (取引先) はレコード項目であるため、それぞれの値はレコード変数に保存されます。) これらの詳細は、問題の原因を特定するのに役立つ場合があります。
    The Properties sidebar for the Display Text element corresponding to the previous step.
  11. [Done (完了)] をクリックします。
  12. フローを保存します。

障害メッセージを確認する

[Debug (デバッグ)] ボタンを使用してフローを実行し、障害パスの画面がどのように表示されるかを確認しましょう。

  1. [Debug (デバッグ)] をクリックします。
  2. [Debug flow (フローをデバッグ)] ウィンドウで、[Run (実行)] をクリックします。
  3. 次のデータを入力します。
    • Opportunity Name (商談名): UA Generators
    • Stage (フェーズ): Prospecting (プロスペクティング)
    • Close Date (完了予定日): (デフォルトの日付を削除して [Close Date (完了予定日)] を空白のままにする)
    • Account Name (取引先名): (University (大学) と入力してから University of Arizona (アリゾナ大学) を選択する)
      この手順に対応するデバッグウィンドウ。
  4. [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 (完了予定日)] がありません)

障害メッセージには問題を解決するのに十分な詳細が含まれています。[Close Date (完了予定日)] 項目は Salesforce では必須であるため、画面でもこの項目は必須です。

Note

組織内に、障害パスに同じ要素を持つ複数のフローが存在することはよくあります。たとえば、多くの画面フローでは、$Flow.FaultMessage を表示する 1 つの画面要素のみを含む障害パスが必要になる場合があります。組織の状況に当てはまるのであれば、障害パスの要素のみを含む専用の自動起動フローを作成し、その自動起動フローを複数の画面フローからサブフローとして呼び出すことを検討してください。この方法により、フローを作成する際の時間と手間を節約できます。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む