以前商談の一括更新や行動一括作成時にループの解説を致しました。フロー上の更新・作成数が少なかったり、他のプロセスビルダーやApexなど多く使われていない場合は実用的で有効だと思っています。
しかしループ上で多数のコレクション変数を対象にレコードの更新・作成や他のプロセスビルダーやApexなどのシステムを多数使われている場合は制限に引っかかってエラーになる可能性があります。またTrailheadで確認できますが、ループ中にレコードの作成・更新の要素を含むのはよくないようです。
プロセスビルダーと Flow Builder の機能を組み合わせる
レコードの作成や更新などのアクションをループ内に追加することは避けてください。間違いなく制限に達してしまいます。
最近になってようやく納得感をもってレコード作成や更新を一括でできるようになりましたのでご紹介できればと思います。
##制限を意識したフローのループ
以前解説した商談一括更新と行動一括作成を制限を意識して修正してみました。要素も少ないので変更部分だけのご説明で十分かと思いますがいまいちわからなかった方はそちらを一読されてもよいかと思います。
ループ中のポイントをまとめると以下の通りです。
1.割り当てで空のレコード変数に値を代入する
2.変更したレコード変数を新しく用意したレコードコレクション変数へ追加する
###1.割り当てで空のレコード変数に値を代入する
既存の項目を更新する場合はそのIDと更新したい項目を指定します。レコードの一括更新の場合はIDがないとエラーが発生し、レコードの一括作成の場合はIDがあるとエラーになるので注意が必要です。商談の一括更新の場合は商談Idと最初に取得した商談のフェーズが割り当てに必要で、行動の一括作成の場合はユーザに画面へ入力してもらった項目だけ割り当てに使用します。
###2.変更したレコード変数を新しく用意したレコードコレクション変数へ追加する
変更したレコード変数を新しく用意したレコードコレクション変数へ追加します。
割り当てで演算子を追加とすれば、文字通りレコード変数がレコードコレクション変数へ追加されていきます。
###レコードコレクション変数にあるレコードをまとめて更新・作成する
レコードを一度に更新する場合は「レコードまたはレコードコレクションからの ID およびすべての項目値を使用」を選択して先ほどレコード変数を追加したレコードコレクション変数を追加します。一度にレコードを作成する場合、「作成するレコード数」を「複数」としてレコード変数を追加したレコードコレクション変数を追加します。
デバッグをする際、フローにループが含まれているとレコードのIDが沢山含まれます。問題が起こった場合、レコードIDから調べることになると思いますが、classicのように末尾にレコードIDを入力するのでなく、オブジェクトのAPIとviewの間のレコードIDを調べたいレコードIDに置き換えれば直接レコードにアクセスすることができます。違ったオブジェクトのレコードIDでも問題なく表示されます。これは例えば取引先のレコードを見ていてる状態でも商談のレコードIDを変えるだけで自動的にオブジェクトのAPI名も変わります。