画面にさらなるオプションを追加する
学習の目的
この単元を完了すると、次のことができるようになります。
- データテーブルを使用してユーザーに選択肢の詳細を表示する。
- フロー画面に直接レコード項目を配置する。
- フロー画面に参照項目を配置する。
- ユーザーがファイルをアップロードできる画面を作成する。
始める前に
この単元の演習には、追加のカスタム項目が必要です。ケースオブジェクトにカスタム項目を作成して、以下の詳細を設定します。
- データ型: 参照関係
- 関連先: ユーザー
- 項目の表示ラベル:
QA Reviewer
(QA レビュー担当者) - 項目名:
QA_Reviewer
- 他の設定はすべてデフォルト値を維持
ユーザーが情報に基づいて選択できるようにする
Pyroclastic のサポートチームから Flo のところに、[Create Case for Contact (取引先責任者のケースを作成)] フローに関するさらなるフィードバックが届きました。まず、質問を更新して、サポートエージェントが取引先責任者レコードを選択しやすくして欲しいということです。次に、原因と関連取引先をキャプチャする質問を追加することを望んでいます。
ユーザーがレコードの中から 1 つ選択する際、レコード名以上の情報を求めることがよくあります。サポートエージェントがケースの最適な連絡窓口を選択するためには、取引先責任者に関するさらなる情報が必要です。具体的には次の情報を求めています。
- 役職: 問題に対処する適切なロールであることを確認する。
- メール: サポートエージェントがフォローアップに使用する。
- 電話番号: サポートエージェントがフォローアップに使用する。
ユーザーがレコードを選択できるだけの情報を提示するために、データテーブルコンポーネントを使用します。このコンポーネントはテーブル形式で、各行にレコード、各列にレコードの項目が表示されます。
データテーブルコンポーネントを追加する
- [Create Case for Contact (取引先責任者のケースを作成)] フローを開きます。
- [Create Case (ケースを作成)] 要素で をクリックして [Questions Page 2 (質問ページ 2)] > [Point of Contact (連絡窓口)] 行の [Contact ID (取引先責任者 ID)] を削除します。
- [質問] 要素の前に、取引先の取引先責任者を取得する [Get Records (レコードを取得)] 要素を追加します。
- Label (表示ラベル):
Get Contacts
(取引先責任者を取得) - Object (オブジェクト): Contact (取引先責任者)
- Condition Requirements (条件の要件): [All Conditions Are Met (AND) (すべての条件に一致 (AND))]
- Field (項目): AccountId
- Operator (演算子): Equals (次の文字列と一致する)
- Value (値):inputAccountId
- How Many Records to Store (保存するレコード数): All Records (すべてのレコード)
- [Questions Page 2 (質問ページ 2)] を開いて、[Point_of_Contact] コンポーネントにカーソルを合わせます。 をクリックして、そのコンポーネントを削除します。
- [データテーブル] コンポーネントを追加して、ユーザーが適切な取引先責任者を選択できるようにします。
- [コンポーネント] サイドバーから [データテーブル] を画面キャンバスにドラッグします。
- [API Name (API 参照名)] に、
PointOfContact
と入力します。
- [Label (表示ラベル)] に、
Point of Contact
(連絡窓口) と入力します。 -
[テーブルのタイトルとして表示ラベルを使用] を選択します。
- [ソースコレクション] で [Get_Contact の取引先責任者] を選択します。
-
[行の設定] をクリックしてセクションを開きます。
- [Row Selection Mode (行選択モード)] で [Single (単一)] を選択します。
-
[ユーザーが選択することを必須にする] を選択します。
-
[列の設定] をクリックしてセクションを開きます。
- [ソース項目] で [名前] (氏名) を選択します。
-
[Done (完了)] をクリックしますが、ここでクリックするのは [Column Options (列オプション)] の [Done (完了)] で、[Edit Screen (画面を編集)] ウィンドウの一番下にあるものではない点に注意します。
-
[+Add Column (+列を追加)] をクリックして、ステップ j ~ k を繰り返し、[Title (役職)]、[Email (メール)]、[Phone (電話)] (会社電話) の各項目に列を追加します。
-
[Done (完了)] をクリックして、[Questions Page 2 (質問ページ 2)] 要素を閉じます。
最小限の設定で既存の項目をすばやく追加する
オブジェクトの項目を画面フローに効率よく追加する方法は、レコード項目コンポーネントを使用することです。(この機能はフローの動的フォームと呼ばれていました。)レコード項目コンポーネントは、Salesforce オブジェクトの項目とよく似ています。レコード項目コンポーネントを使用する場合は、オブジェクトを表すレコード変数を選択して、画面キャンバスに項目を好きなだけドラッグします。5 個でも、10 個でも、それ以上でも、画面に項目をすぐさま追加できます!
それほど優れた機能ならば、なぜ今まで言及されなかったのでしょうか? その理由は、一定の制限があるからです。レコード項目コンポーネントはそれぞれ、表示ラベル、選択リスト値、必須性など、大半の設定を対応する項目から継承します。フローでその設定を変更することはできません。
Pyroclastic の場合、ケースの [説明] 項目と [件名] 項目は Salesforce で必須項目と定義されていませんが、サポートチームはフローで必須にしたいと考えています。フローと対応する項目で必須性が一致しないため、この 2 つの項目にレコード項目コンポーネントを使用することはできません。そのため、より柔軟な設定オプションがあるロングテキストエリアコンポーネントとテキストコンポーネントを使用しました。
一部の項目プロパティはレコード項目コンポーネントから継承され、変更できませんが、デフォルト値やレコードタイプの検索条件など、レコード項目コンポーネントにまったく反映されない項目プロパティもあります。詳細は、フロー画面へのレコード項目の追加を参照してください。
選択リストレコード項目コンポーネントとルックアップレコード項目コンポーネントを追加する
Flo のところに Pyroclastic のサポートチームからまたもやフィードバックが届きました。今度は、[Create Case for Contact (取引先責任者のケースを作成)] フローで、原因と関連取引先を収集したいということです。項目名、選択リスト値、必須性がケースオブジェクトと一致しているため、レコード項目コンポーネントのうってつけの候補です。
レコード項目コンポーネントは、他の画面コンポーネントやフロー要素とは設定方法が異なります。オブジェクトを直接選択するのではなく、特定のオブジェクトに対応するレコード変数を使用します。既存のレコード変数を選択するか、新しいレコード変数を作成することができます。サポートチームが使いたい新しい項目にアクセスするために、ケースオブジェクトに基づいてレコード変数を作成します。
- [Questions Page 2 (質問ページ 2)] 画面で、左ペインの [項目] タブをクリックします。
- [レコード変数] で [+新規リソース] を選択します。
- [API Name (API 参照名)] に、
caseVar
と入力します。
- [Object (オブジェクト)] で [Case (ケース)] を選択します。
-
[Done (完了)] をクリックします。
[Record Variable (レコード変数)] 項目に [caseVar] リソースが表示され、この変数でサポートされる項目がリストされます。
- [項目] リストから [原因] を画面キャンバスにドラッグします。
- [項目] リストから [QA Reviewer (QA レビュー担当者)] を画面キャンバスにドラッグします。
これで選択リスト項目と参照項目が画面フローに追加され、名前、オブジェクト設定、選択リスト値もすでに設定されています。5 個、10 個、あるいはそれ以上の項目を追加する必要がある場合に、どれほど迅速に処理できるか想像してみてください!
設定が異なる参照項目を作成する
この画面フローの構築中に、Flo がさらなる要件を受け取りました。[QA Reviewer (QA レビュー担当者)] 参照項目は、すべてで必須にするのではなく、このフローでのみ必須にする必要があるというものです。ただし、この項目自体が必須と定義されていないため、レコード項目コンポーネントは使用できません。でも心配はいりません。ルックアップ画面コンポーネントを使用できます。
ルックアップコンポーネントも、レコード項目コンポーネントと同様に、Salesforce オブジェクトに既存の参照項目を模倣します。ただし、ルックアップコンポーネントは、デフォルト値の設定や必須の定義など、レコード項目コンポーネントよりも多くの設定が必要になります。設定スタイルも他のコンポーネントとは異なり、手動入力が増えるほか、オブジェクトや項目の API 参照名に関する知識が求められます。ルックアップコンポーネントを追加するときに、オブジェクトマネージャーのオブジェクトやその項目を参照する必要のある場合があります。
レコード項目コンポーネントをルックアップコンポーネントに置換する
- [Questions Page 2 (質問ページ 2)] 要素で、 をクリックして、画面キャンバスから [QA Reviewer (QA レビュー担当者)] レコード項目を削除します。
- 左サイドバーの [コンポーネント] タブをクリックして、画面コンポーネントのリストを表示します。
- [コンポーネント] サイドバーから [ルックアップ] を画面キャンバスにドラッグします。
- [API Name (API 参照名)] に、
ScreenReviewer
と入力します。
- [Field API Name (項目 API 参照名)] に、
QA_Reviewer__c
と入力します。
この設定に、フローに複製する既存の参照項目の API 参照名が示されます。
- [Label (表示ラベル)] に、
QA Reviewer
(QA レビュー担当者) と入力します。
- [Object API Name (オブジェクト API 参照名)] に、
Case
と入力します。
Case は、既存の参照項目を含むオブジェクトの API 参照名です。
- [Record ID (レコード ID)] で [$User]>[Id] を選択します。
この設定により、ユーザーが選択した値をフローのどこに保存するかが決まります。フローの実行時、ここで設定した値がデフォルト値になります。この例では、フローを実行すると、実行ユーザーの ID が [QA Reviewer (QA レビュー担当者)] ルックアップコンポーネントのデフォルト値になります。
- [Required (必須)] で [$GlobalConstant.True] を選択します。
-
[Done (完了)] をクリックします。
これで完了です。ルックアップコンポーネントは、レコード項目コンポーネントよりも調査や設定に多少時間がかかります。ただし、適切に機能し、数種の設定オプションを備えています。
[レコードを作成] 要素を更新する
新しい画面コンポーネントで収集した値を使用するには、ケースを作成する要素に項目値を追加する必要があります。どの画面コンポーネントも、実行ユーザーの回答を独自の方法で参照します。テキストコンポーネントとロングテキストエリアコンポーネントを直接参照しました。この単元で追加した 3 つのコンポーネントは、これとは異なる 3 種類の方法でコンポーネントの値を参照します。連絡窓口、原因、QA レビュー担当者を [ケースを作成] 要素に追加する過程で、それぞれの方法を見ていきましょう。
データテーブルコンポーネントから値を取得する
- [ケースを作成] 要素を開きます。
- [項目値を設定] で、[+項目を追加] をクリックします。
- [Field (項目)] で [ContactId] を選択します。
- [Value (値)] で [Questions Page 2 (質問ページ 2)] > [Point of Contact (連絡窓口)] > [First Selected Row (最初に選択された行)] > [Contact ID (取引先責任者 ID)] を選択します。
必要な 取引先責任者 ID は、各行 (取引先責任者レコード) に複数の列 (項目値) が設定されているデータテーブルから選択されています。[レコードを作成] 要素に、選択したテーブル行のどの項目を使用するかを指示する必要があります。
ユーザーが複数のレコードを選択できるようにデータテーブルが設定されている場合は、ユーザーが最初に選択したレコードが Flow Builder で使用されます (必ずしも順番が最初のレコードとは限りません)。
ルックアップコンポーネントから値を取得する
-
[+項目を追加] をクリックします。
- [Field (項目)] で [QA Reviewer (QA レビュー担当者)] を選択します。
- [Value (値)] で [Questions Page 2 (質問ページ 2)] > [QA Reviewer (QA レビュー担当者)] > [Record ID (レコード ID)] を選択します。
ルックアップコンポーネントから QA Reviewer (QA レビュー担当者) を設定します。ロングテキストエリアやラジオボタンコンポーネントなどの他のコンポーネントとは異なり、ルックアップコンポーネントには参照可能な値が複数あります。ここでは、レコード ID を必要とする参照項目を設定しているため、コンポーネントのレコード ID を選択します。
レコード項目コンポーネントから値を取得する
大半の画面コンポーネントでは、ユーザーの入力した値がコンポーネントに保存されます。データ要素でその値を参照するには、コンポーネントまたはそのコンポーネント内の項目を選択します。たとえば、連絡窓口コンポーネントは、ユーザーがレコードを選択できるようにして、その値をコンポーネントの Id 項目に格納します。別の要素でコンポーネントの値を参照するには、画面コンポーネントを含む画面を選択してから、そのコンポーネントを選択します。
レコード項目コンポーネントは若干異なります。レコード項目コンポーネントの場合は、値がコンポーネント自体に保存されるのではなく、コンポーネントに関連するレコード変数に保存されます。たとえば、選択した原因は、[原因] レコード項目を画面に追加したときに選択した caseVar レコード変数に保存されます。
レコード項目コンポーネントの場合は、データ要素に項目値を設定するときに、[Value (値)] 選択リストの [Record Variables (レコード変数)] セクションから選択します。
-
[+項目を追加] をクリックします。
- [Field (項目)] で [Case Reason (原因)] を選択します。
- [Value (値)] で [caseVar]>[Case Reason] を選択します。
ケースの新しい項目値が次のように表示されます。
ユーザーがファイルをアップロードできるようにする
この単元を終える前に、フローに追加する機能がもう 1 つあります。ケースによっては、トラブルシューティングに役立つスクリーンショットやその他の画像をサポートエージェントがお客様に送信してもらうことがあります。エージェントはそうした画像をケースに添付したいと考えています。
ファイルのアップロード画面コンポーネントは、その名のとおり、ファイルを Salesforce にアップロードします。アップロードしたファイルを作成済みのケースに関連付けるには、ケースを作成する要素に続く画面要素に、ファイルのアップロードコンポーネントを追加します。この処理をしなければ、ファイルをアップロードするケースが見つからず、アップロードに失敗します。
[アップロード] ボタンのある画面を追加する
- [ケースを作成] 要素の後に画面要素を追加します。
- [Label (表示ラベル)] に、
File Upload Screen
(ファイルのアップロード画面) と入力します。
-
[ファイルのアップロード] コンポーネントを画面キャンバスにドラッグします。
- [API Name (API 参照名)] に、
UploadImages
と入力します。
- [File Upload Label (ファイルのアップロードの表示ラベル)] に、
The case has been created.Do you have any related files to upload to it?
(ケースが作成されました。アップロードする関連ファイルはありますか?) と入力します。 - [複数のファイルを許可] で [$GlobalConstant.True] を選択します。
- [関連レコード ID] で [Create_Case からの CaseId] を選択します。
-
[Done (完了)] をクリックします。
- フローを保存します。
通常は、画面要素で入力を収集した後で、その入力を Salesforce レコードに保存するデータ要素 ([レコードを作成]、[レコードを更新] など) が必要です。ただし、この場合は例外です。新しい画面要素に含まれるのがファイルのアップロードコンポーネントのみで、このファイルのアップロードコンポーネントにファイルが自動的に保存されるためです。ユーザーがフローを実行してファイルをアップロードすると、ファイルがすぐケースに添付されます。
リソース
- Salesforce ヘルプ: フロー画面入力コンポーネント: データテーブル
- Salesforce ヘルプ: フロー画面へのレコード項目の追加
- Salesforce ヘルプ: フロー画面入力コンポーネント: ルックアップ
- Salesforce ヘルプ: フロー画面入力コンポーネント: ファイルのアップロード