Tune in to Trailblazers Innovate for Salesforce product news,
demos, and latest roadmaps. Register here.
close
進行状況の追跡を始めよう
Trailhead のホーム
Trailhead のホーム

プロセスビルダーと Flow Builder の機能を組み合わせる

学習の目的

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

  • プロセスとフローを使用して自動化できるビジネスプロセスについて説明する。
  • フロー変数の定義を述べる。
  • レコードのグループを反復するフローを作成する。
  • フローを開始するプロセスを作成する。

プロセスビルダーでは不十分なとき

プロセスビルダーは、考えられるすべての使用事例に対応するようには設計されていないため、ビジネスプロセスの一部を自動化できても、すべては自動化できない場合があります。たとえば、プロセスビルダーでは次のことができません。

  • コミュニティフィードへの投稿
  • 関連レコードの承認の申請
  • レコードの削除
  • 多数のレコードの作成と相互への関連付け
  • 複雑なロジックの実行

幸いにも、別のツールですべての自動化を再構築する必要はありません。フローでより複雑な機能を設定し、フローアクションをプロセスに追加します。フローで必要な操作を実行できない場合は、それを実行する Apex を記述できます。その後、Apex アクションをプロセスに追加します。

子のあるレコードのコピー

商談が成立したときに更新商談を自動的に作成するように依頼されました。更新には元の商談のコピーを使用します。レコードはプロセスビルダーでコピーできますが、その商品をコピーして更新商談に関連付ける必要もあります。

プロセスビルダーでは、作成されたレコードの ID を取得して、それを他で使用することができません。幸い、フローではそれが可能です。商談とその商品をコピーするフローを作成し、商談が成立するとこのフローを呼び出すプロセスを作成します。

高度な操作

前の単元では、画面を使用してビジネスプロセスに従うユーザを誘導するフローについて説明しました。これらを画面フローと呼びます。また、自動起動フローを作成することもできます。これは、プロセス同様にバックグラウンドで実行されます。主な違いは、自動起動フローには、ユーザ操作が必要となる画面を使用できないということです。画面がないので、プロセスや Apex クラスなど、バックエンドから自動起動フローを呼び出すことができます。

プロセスの作成

別のプロセスを作成する代わりに、前の単元で作成したものを利用しましょう。
メモ

メモ

有効なプロセスは編集できません。すでにプロセスを有効化した場合は、[コピー] をクリックして現在のプロセスの新しいバージョンを作成します。

前の単元の Closed Won Opportunities (成立した商談) プロセス

Closed Won Opportunities (成立した商談) プロセスで、次の条件を使用して、「Closed Won」 (商談成立) という名前の条件ノードを追加します。

項目
商談 > フェーズ Closed Won (商談成立)

プロセスビルダーではアクションを設定できないので、保存して Flow Builder に切り替えます。

フローの作成

[設定] から、[クイック検索] ボックスに「フロー」と入力して、[フロー] を選択し、[新規フロー] をクリックして [自動起動フロー (トリガなし)] を選択し、[作成] をクリックします。

次を行うフローを作成します。

  • 商談をコピーする。
  • 商談商品をコピーする。
  • コピーされた商品をコピーされた商談に関連付ける。

これをすべて実行するために、フローでは、プロセスから元の商談と商談商品のデータが必要になります。

フロー変数は 4 種類あります。

種別 保存可能
変数 1 つの値 “Hello World”、true、6
コレクション変数 同じデータ型の複数の値 [1, 2, 3, 5, 8, 13]
レコード変数 1 つのレコードの項目値セット 取引先の評価、ID、および名前
レコードコレクション変数 同じオブジェクト種別の複数のレコードの項目値セット 複数の取引先の評価、ID、および名前

商談とその商談商品を保存するために、レコード変数とレコードコレクション変数を作成します。後でフローをアクションとしてプロセスに追加するときに、これらの変数にデータを渡すため、入力アクセスが許可されている必要があります。

  1. ツールボックスの [マネージャ] で、[新規リソース] をクリックし、次の値を設定します。
    項目
    リソース種別 変数
    API 参照名 opportunity
    データ型 レコード
    オブジェクト 商談
    入力で使用可能 オン
  2. [完了] をクリックします。
  3. [新規リソース] をクリックし、次の値を設定します。
    項目
    リソース種別 変数
    API 参照名 oppProducts_Original
    データ型 レコード
    複数の値を許可 (コレクション) オン
    オブジェクト 商談商品
    入力で使用可能 オン
  4. [完了] をクリックします。

商談のコピー

プロセスによってフローが呼び出されると、{!opportunity} 変数には元の商談からの項目が含まれます。商談をコピーする前に、一部の項目を更新しましょう。そうすれば、更新商談の開始時の状況は「商談成立」にはなりません。
  1. ツールボックスの [要素] から、キャンバスに [割り当て] 要素をドラッグします。
  2. [表示ラベル] で、「Update Opportunity Fields」 (商談の項目の更新) という名前を付けます。
  3. フェーズを [Prospecting (見込み調査)] に設定します。
    1. [変数] では、[レコード (単一) 変数] | [opportunity] | [StageName] を選択します。
    2. [演算子] には、[次の文字列と一致する] を選択します。
    3. [値] では、[選択リスト値] | [Prospecting (見込み調査)] を選択します。
  4. [完了予定日] を 90 日後に設定します。
    1. [割り当てを追加] をクリックします。
    2. [変数] では、[レコード (単一) 変数] | [opportunity] | [CloseDate] を選択します。
    3. [演算子] には、[次の文字列と一致する] を選択します。
    4. [変数] で、[新規リソース] を選択し、次の値を設定します。
      項目
      リソース種別 数式
      API 参照名 ninetyDays
      データ型 日付
  5. [数式] で、[リソースを挿入...] を空白のままにして、テキストボックスに「TODAY() + 90」と入力します。
  6. [完了][完了] の順にクリックします。
  7. [レコードの作成] 要素をキャンバスにドラッグし、次の値を設定して商談を作成します。
    項目
    表示ラベル Clone Opportunity (商談のコピー)
    レコード  レコード (単一) 変数 > opportunity

  8. [完了] をクリックします。
  9. [開始] の下部にあるノードをクリックし、[Update Opportunity Fields (商談の項目の更新)] にドラッグします。
  10. [Update Opportunity Fields (商談の項目の更新)] の下部にあるノードをクリックし、[Clone Opportunity (商談のコピー)] にドラッグします。

商談が作成されると、その変数 ({!opportunity.Id}) の ID 項目に新しいレコードの ID が入力されます。後でこの値を参照し、新しい商品を更新商談に関連付けます。

商談商品のコピー

次は、商談商品のコピーという楽しい作業です。

プロセスによってフローが呼び出されると、{!oppProducts_Original} 変数には元の商談商品からの項目が含まれます。これらの商品をコピーする前に、元の商談の代わりに更新商談に関連付け、各商品の合計金額を null に設定する必要があります。(商談商品に単価と合計金額の両方は使用できません)。

コレクションの項目を更新する唯一の方法は、ループを使用してコレクションを反復することです。ループは、フローにコレクションの各項目を一度に 1 つずつ処理し、コレクション全体を処理するまで各項目に同じロジックを実行するように指示します。

{!oppProducts_Original} レコードコレクションの各商談商品は更新商談に関連付けられていて、合計金額は null に設定されています。

ループが反復するたびに、ループ変数はコレクション内の 1 つの項目を表します。ループが開始されると、コレクション変数の最初の項目がループ変数にコピーされます。反復が終了すると、ループ変数は次の項目の値で上書きされます。コレクションに残っている項目がなくなるまで、これが繰り返されます。

コレクション項目はループ変数にコピーされます。ループ変数のデータが更新およびコピーされ、別のコレクションに新しい項目が作成されます。ループ変数は、元のコレクションの次の項目のコピーによって更新されます。
ヒント

ヒント

  • ループ内の項目の項目値を更新するには、ループ変数を更新します。次に、その項目の反復が終了する前に、別のコレクション変数の項目としてループ変数を追加します。これを行わないと、次の項目がループ変数に読み込まれるときに変更内容が上書きされます。
  • レコードの作成や更新などのアクションをループ内に追加することは避けてください。間違いなく制限に達してしまいます。

ループでは、各項目の商談 ID と合計金額を更新した後、新しいコレクション変数にその項目を追加します。ループ後に新しいコレクション変数を使用して商談商品を作成します。

  1. [ループ] 要素をキャンバスにドラッグし、次の値を設定します。
    1. [表示ラベル] で、「Iterate Over Products」 (商品の反復) という名前を付けます。
    2. [コレクション変数] で [レコードコレクション変数] | [oppProducts_Original] を選択します。このオプションは、ループ変数に項目を割り当てるときに反復するコレクションを指定します。
    3. [完了] をクリックします。
  2. [Clone Opportunity (商談のコピー)] をループに接続します。
  3. ループ変数の商談 ID を新しい商談の ID に、合計金額を null に設定します。[Assignment (割り当て)] 要素をキャンバスにドラッグします。
    1. [表示ラベル] で、「Update Opportunity Product」 (商談商品の更新) という名前を付けます。
    2. [変数値を設定] で、次の割り当てを設定します。[割り当てを追加] をクリックして 2 行目を追加します。
      変数 演算子
      レコード (単一) 変数 > ループ Iterate_Over_Products の現在の項目 > OpportunityId 次の文字列と一致する レコード (単一) 変数 > opportunity > Id
      レコード (単一) 変数 > ループ Iterate_Over_Products の現在の項目 > TotalPrice 次の文字列と一致する 空白のまま

      ループ変数の商談 ID 項目と合計金額項目を設定するフローの割り当て
    3. [完了] をクリックします。
  4. ループを [Update Opportunity Product (商談商品の更新)] に接続します。ループコネクタを選択するウィンドウが表示されます。
  5. [ループコネクタ] 項目で [コレクション内の項目ごと] が選択されていることを確認し、[完了] をクリックします。
  6. 更新されたループ変数を新しいレコードコレクション変数に追加します。
    1. [割り当て] 要素をもう 1 つキャンバスにドラッグします。
    2. [表示ラベル] で、「Add to New Collection」 (新規コレクションに追加) という名前を付けます。
    3. [変数] で、[新規リソース] を選択し、次の値を使用して新しいリソース変数を作成します。
      項目
      リソース種別 変数
      API 参照名 oppProducts_new
      データ型 レコード
      オブジェクト 商談商品
      複数の値を許可 (コレクション) オン
    4. [完了] をクリックします。
    5. [演算子] では、[追加] を選択します。
    6. [値] で、[レコード (単一) 変数] | [ループ Iterate_Over_Products の現在の項目] を選択します。{!Iterate_Over_Products と右括弧 } の間のピリオドを削除し、[値] 項目の外側をクリックします。
    7. [完了] をクリックします。
  7. [Update Opportunity Product (商談商品の更新)] を [Add to New Collection (新規コレクションに追加)] に接続します。次に、[Add to New Collection (新規コレクションに追加)] をループに接続します。
  8. [レコードの作成] 要素をキャンバスにドラッグし、次の値を設定して商談商品をコピーします。
    項目
    表示ラベル Clone Products (商品のコピー)
    作成するレコードの数 [複数] を選択します
    レコードコレクション変数 レコードコレクション変数 > oppProducts_new
  9. [完了] をクリックします。
  10. ループを [Clone Products (商品のコピー)] に接続します。
完了したフロー

フローの完成

もう少しで作業は完了です。フローを完成するには、フローを保存して有効化します。
  1. [保存] をクリックします。
  2. フローを保存し、「Renew Opportunity」 (更新商談) という名前を付けます。[詳細を表示] をクリックし、[種別] が [自動起動フロー] に設定されていることを確認します。
  3. [保存] をクリックします。

フローを有効化してプロセスビルダーで参照できるようにします。Flow Builder を閉じます。

プロセスの完成

フローの作成が終わったので、次は商談の状況が「商談成立」のときにプロセスによってフローが開始されることを確認しましょう。フローの始めに作成した変数を覚えていますか? プロセスでは、これらを使用して商談レコードとその子からフローに値を渡します。
  1. [Closed Won Opportunities (成立した商談)] プロセスを開きます。
  2. [Closed Won (商談成立)] 条件グループで、ルール適用時のアクションを追加し、種別を [フロー]、名前を 「Create Renewal」 (更新の作成) に設定します。
  3. [フロー] では、[Renew Opportunity (商談の更新)] を選択します。
  4. [フロー変数を設定] で、2 列を追加して次の値に設定し、[保存] をクリックします。
    変数 種別
    opportunity 項目の参照 プロセスを開始した商談レコードを選択
    oppProducts_original 項目の参照 商談 > OpportunityLineItems
    商談が成立すると、必ず更新が作成されます。ただし、それが重要商談とみなされる場合は、ドラフト契約やフォローアップ ToDo が作成されることを確認する必要があります。
  5. [Closed Wond (商談成立)] 条件ノードを [Closed Won and High Value (商談成立および重要)] の上にドラッグします。
  6. [Closed Won (商談成立)] 条件グループで、[停止] をクリックします。
  7. [次の条件を評価] を選択し、[保存] をクリックします。最終プロセス
  8. プロセスは、有効化すると使用を開始できます。

リソース