2023.05.22

画面フローを活用してレコードの絞り込み検索機能を実装する

はじめに

皆さんはレコードを絞り込むとき、どのような機能をお使いでしょうか。
Salesforceでは、レポート・リストビュー・ルックアップ検索条件など、データを絞り込むための様々な機能が用意されていますよね。
今回は、そうした機能とは少し違う、ユーザビリティをより高めてくれるような画面フローの活用方法について紹介したいと思います。

画面フローで実現できること

では画面フローを用いた場合、具体的にどのような絞り込みが可能になるのでしょうか。
画面フローを使用することで、通常の絞り込みでは難しい以下のようなことが実装できます。

①数式などを用いた複雑な検索ロジックを組める
②リレーションを持たないor2階層以上の別オブジェクトを検索条件に使用できる
③レコードの絞り込み手順をユーザに対してナビゲートできる
④検索した結果のレコードを更新or一括更新できる

上記はあくまでも一例になりますが、フロー機能を用いることでより柔軟なレコード検索ができそうですよね!

仕組み

設定方法に進む前に、画面フローを使用したレコード検索の仕組みについて説明したいと思います。

例えば、ユーザが入力した条件値に合致したレコード検索し、そのレコードを更新したい場合、フローの大まかな処理の流れは以下のようになります。

画面フローの流れ

「①検索条件入力」と「③検索結果表示」はフローの画面コンポーネントを用いて実装します。
「②レコード検索」と「④レコード更新」は通常のフロー機能を用いることができます。

ユーザに入力された情報によって条件分岐を加えたり、動的に検索条件を変えたりもできるので、よりプロコードに近いレコード検索を実現できそうですね!

画面フローの設定方法

ここから、活用事例の1つとして、具体的なシナリオを用いた画面フローの設定方法について紹介します。

シナリオ

自動車メーカーの営業担当者は、お客様に紹介する紹介車両レコードを管理しています。
この紹介車両レコードは、ディーラー担当者を参照する参照項目を保持しており、以下の要件をもとにディーラー担当者を絞り込んだ上で値を設定したいと考えています。

■要件
・担当店レコードを「本部」→「支部」→「担当店」の順にレコードを絞り込む
・選択した担当店に所属する、かつ「Available」項目がtrueのディーラー担当者を検索結果に一覧表示する
・選択したディーラー担当者を紹介車両レコードの参照項目に設定し、レコードを更新する

■オブジェクトリレーション
・「紹介車両」オブジェクトは「ディーラー担当者」オブジェクトを参照
・「ディーラー担当者」オブジェクトは「担当店」オブジェクトを参照
※「紹介車両」オブジェクトと「担当店」オブジェクトに直接リレーションはない

オブジェクトリレーション

実際の挙動としては以下のようなイメージになります。

絞り込む担当店の「本部」と「支部」の値を指定します。 ※「本部」項目と「支部」項目はそれぞれ連動関係にある選択リスト項目です

検索結果の担当店を選択し、その担当店に所属するディーラー担当者を選択します。 選択後に「次へ」を押下すると、紹介車両のディーラー担当者に指定した値が設定されます。

設定方法

それでは設定方法です。

①本部・支部リスト値を画面表示する
画面要素を追加し、「連動選択リスト」コンポーネントを配置します。
※本部と支部は連動関係の選択リスト項目
「連動選択リスト」コンポーネントは以下の通りに設定します。
設定箇所 設定値 備考
API参照名 コンポーネントのAPI参照名 選択された値を取得する時に使用します!
オブジェクトAPI参照名 「担当店」オブジェクトのAPI参照名 選択リスト項目が属するオブジェクトのAPI参照名を設定する
選択リスト1のAPI参照名 「本部」項目のAPI参照名 制御選択リスト項目のAPI参照名を設定する
選択リスト2のAPI参照名 「支部」項目のAPI参照名 選択リスト1に連動する選択リスト項目のAPI参照名を設定する

本部・支部リスト値表示用の画面要素

②担当店リスト値を画面表示する
①で設定した画面に後続する画面要素を追加し、「ラジオボタン」コンポーネントを配置します。
「ラジオボタン」コンポーネントは以下の通りに設定します。
設定箇所 設定値 備考
表示ラベル リスト値の上部に表示されるラベル どのリスト値を表示しているのかを示す
API参照名 コンポーネントのAPI参照名 選択された値を取得する時に使用します!
コンポーネントの種類 ラジオボタン 「選択リスト」の形式にも変更できる

担当店リスト値表示用の画面要素

担当店リスト値となるラジオボタンの「選択肢」は、新規リソースを追加し以下の通りに設定します。
設定箇所 設定値 備考
リソース種別 レコード選択肢セット 条件に合致するレコードを取得し、選択リスト値を作成する
API参照名 コンポーネントのAPI参照名
オブジェクト 「担当店」オブジェクトのAPI参照名 取得するレコードのオブジェクトを指定する
検索条件 本部 = ①の連動選択リストAPI参照名.選択リスト1 AND
支部 = ①の連動選択リストAPI参照名.選択リスト2

選択肢表示ラベル Name
選択肢の値 Id 選択された値を元にレコードを取得するため、Idを設定する

担当店リスト値を作成するレコード選択肢セット

③ディーラー担当者リスト値を表示する
②で設定した画面に後続する画面要素を追加し、「ラジオボタン」コンポーネントを配置します。
「ラジオボタン」コンポーネントは以下の通りに設定します。
設定箇所 設定値 備考
表示ラベル リスト値の上部に表示されるラベル どのリスト値を表示しているのかを示す
API参照名 コンポーネントのAPI参照名 選択された値を取得する時に使用します!
コンポーネントの種類 ラジオボタン 「選択リスト」の形式にも変更できる

ディーラー担当者リスト値表示用の画面要素

ディーラー担当者リスト値となるラジオボタンの「選択肢」は、新規リソースを追加し以下の通りに設定します。
設定箇所 設定値 備考
リソース種別 レコード選択肢セット 条件に合致するレコードを取得し、選択リスト値を作成する
API参照名 コンポーネントのAPI参照名
オブジェクト 「ディーラー担当者」オブジェクトのAPI参照名 取得するレコードのオブジェクトを指定する
検索条件 Available = true AND
担当店 = ②のラジオボタンAPI参照名
選択肢表示ラベル Name
選択肢の値 Id 選択された値を元にレコードを取得するため、Idを設定する

ディーラー担当者リスト値を作成するレコード選択肢セット

④紹介車両レコードを更新する
選択されたディーラー担当者の値を参照項目にセットし、紹介車両レコードを更新します。

まずは画面上に開かれている紹介車両Idを取得するための変数を定義します。
新規リソースを追加し、以下の通りに設定します。
設定箇所 設定値 備考
リソース種別 変数
API参照名 recordId 大文字と小文字含め、左記の通りに指定する
データ型 テキスト
フロー外部での可用性 入力で使用可能 = true URLからIdパラメータの値を取得するために指定する

紹介車両Idを取得する変数

③で設定した画面に後続するレコード更新要素を追加し、以下の通りに設定します。
設定箇所 設定値 備考
更新するレコードを検索してその値を設定する方法 レコードを識別する条件を指定し、項目を個別に設定
オブジェクト 「紹介車両」オブジェクトのAPI参照名
レコードを更新する条件の要件 Id = recordId recordIdは画面上の紹介車両Idを取得するための変数
紹介車両の項目値をレコードに設定 ディーラー担当者 = ③のラジオボタンAPI参照名

ディーラー担当者の値をセットするレコード更新要素

以上で設定は完了です。
全体像としては以下のような設定になるかと思います。

フローの全体図

あとは紹介車両オブジェクトの設定画面から、新規アクションを追加して画面フローを起動できるようにすれば完成です!

考慮事項

以下、画面フローを使用して絞り込み検索を実装する上での考慮事項です。

★大量データを処理する必要がある場合は、パフォーマンスを考慮する必要がある
フロー機能はApexガバナ制限と同じ制限が設けられているため、ある程度のデータ量を処理することは可能ですが、100万件以上のようなデータを絞り込み→一括更新する処理はパフォーマンスが著しく低下する恐れがあります。その場合は、Apex一括処理やレポートからデータをエクスポートし、データローダで一括更新するなど別の方法を検討してみてください。

★他機能との使い分け
画面フローを用いることで柔軟なレコード検索が可能ですが、ビジネス要件によっては他機能が適する場合もあります。
・データの細かな分析や、データをエクスポートする必要がある場合
 →レポート
・常に一定のクエリでレコードを絞り込んだり、特定のユーザにのみ公開したりする場合
 →レポートまたはリストビュー
・ルックアップ関係が1つで、シンプルな検索画面でレコード検索したい場合
 →ルックアップ検索条件

まとめ

ここまでレコードを絞り込み検索するための画面フローの活用方法について見てきました。
ユーザに見やすい形で検索フローを示したり、レコードを絞り込むだけでなくロジックを組んで自動化処理を加えたりできる点がフローの魅力ですね。

また今回は単一の条件値を指定する方法を紹介しましたが、画面フローの「チェックボックスグループ」や「複数選択リスト」コンポーネントを用いることで、複数の条件値に合致するレコードを一覧表示することも可能です。

ぜひ、画面フローを活用してみてください。
46 件
     
  • banner
  • banner

関連する記事