Blogical

AWS/Salesforceを中心に様々な情報を配信していきます(/・ω・)/

フローによるループ処理の応用

こんにちは、ロジカル・アーツの岡田です。

フロー要素の一つであるループ処理について、ループ回数を任意で設定したいと思ったことはありませんか?

今回はループ要素の設定を応用して、ループ回数を制御する方法をご紹介します。

一般的なループ処理の例

まずは一般的なループ処理について確認しましょう。
フローにおけるループではコレクション変数に対して、その要素の数だけループ処理を行うことができます。

以下は取引先に紐づく契約に対してループを行う例です。

ループ処理の前に、トリガした取引先に紐づく契約を取得しています。
その際に[保存するレコード数]のオプションで[すべてのレコード]を選択することで返されるレコードがコレクション変数に格納されるため、これを対象にループ処理を設定することができます。

上記例は一般的なループの使い方で、既存レコードに対して処理を行う際に効果的ですがループ回数は関連するレコード件数によって変化します。

応用したループ処理の例

次にループを任意の回数実施したい処理を考えてみましょう。

取引先の作成時に複数の契約を作成するフローを例として説明します。
事前準備として、新規リソースからループ対象となるコレクション変数を作成します。 今回は数値のデータ型を選択します。
[複数の値を許可 (コレクション)]のチェックを有効にすることでコレクション変数として扱うことができます。
コレクション変数はデフォルトで空白となっているので、事前に割り当てを行う必要があります。 数値(ループ回数)で管理するために"1"を割り当てます。
値を代入するのではなく、コレクション要素への追加になるので演算子に注意しましょう。

これでループ用のコレクション変数が設定できました。
ループ内の処理も設定してみます。 このままでも動作はしますが、コレクション変数の中身が最初に割り当てた1要素だけなので1度でループを抜けてしまいます。

継続条件と併せて、ループ内で変数に値を追加しましょう。 ループ変数を数値にしているので直観的に設定が可能です。
条件を"5"未満とすることで、5回目の処理を行った後にループを抜けます。 ループ継続する場合にはコレクション変数に値を追加します。
数式の変数を作成して「ループ中の数値 + 1」とすることで、次のループ変数を追加できます。 設定は以上です。

おわりに

いかがだったでしょうか。
今回の例のように指定回数分だけレコードを作成したい場合などでも便利ですが、ループ対象のコレクション変数にはテキストも割り当てることができたり拡張性のある機能だと思います。

本来であればApexを用いた開発が求められるような要件でもなるべくフローだけで完結させたい、そんなときにこの記事がご参考になれば幸いです。