進行状況の追跡を始めよう
Trailhead のホーム
Trailhead のホーム

フローへのロジックの追加

学習の目的

この単元を完了すると、次のことができるようになります。

  • Flow Builder で使用できるロジック要素を挙げる。
  • 分岐ロジックをフローに追加する。
  • フロー内で変数値を変更する。

決定要素を使用したブランチの作成

ほとんどのビジネスプロセスでは、ルールによって特定のアクションを実行するかどうかが決まります。たとえば、関連付けられた取引先にリスクがある場合にケースをエスカレーションするとします。この場合のルールは、「関連付けられた取引先にリスクがある」です。Flow Builder では、決定要素を使用してビジネスプロセスのルールを評価します。

各決定は質問に答える形です。結果は、可能性のある答えです。答えは、はいといいえのシンプルなものであることもありますが、答えの数に制限はありません。各結果の条件を設定することで、どの答えが適切であるかを決定します。フローは、決定要素を実行するときに、各決定結果を順番に評価します。結果の条件が満たされると、フローは関連付けられたコネクタを辿り、他の結果は無視します。結果の条件が満たされないと、フローはリストの次の結果を評価します。

Flow Builder には最後の結果が用意されています。これは条件がないデフォルトの結果で、フォールバックとして機能します。どの結果の条件も満たされない場合、フローはデフォルトの結果のコネクタを辿ります。

例として、[New Contact (新規取引先責任者)] フローで作成した決定を見てみましょう。フロー内の他の要素とは異なり、[Update or Create? (更新か作成か?)] 決定には 2 つのコネクタがあり、これらのコネクタには [Create New (新規作成)] と [Update Existing (既存の更新)] という表示ラベルが付いています。

[Update or Create? (更新か作成か?)] 決定とその結果が強調表示されている [New Contact (新規取引先責任者)] フロー

[Update or Create? (更新か作成か?)] 決定をダブルクリックして開きます。

[Update Existing (既存の更新)] 結果の詳細。{!updateExisting} 変数が true かどうかと {!existingId} が null でないかどうかを評価します。

[結果の順序] (1) の下に、キャンバスに表示されているのと同じ表示ラベルの 2 つの結果が表示されています。決定の各結果には、キャンバス上のコネクタが関連付けられています。

[結果の詳細] には、[Update Existing (既存の更新)] 結果の条件 (2) が表示されています。

{!updateExisting} equals {!GlobalConstant.True}
この条件は、ユーザが既存のレコードを更新することを選択したかどうかを評価します。{!updateExisting} 変数には、[Contact Info (取引先責任者情報)] 画面の切り替えコンポーネントの値が保存されます。ユーザが切り替えを有効にすると、変数が true に設定され、この条件が満たされます。
ヒント

ヒント

切り替えやチェックボックスなどの Boolean 値を検証するには、必ず true または false のグローバル定数を使用します。手動で「true」と入力すると、Boolean 値ではなく「true」という単語と同等になります。

{!existingId} Is null {!GlobalConstant.False}
この条件は、一致するレコードが見つかったかどうかを評価します。{!existingId} 変数は、[Find a Match (一致の検索)] 要素で、一致するレコードが見つかった場合のみ設定されます。変数値が null でない場合、この条件が満たされます。

[結果を実行するタイミング][すべての条件に一致] に設定されているため、フローが [Update Existing (既存の更新)] パスを進むには、これらの両方の条件が true になる必要があります。そうでない場合は、フローはリストの次の結果を評価します。

[結果の順序] で、[Create New (新規作成)] をクリックします。ここには条件がありません。これは、デフォルトの結果であるためです。キャンバス上の決定の質問 (更新か作成か?) に答えるために表示ラベルが変えられています。フローで既存のレコードを更新するための条件が満たされない場合、フローは常に新しいレコードを作成します。

表示ラベルが [Create New (新規作成)] のデフォルトの結果

ヒント

ヒント

決定の質問の最後の答えとしてデフォルトの結果を使用することをお勧めします。たとえば、結果が「はい」または「いいえ」になる可能性がある場合、「はい」の結果の条件を設定し、デフォルトの結果の表示ラベルを「いいえ」に変更します。答えが「はい」でなければ「いいえ」になります。

まとめましょう。フローは [Update or Create? (更新か作成か?)] 要素を実行するときに、レコードを更新する要件 (ユーザが既存のレコードを更新することを選択していて、更新対象となる一致するレコードがある) が満たされているかどうかを評価します。それらの要件が満たされると、フローは [Update Existing (既存の更新)] パスを進みます。それ以外の場合は [Create New (新規作成)] パスを進みます。このモジュールの後の方で、フローがこれらのパスで実行するアクションについて学習します。

割り当て要素を使用した変数値の更新

このモジュールの前の方では、フロー変数の重要性と、変数の値はフローの途中で変更可能であることを学習しました。変数の値を変更する最も簡単な方法は、割り当て要素を使用することです。

各行を使用して 1 つの変数を変更します。変数がどのように変更されるかは、選択した演算子と値セットによって異なります。たとえば、[追加] 演算子はデータ型に応じて機能が異なります。日付変数の場合は、選択した [変数] の値に、[値] の日数が加算されます。テキスト変数の場合は、[変数] の最後に、[値] で入力または選択したテキストが追加されます。

[New Contact (新規取引先責任者)] フローで作成した割り当てを見てみましょう。

キャンバスで、[Set Contact ID (取引先 ID の設定)] ノードをダブルクリックします。この要素は 1 つの値を更新します。{!contact} レコード変数の Id 項目です。

[Set Contact ID (取引先 ID の設定)] 割り当て。{!contact} 変数の ID 項目を {!existingId} 変数に保存されている値に設定します。

なぜこの割り当てが必要なのでしょうか? それは、どのレコードを更新するかがわからなければ、フローがレコードを更新できないからです。

キャンバスで、[Find a Match (一致の検索)] ノードをダブルクリックします。一致するレコードの ID は {!existingId} 変数に保存されます。この割り当て (1) では、{!contact} 変数の ID を同じ値に設定し、フローが [Update Contact (取引先責任者の更新)] 要素 (2) で適切な商談を更新するようにします。

[Find a Match (一致の検索)] レコードを取得要素。フローは一致する取引先責任者の ID を {!existingId} 変数に保存します。
メモ

メモ

Flow Builder には、これ以外にループと一時停止の 2 つのロジック要素が用意されていますが、このモジュールでは取り上げません。

フローの更新

フローの現在の構成では、既存のレコードを更新するか新しいレコードを作成するかを決定する前に、一致する取引先責任者レコードを探しています。これはデータ要素の無駄です。もしユーザが新しい取引先責任者を作成することを選択しているなら、なぜ一致するレコードの ID を探すのでしょうか?

それを修正するために、既存の決定を 2 つの決定に分けましょう。[Update or Create? (更新か作成か?)]決定要素は 2 つの条件をチェックします。ユーザが既存のレコードの更新を選択したかどうかと、一致する取引先責任者レコードが存在するかどうかです。

最初の条件を単独の決定要素に移して、一致するレコードを更新することをユーザが選択した場合にのみレコードを取得要素を使用するようにします。ユーザがそれを選択しなかった場合は、一致するレコードを検索しません。

新しい決定の作成

  1. [決定] 要素をキャンバスにドラッグします。
  2. 決定の表示ラベルに「Update If Existing?」(既存であれば更新?) と入力します。
    [API 参照名] は自動的に [Update_If_Existing] に設定されます。
  3. 最初の結果の表示ラベルに「Yes」(はい) と入力します。[API 参照名] を「Update_Yes」に変更します。こうすることで、決定コネクタの表示ラベルは読みやすくなる一方で、[マネージャ] タブではその結果名が他の結果名と区別しやすくなります。
  4. [結果を実行するタイミング] はそのままにして、結果の 1 つの条件を設定します。
    項目 価値
    リソース {!updateExisting}
    演算子 次の文字列と一致する
    価値 {!$GlobalConstant.True}
  5. [結果の順序] で、[デフォルトの結果] をクリックします。表示ラベルを「No」(いいえ) に変更します。結果の表示ラベルを [デフォルトの結果] のままにしておくと、どのような場合にその結果が実行されるかがわかりにくくなる可能性があります。
  6. [完了] をクリックします。

元の決定の更新

新しい決定を追加したので、元の決定 ([Update or Create? (更新か作成か?)]) に重複する条件が含まれることになります。それを削除しましょう。

  1. [Update or Create? (更新か作成か?)] をダブルクリックします。
  2. [Update if Existing? (既存であれば更新?)] 決定に追加したのと同じ条件を見つけます。[リソース] 項目には {!updateExisting} が含まれています。
  3. その条件の次のアイコンをクリックします。 削除アイコン
  4. [完了] をクリックします。

要素の再接続

もう少しで作業は完了です。完了するには、[Update if Existing? (既存であれば更新?)] 決定が [Find a Match (一致の検索)] 要素より前に実行されるようにする必要があります。

  1. [Contact Info (取引先責任者情報)] と [Find a Match (一致の検索)] の間のコネクタを削除します。
    1. コネクタをクリックします。強調表示されると、色が青になります。
    2. Delete キーを押します。
  2. [Contact Info (取引先責任者情報)] を [Update if Existing? (既存であれば更新?)] に接続します。
  3. [Update if Existing? (既存であれば更新?)] を [Find a Match (一致の検索)] に接続します。確認メッセージが表示されたら、[Yes (はい)] 結果を選択し、[完了] をクリックします。
  4. [Update if Existing? (既存であれば更新?)] を [Create Contact (取引先責任者の作成)] に接続します。接続できる結果は 1 つしか残っていないので ([No (いいえ)])、自動的にそれが選択されます。
  5. フローを保存し、FYI 警告は無視します。

新しい [Update if Existing? (既存であれば更新?)] 決定とそのパスが強調表示されている [New Contact (新規取引先責任者)] フロー

これで、フローには 2 つの決定ポイントができました。1 つ目の決定では、ユーザが常に新しい取引先責任者を作成することを選択したかどうかに基づいて、一致レコードを検索するかどうかを評価します。2 つ目の決定では、[Find a Match (一致の検索)] 要素で一致する取引先責任者が見つかったかどうかを評価します。

リソース