2024年2月リリースのSalesforce Spring’24で新たに画面フローで登場した「繰り返し」コンポーネントを触ってみます。
ユーザが動的に入力枠の増減させることが可能になっています。今まではVisualforceやLWCで画面開発をするしかありませんしたが、フローで手軽に出来るのは画期的な進化です。Spring’24時点ではベータ版です。
アイデア次第で機能実現の選択肢が大幅に増えます。
完成形イメージ
取引先レコードに画面フローを1つ配置、姓と名が入力できるようにします。
「+Add」ボタンを押すともう1ペア姓と名が追加されます。
姓と名が合計2ペア表示されるので、2名分の取引先責任者を一括で入力できます。
保存することで取引先責任者2名を一括で保存できました。
フロー作成
画面フローにて「繰り返し」コンポーネントが新たに使えるようになりました。
コンポーネントを画面へ配置すると画面右下にベータ版であることが表示されます。
繰り返しコンポーネントに設定できるプロパティはAPI参照名のみのようです。
繰り返しコンポーネント内にテキストを2つ配置し、姓と名に表示名を変更します。
次にもう1つ画面要素を追加します。「repeater」変数の「AllItems」に姓名のテキストが格納されているので、どう格納されているか確認用にこの画面要素を作成しておきます。
次にループ要素でrepeater.AllItemsを操作しています。
ちなみにrepeater.AllItemsを「変換」要素で使用できればループを使用せずとも取引先責任者コレクションへ一括変換できるかなと思いましたが、下記ソースデータに候補が表示されず諦めました。
ループ内で姓と名を取り出し、取り出し責任者の姓と名に渡します。
ループ内でのInsertはガバナ制限的にはご法度ですが、今回は簡易的な検証のためこの方法にしています。本来は取引先責任者コレクションに取引先責任者単一レコードを割り当て追加しておき、ループ外で最後にコレクションをInsertしましょう。取引先責任者の親になる取引先はrecordIdを指定しておきます。
最終的にこのようなフローになりました。
挙動確認
本記事最初で完成形として確認したように、+Addボタン にて入力枠を増やしたりRemoveボタン で減らしたりが可能です。
入力した内容はrepeater.AllItemsへ下記のような形式として保存されるようです。
そして最終的に取引先責任者として保存できました。
懸念点
フローで出来ることが増えるため、画期的な機能追加であることは間違いありません。
一方で”繰り返し”コンポーネントではAPI参照名しか指定ができないため、下記のような制御は出来ないように見えます。
・+Addボタンを押せる回数が制御できないように見える
・+AddボタンやRemoveボタンの表示名を変更できないように見える
特に+Addボタンを無制限に押せてしまう挙動だとすると、ループで処理する際にガバナ制限抵触する可能性があります。後続処理でコレクション内の行数判定などを使い制御する必要がありそうです。