画面フローの「電話(Phone)」コンポーネントにおける「パターン(pattern)」について

By | October 1, 2021

前書き

タイトル通り、画面フローの「電話(Phone)」コンポーネントにおける「パターン(pattern)」の仕様について扱いたいと思います。

電話(Phone)コンポーネントに関する公式記事はこちら

「パターン(pattern)」とは?

電話コンポーネントのパターン項目は、その他のコンポーネントにおける入力検証(Validation)のための数式に相当します。

ただし、一般的な入力規則や(画面コンポーネントにおける)入力検証とは異なり、数式を利用せずに正規表現をそのまま入力する必要があります。

具体例

日本の一般的な電話番号の形式(※ハイフンあり)を例に、「オブジェクトの”入力規則”の数式」・「フローの”入力を検証”の数式」・「電話コンポーネントの”パターン”」をそれぞれ比較してみたいと思います。

まず、日本の一般的な電話番号の形式を表現する正規表現は↓です。

^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$

上記正規表現は、0-9の数字の2~4回の繰り返し・ハイフン・ 0-9の数字の2~4回の繰り返し・ハイフン・0-9の数字の3~4回の繰り返しのパターンを表現しています。

これをSalesforceに適当する場合、それぞれ以下のようになります。

■オブジェクトの「入力規則」でチェックする場合

NOT(ISBLANK(Phone))&&REGEX(Phone,"^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$")

■フローの「入力を検証」でチェックする場合

NOT(ISBLANK({!Phone} ))&&REGEX({!Phone},"^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$")

■電話コンポーネントの「パターン」でチェックする場合

^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$

エラーメッセージについて

画面フローのその他のコンポーネントと異なり、「電話」コンポーネントはエラーメッセージの変更ができません。

下記画像の通り、入力規則と異なる場合は“エントリは許可されているパターンと一致しません。”というエラーメッセージが表示されます。

補足:「電話」コンポーネントの欠陥

さて、ここまで「電話」コンポーネントの「パターン」設定の仕様について確認してきましたが、実は「電話」コンポーネントには大きな欠陥があります。

それは、画面遷移後に戻ると過去の入力内容が消えてしまうという問題です。

■問題の再現(Repro)

下記のように任意の値を入力した上で、画面右下の「次へ」をクリックします。

遷移先の画面で、「前へ」をクリックして上記画面に戻ります。

すると、以前入力した内容が消えています。

結論

下記の欠陥により、「電話」コンポーネントはイマイチ。

・Validationに数式を利用できないので、複雑な入力検証に対応できない。

・エラーメッセージを変更できない上に、標準のエラーメッセージが意味不明。

・一度画面遷移して戻ると、過去の入力内容が消えてしまう。

「テキスト」コンポーネントを利用しようノ