プロセスビルダーと Flow Builder の機能を併用する
学習の目的
この単元を完了すると、次のことができるようになります。
- プロセスとフローを使用して自動化できるビジネスプロセスについて説明する。
- フロー変数の定義を述べる。
- レコードのグループを反復するフローを作成する。
- フローを開始するプロセスを作成する。
プロセスビルダーでは不十分な場合
プロセスビルダーは、考えられるすべての使用事例に対応するようには設計されていないため、ビジネスプロセスの一部を自動化できても、すべては自動化できない場合があります。たとえば、プロセスビルダーでは次のことができません。
- コミュニティフィードへの投稿。
- 関連レコードの承認の申請。
- レコードの削除。
- 多数のレコードの作成と相互への関連付け。
- 複雑なロジックの実行。
幸いにも、別のツールですべての自動化を再構築する必要はありません。フローでより複雑な機能を設定し、フローアクションをプロセスに追加します。フローで必要な操作を実行できない場合は、それを実行する Apex を記述できます。その後、Apex アクションをプロセスに追加します。
子のあるレコードをコピーする
商談が成立したときに更新商談を自動的に作成するように依頼されました。更新には元の商談のコピーを使用します。レコードはプロセスビルダーでコピーできますが、その商品をコピーして更新商談に関連付ける必要もあります。
プロセスビルダーでは、作成されたレコードの ID を取得して、それを他で使用することができません。幸い、フローではそれが可能です。商談とその商品をコピーするフローを作成し、商談が成立するとこのフローを呼び出すプロセスを作成します。
高度な操作
前の単元では、画面を使用してビジネスプロセスに従うユーザを誘導するフローについて説明しました。これらを画面フローと呼びます。また、自動起動フローを作成することもできます。これは、プロセス同様にバックグラウンドで実行されます。主な違いは、自動起動フローには、ユーザ操作が必要となる画面を使用できないということです。画面がないので、プロセスや Apex クラスなど、バックエンドから自動起動フローを呼び出すことができます。
プロセスを作成する

Closed Won Opportunities (成立した商談) プロセスで、次の条件を使用して、「Closed Won」 (商談成立) という名前の条件ノードを追加します。
項目 | 値 |
---|---|
商談 > フェーズ | Closed Won (商談成立) |
プロセスビルダーではアクションを設定できないので、保存して Flow Builder に切り替えます。
フローを作成する
次を行うフローを作成します。
- 商談をコピーする。
- 商談商品をコピーする。
- コピーされた商品をコピーされた商談に関連付ける。
これをすべて実行するために、フローでは、プロセスから元の商談と商談商品のデータが必要になります。
フロー変数は 4 種類あります。
種別 | 保存可能。 | 例 |
---|---|---|
変数 | 1 つの値 | “Hello World”、true、6 |
コレクション変数 | 同じデータ型の複数の値 | [1, 2, 3, 5, 8, 13] |
レコード変数 | 1 つのレコードの項目値セット | 取引先の評価、ID、および名前 |
レコードコレクション変数 | 同じオブジェクト種別の複数のレコードの項目値セット | 複数の取引先の評価、ID、および名前 |
商談とその商談商品を保存するために、レコード変数とレコードコレクション変数を作成します。後でフローをアクションとしてプロセスに追加するときに、これらの変数にデータを渡すため、入力アクセスが許可されている必要があります。
- ツールボックスの [マネージャ] で、[新規リソース] をクリックし、次の値を設定します。
項目 値 リソース種別 変数 API 参照名 opportunity データ型 レコード オブジェクト 商談 入力で使用可能 オン - [完了] をクリックします。
-
[新規リソース] をクリックし、次の値を設定します。
項目 値 リソース種別 変数 API 参照名 oppProducts_Original データ型 レコード 複数の値を許可 (コレクション) オン オブジェクト 商談商品 入力で使用可能 オン - [完了] をクリックします。
商談をコピーする
- ツールボックスの [要素] から、キャンバスに [割り当て] 要素をドラッグします。
- [表示ラベル] で、「Update Opportunity Fields」 (商談の項目の更新) という名前を付けます。
- フェーズを [Prospecting (見込み調査)] に設定します。
- [変数] では、[レコード (単一) 変数] | [opportunity] | [StageName] を選択します。
- [演算子] には、[次の文字列と一致する] を選択します。
- [値] では、[選択リスト値] | [Prospecting (見込み調査)] を選択します。
- [完了予定日] を 90 日後に設定します。
- [割り当てを追加] をクリックします。
- [変数] では、[レコード (単一) 変数] | [opportunity] | [CloseDate] を選択します。
- [演算子] には、[次の文字列と一致する] を選択します。
- [変数] で、[新規リソース] を選択し、次の値を設定します。
項目 値 リソース種別 数式 API 参照名 ninetyDays データ型 日付
- [数式] で、[リソースを挿入...] を空白のままにして、テキストボックスに「TODAY() + 90」と入力します。
- [完了]、[完了] の順にクリックします。
-
[レコードの作成] 要素をキャンバスにドラッグし、次の値を設定して商談を作成します。
項目 値 表示ラベル Clone Opportunity (商談のコピー) レコード レコード (単一) 変数 > opportunity
- [完了] をクリックします。
- [開始] の下部にあるノードをクリックし、[Update Opportunity Fields (商談の項目の更新)] にドラッグします。
- [Update Opportunity Fields (商談の項目の更新)] の下部にあるノードをクリックし、[Clone Opportunity (商談のコピー)] にドラッグします。
商談が作成されると、その変数 ({!opportunity.Id}) の ID 項目に新しいレコードの ID が入力されます。後でこの値を参照し、新しい商品を更新商談に関連付けます。
商談商品をコピーする
プロセスによってフローが呼び出されると、{!oppProducts_Original} 変数には元の商談商品からの項目が含まれます。これらの商品をコピーする前に、元の商談の代わりに更新商談に関連付け、各商品の合計金額を null に設定する必要があります。(商談商品に単価と合計金額の両方は使用できません)。
コレクションの項目を更新する唯一の方法は、ループを使用してコレクションを反復することです。ループは、フローにコレクションの各項目を一度に 1 つずつ処理し、コレクション全体を処理するまで各項目に同じロジックを実行するように指示します。
{!oppProducts_Original} レコードコレクションの各商談商品は更新商談に関連付けられていて、合計金額は null に設定されています。
ループが反復するたびに、ループ変数はコレクション内の 1 つの項目を表します。ループが開始されると、コレクション変数の最初の項目がループ変数にコピーされます。反復が終了すると、ループ変数は次の項目の値で上書きされます。コレクションに残っている項目がなくなるまで、これが繰り返されます。

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

プロセスを完成させる
- [Closed Won Opportunities (成立した商談)] プロセスを開きます。
- [Closed Won (商談成立)] 条件グループで、ルール適用時のアクションを追加し、種別を [フロー]、名前を「Create Renewal」 (更新の作成) に設定します。
- [フロー] では、[Renew Opportunity (商談の更新)] を選択します。
- [フロー変数を設定] で、2 列を追加して次の値に設定し、[保存] をクリックします。
変数 種別 値 opportunity 項目の参照 プロセスを開始した商談レコードを選択 oppProducts_original 項目の参照 商談 > OpportunityLineItems - [Closed Wond (商談成立)] 条件ノードを [Closed Won and High Value (商談成立および重要)] の上にドラッグします。
- [Closed Won (商談成立)] 条件グループで、[停止] をクリックします。
-
[次の条件を評価] を選択し、[保存] をクリックします。
- プロセスは、有効化すると使用を開始できます。
リソース
- Trailhead プロジェクト: 割引計算機能の構築