🦥
Data Cloudに格納されているデータをSalesforceの任意のレコードページでリストビューとして取得する
TL;DR
Data Cloudには多種多様なデータを取得できるため、収集されたデータをSalesforceのレコードに紐づいてSalesforceのレコードページで表示する仕組みを説明します。
今回は特に下記のことを意識して機能を試してみました。
- できる限り消費するクレジットを節約できるようにする
- 最大の柔軟性を保つように任意のレコードページでも実現できるようにする
- できる限りノーコードで実現する
- できる限りカスタムオブジェクトを消費しない
最終的に実現できたイメージ
Data Cloudにある機器に関連する過去の修理依頼履歴をService Cloudの画面からボタンをクリックするたびに取得する
ソリューション
今回はSalesforceの画面Flowを利用してData Cloudのデータを取得し、Data Tableコンポーネントで表示することを実現しました。全体の作りは簡単ですが、Data Cloudのデータを取得した後の処理が従来Sales CloudやService CloudなどCRM側からデータを取得する際の処理と少し違いがあるためご注意ください。
最終的に構築した画面Flowイメージ
実装の流れ
- まず、最初に本Flowを埋め込むレコードページのレコードIDをベースに関連のレコード情報を取得します。レコードページからレコードIDを取得するにはFlowに「入力で利用可能」にチェックを入れたテキスト変数を用意します。これによって機器の名称を取得します。
- 「履歴取得」ノードでData Cloudのオブジェクトから条件に合う全レコードを取得できる
- Data Cloudから取得したデータを格納するレコードコレクションは一部のノードでしか利用できません。レコードコレクション変数の前にある雲アイコンにご注目ください。このアイコンがある変数はループと画面表示コンポーネントでの表示テキストのみ利用可能です。
- Data Cloudのレコードコレクションを通常のノードで利用するためにはループの中で各レコードを別レコード変数へ割り当てる必要があります。
- 割り当て先のレコード変数を作成するためにCRM側でData Cloudと同じ項目を持つ空のオブジェクトを作成するか、標準のCaseオブジェクトを借りてレコード変数をFlowで用意する必要があります。今回はできる限りカスタムオブジェクトを利用しないようにするために、Caseオブジェクトを借りてレコード変数を作成しました。
各項目をマッピングする際に同じデータタイプの項目同士をマッピングするように注意する必要があります。 - そしてキャッシュ用レコード変数を同じく作成されたCaseオブジェクトのレコードコレクション変数に追加します。
- これにより、画面コンポーネントでData Tableを選び、上記のレコードコレクション変数を指定してリストビューを表示できるようになりました。
上記の画面フローを機器オブジェクトのレコードページに組み込むことで、機器名に紐づく修理依頼履歴を取得できるようになりました。
注意事項
FlowのLimitにより、大量のレコードをData Cloudから取得したり、処理することはできないため
- 参考: トランザクション単位のフローの制限
データを要件に沿って日付やその他条件を追加して絞って表示したり、複数画面(トランザクション)に分けて部分的に取得する形が良いかと思います。
※本記事は、私が所属する会社とは一切関係のない事柄です。
Discussion