MENU
Abo
某SIer勤務。
ITエンジニアです。
日々の学びをつらつらと書いています。
保有資格:
Salesforce認定アドミニストレーター  
Salesforce認定Platformデベロッパー
Salesforce認定上級Platformデベロッパー
カテゴリー
アーカイブ

【Salesforce】画面フロー処理中に入力規則にかかったので障害パスを使用した件

最近画面フローを作成する中でちょくちょく出くわすのが、フローでのレコード作成・更新時に入力規則にひっかかるケースです。

入力規則にかかってエラーとなるのは問題ないのですが表示されるエラーメッセージがよくない。

こんな感じ。

“未対応の障害が発生”と表示され、何が問題なのかわかりません

もちろんエラーメールも送信されるので管理者はメールを見れば入力規則に引っかかったんだなということが分かりますが、ユーザー視点ではわかりませんよね。

このような場合は、フロー内で障害パスを作成し、エラーメッセージを明示化します。

目次

障害パスの利用

障害パスは、レコード処理やアクションでエラーが発生する可能性のある要素に追加します。

今回はレコード作成時に入力規則エラーが発生しているので、レコード作成要素に障害パスを作成します。

レコード作成要素を選択肢、[障害パスを追加]を選択します。

Abo

フローのレイアウトは[自動レイアウト]にしておきます。

続いて追加された障害パスに[画面]要素を追加し、エラーメッセージ表示画面を作成していきます。

画面のプロパティを以下のように設定します。

スクロールできます
表示ラベルエラー画面
API参照名ErrorScreen
ヘッダーを表示チェックなし
フッターを表示チェックあり
[次へ] ボタンまたは [完了] ボタン[次へ] または [完了] を非表示
[前へ] ボタンカスタム表示ラベルを使用:”戻る”
[一時停止] ボタン[一時停止] を非表示

[コンポーネント]から[表示テキスト]を選択し、画面のメインエリアにドラッグします。

次のように値を設定します。

スクロールできます
API参照名ErrorMessage
入力エリア{!$Flow.FaultMessage} ※赤文字にしておくとエラーメッセージ感でます。
Abo

{!$Flow.FaultMessage}でフローのエラーメッセージを取得可能です。

[完了]をクリック後、フローを保存し有効化します。

検証

フローを実行してみると今度は以下のようなエラーが表示されました。

入力規則で定義しているエラーメッセージ(「株式コードは必須入力です」)が表示されているので、ユーザーにも何が問題であるか明示できますね。

ただ、その前後の文章はできれば削除したいですね。

後半のSOAP APIのリンクなんかは開発者しか見ないでしょうし。。。

ということで「おまけコーナー」で無理くりエラーメッセージを加工し、必要な文字のみを抽出してみました。

おまけコーナー

フローのエラーメッセージから入力規則のエラーメッセージを抽出する

先ほどのフローのエラーで表示された文言はこちら。

このエラーは、フローでレコードの作成が試行されたときに発生しました: FIELD_CUSTOM_VALIDATION_EXCEPTION: 株式コードは必須入力です。ExceptionCode の値については、『SOAP API 開発者ガイド』を参照してください。

画面に表示させたいのは、入力規則で定義した”株式コードは必須入力です。”のメッセージです。

その前後の文言は、仮に入力規則のエラーメッセージが変更されたそしても変わらないので、それらの間の文字列を抽出すればよいですね。

ということで作っていきます。

数式作成

フローキャンバスのサイドメニューから[新規リソース]を選択します。

以下のように設定します。

スクロールできます
リソース種別数式
API参照名ValidationError
データ型テキスト
数式/*文字列「FIELD_CUSTOM_VALIDATION_EXCEPTION:」と「ExceptionCode 」をそれぞれ「θ」と「λ」に置換し、それらの間に表示される入力規則のエラーメッセージを返す */
MID(SUBSTITUTE(SUBSTITUTE({!$Flow.FaultMessage}, “FIELD_CUSTOM_VALIDATION_EXCEPTION: “, “θ” ), “ExceptionCode “, “λ”),
FIND( “θ”,SUBSTITUTE(SUBSTITUTE({!$Flow.FaultMessage}, “FIELD_CUSTOM_VALIDATION_EXCEPTION: “, “θ”),”ExceptionCode “, “λ”))+1,
FIND(“λ”,SUBSTITUTE(SUBSTITUTE({!$Flow.FaultMessage}, “FIELD_CUSTOM_VALIDATION_EXCEPTION: “, “θ”),”ExceptionCode “, “λ”))-FIND(“θ”,SUBSTITUTE(SUBSTITUTE({!$Flow.FaultMessage},”FIELD_CUSTOM_VALIDATION_EXCEPTION: “, “θ”),”ExceptionCode “, “λ”))-1)

続いて先ほど障害パスに追加した画面を選択し、[表示テキスト]に上記で作成した数式を埋め込みます。

[完了]をクリックし、フローを保存、有効化します。

検証

フローを実行すると、

入力規則のエラーメッセージだけが表示されました。

これでユーザー側も何が問題だったか一目で分かりますね。

おわりに

今回は画面フローにおける障害パスの利用について簡単にご紹介しました。

今回は触れていませんが、障害パスでよく利用されるのはエラー発生時にメール通知をするアクションを実行するなどでしょうか。

いずれにせよエラー発生時により詳細な情報を取得したい場合に有効ですね。

Apexでもエラーハンドリングがあるので同じような使い方かなと思っています。

有効に使っていきたいです。

以上です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

某SIer勤務。
Salesforceエンジニアです。
日々の学びをつらつらと書いています。
Certified Administrator
Certified Platform DeveloperⅠ
Certified Platform DeveloperⅡ
Certified Sales Cloud Consultant

コメント

コメントする

CAPTCHA


目次