プロセスビルダーとFlowBuilderを組み合わせた（基礎）

#はじめに・作業の流れ
プロセスビルダーだけの使い方はネットで探せばいくらでも出てきますが、プロセスビルダーとFlowBuilderの組み合わせはあまり見ることはありません。もちろんtrailheadのLightningフローやフローのHelpを最初から最後まであきらめずに読むことでも学ぶこともできます。しかし多くの方は納得感をもって使えると思えないのではないでしょうか。

ここでは**プロセスビルダーとFlowBuilderを組み合わせて使えるように詳細に解説**していきたいと思います。最初は一つでまとまるかなと思いましたが基礎、応用、実践の3本建てになりそうです。。。実際の業務に使えるようになってくれれば嬉しいです。

プロセスビルダーとFlowBuilderを組み合わせるまでの大きな作業の流れは以下の通りになります。

- FlowBuilderで変数を作成する。
- レコードの絞り込みの条件で項目「Id」、演算子「次の文字列と一致する」、値「作成した変数」とする
- 取得したレコードID等を元にフローを作成する。
- プロセスビルダーのアクションでフローを選択し、フロー変数に「作成した変数」、種別「項目の参照」、値「レコードID」を入力

#プロセスビルダーからフローにIDを渡すまで

##フローの起動と今回やること
設定から**クイック検索で「フロー」と検索**するとフローが出てきますのでそちらをクリック、新規フローをクリックしてフロー作成画面に移動します。今回は**「自動起動フロー」の作成**になります。

![Flow Builderキャンバス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510376/ce0a93a0-4816-db6e-23ab-5db0874da797.png)


左側にアイコンがたくさん並んでいますが、フローはこれらのアイコンを組み合わせて一つのフローを作成します。まずはどうやってプロセスビルダーからフローにレコードIDなどの情報を渡してレコードを更新するか確認していきます。

今回は**商談のレコードIDをフローに渡して商談を更新**と思います。


##動的にレコードを取得して商談の更新をする
まずはフローで行う操作を羅列していきます(画像でも内容を確認できます)。

- 1.　左のアイコンの「レコード取得」を右側のスペースにドラッグ&ドロップします。
- 2.　表示ラベルとAPI名は任意の名前を入力します。
- 3.　「このオブジェクトのレコードを取得」のオブジェクトは「商談」を入力して選択します。
- 4.　「商談レコードを絞り込み」の項目に「商談 ID」を選択します。
- 5.　値の下にある「値を入力するか、リソースを検索...」の部分をクリックして「新規リソース」をクリックします。
- 6.　リソース種別は「変数」を選択し、任意のAPI名を入力します。
- 7.　データ型は「テキスト」、「フロー外部での可用性」で「入力で使用可能」にチェックします。
- 8.　「商談レコードの項目値を設定」で項目に「フェーズ」、値は任意の選択肢を選びます。
- 9.　「開始」の白い「○」からレコードの更新の白い「○」をつなげて任意の名前で保存、有効化します。


![レコード更新.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510376/e4ef047e-b9a0-f368-f994-424ea2bcd6a0.png)

![変数作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510376/4b805297-3021-a757-0196-800191379cfa.png)

##上記の解説

慣れていない人は上記の項目「Id」、演算子「次の文字列と一致する」、値「{Opp_ID}」の意味がわからないと思います。もしかして次のように思うかもしれません。

- 変数「Opp_ID」のデータがないから意味のない条件じゃないだろうか？
- そもそも値「{Opp_ID}」は何を意味するのだろうか？
- これで**どうやって商談の情報を引っ張ってくるのだろうか**？

変数Opp_IDはイメージでいうと箱の名前です。箱にはデータを入れることで意味が出てきます。ではどうやって箱にデータをいれるのか。答えは**プロセスビルダーでその変数とデータを指定**してあげます。レコードIDをフロー側で作った変数に入れてあげて初めて意味が出てきます。

最後に忘れずフローを有効化してプロセスビルダーで選択できる状態にします。

##プロセスビルダーとフローを組み合わせる
ここまでくれば後は簡単です。画像をみてわかるひとは飛ばしても問題ない内容です。

- 1.　設定からクイック検索で「ビルダー」と検索するとプロセスビルダーが出てきますのでそちらをクリックします。
- 2. 　「新規」をクリックして任意のラベル・API名を入力して「プロセスを開始するタイミング」は「レコードが変更されたとき」を選んで「Save」をクリックします。
- 3.　オブジェクトは「商談」、プロセスの開始は「レコードを作成、または編集したとき」で保存をクリックします。
- 4.　「条件を追加」をクリックし任意の条件名を設定し「条件の設定」の項目は「フェーズ」、演算子は「次の文字列と一致する」、種別「選択リスト」、値は上記8．で設定した任意の値を選択します。
- 5.　「アクションを選択して定義」をクリックし、**アクション種別は「フロー」**、任意のアクション名と先ほど保存して有効化したフローのラベル名を選択します。
- 6.　「フロー変数を設定」の下に**「行を追加」**とありますのでそれをクリックします。
- 7.　「フロー変数」に作成した変数を指定し種別は「項目の参照」、値は「商談ID」を選択し「保存」をクリックします。

![プロセスビルダー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510376/9fcd3bed-0ce7-1e96-07fe-1a074f3f608a.png)


##あとがき・応用へ
ここまで出来た人は実際にプロセスビルダーが起動するようにレコードを編集保存すれば実際の動きを確かめることができるかと思います。

ただ商談を更新するだけならワークフローやプロセスビルダーだけでも十分なのでわざわざこちらのフローを作成する意味合いはないかと思います。多くの方がフローを作成してまでやりたいことの一つは一括処理ではないでしょうか。**応用では一括処理をするために「ループ」を解説**できればと思います。

**長文最後まで読んでくださり、本当にありがとうございました！！**

応用はこちら
[プロセスビルダーとFlowBuilderを組み合わせた（応用）](https://qiita.com/DEKA_PIYO/items/51d800f79eec1cbc215b)


##「動的にレコードを取得して商談の更新をする」の補足(些細な話)
6.に関して最初**戸惑うのはデータ型の「レコード」**だと思います。レコードIDを取得するのだからデータ型は「レコード型」じゃないかなと思う方もいるかもしれません。結論をいうと違います。

**レコードIDの文字列を保存するだけなのでデータ型は「テキスト」**です。Summer'19まではレコードを取得する際に明示的に変数を指定してあげる必要があり、その際に保存する変数はデータ型を「レコード」にしていました(レコード変数といいます)。

7.に関して「入力での使用可能」とはプロセスビルダーやカスタム項目などのフローの外からレコードIDなどの情報を入れる必要があるときにチェックします。

ちなみに個人的にはチェックを両方とも入れることがほとんどです。入れて動作しないことはありませんし、余分にチェックをして特別不都合があるとは私は思っておりません。。。しいて言うとデバッグ作業のときに入力変数の項目が余分に増えて少し面倒が増えるぐらいでしょうか。