#はじめに・作業の流れ
こちらは前回書いた記事の「プロセスビルダーとFlowBuilderを組み合わせた(基礎)」の続編となります。
内容が連続しているわけではないのでこちらだけ読んでも差し支えないですが、そもそもFlowBuilderがよくわからない人は最初に読まれたほうが良いかもしれません。
今回は一括処理を行うための「ループ」について解説していきます。そしてそれに関連して「レコードコレクション変数」と「ループ変数」についても説明していきます。
##「コレクション変数」とは
一つのデータを入れる箱が変数といいますが、複数のデータを入れる箱は「コレクション変数」といいます。正確かどうかはっきりしませんが、一言でいうと配列とかリストというとしっくりくるかもしれません。
イメージでいうと上の図の通りです。
フローでコレクション変数を作成するにはデータ型のとなりにあるチェックボックス「複数の値を許可 (コレクション)」にチェックを入れるだけです。
コレクション変数の中でも特にレコード情報を保存した複数のデータを「レコードコレクション変数」といいます。
イメージは上記のようになります。複数のレコードがコレクション変数に収められており、各々のレコードの情報も持つことが出来ます(厳密には少し違うのかもしれません。。。)。
##「ループ」を使用するためには
ポイントはレコードコレクション変数単体では各々のレコードの操作が出来ないということです。このレコードを編集するには「ループ」を使用してレコードコレクション変数からレコードの情報を「ループ変数」に渡すことが必要になります。
「ループ」を使用するとどのコレクション変数をループさせるか、ループするためのループ変数を指定する必要があります。ループ変数はレコード変数と同じ設定で出来るのですが、特にループで使用するレコード変数をループ変数というようです。
##例:商談の一括更新のループを作成する
今回は同じ取引内にあるすべての商談のフェーズを「Close Won」にするというフローを作成してみたいと思います。
まず全体像は以下の通りになります。
###レコードの取得
一番初めのレコードの取得は動的にレコードを取得したいので前回解説した基礎のように条件を指定していきます。「変数に保存する商談項目を選択」では商談ID以外にもフローで使用する項目を指定することができます(Spring'20ではそれすら自動的にすべて使えるようになるそうです・・・)。今回使用する項目は「取引先 ID」「フェーズ」です。
次のレコード取得は最初に取得した商談の取引先IDに一致するものを全て取得します。
「商談レコードを絞り込み」の値には「get_Opp.AccountId」とありますが、意味合いとしてレコード変数「get_Opp」の取引先IDを指定していることになります。このようにレコード変数はそれぞれレコードの項目を持つことが出来て、それを指定して値や条件として使えるので便利です。
また今回は条件に合致するすべてのものを保存してループで使用するので「保存するレコード数」はすべてのレコードを選択します。
###ループの設定
上記のループの画像で説明したとおりの設定となります。
ループ変数の内容としてデータ型を「レコード」、コレクション変数と同じオブジェクト(今回は商談)でなければ上手くいきませんのでご注意ください。
###レコードの更新
こちらもループの画像で意味合いの記載はあります。
ループ中の商談IDと一致するものに対して、フェーズを最初に取得した商談と同じフェーズにするということになります。
###プロセスビルダーの設定
こちらのフローを保存し、有効化したのち、プロセスビルダーで商談が「Close Won」になったらこのフローが起動するアクションを設定、そしてフロー変数と商談IDを指定してあげれば完成となります。
#あとがき
フローのループが理解できるとあれもこれも簡単に一括でレコードの更新ができるようになり、フローを作るのが楽しくなってくると思います。自分の組織の課題に合わせた設定も少しずつフローで出来るようになるかと思います。ぜひ楽しみながらFlowBuilderを操作してフローを作ってみてください!
長文最後まで読んでいただきありがとうございました!
##ループの修正版
こちらを記事にした当時はこのループが正しいものだと思っておりましたが、厳密にはこの方法だと制限に達してしまい上手くいかないケースも出てくるのではないかと思います。上記のループを修正した記事がこちらになります。