Winter '23のFlow Builder新機能について
- In/Not In演算子
- データテーブル
など今回のアップデートでFlow Builder使用者にとって嬉しいアップデートが多かったのではないでしょうか?
その中でも
最も既存のFlow Builderをリファクタリングできる可能性のあるIn/Not In 演算子
について試してみます。
この記事で詳しく書かないこと
この機能の利用者がFlowを使ったことがあると思いますので詳しく1から作成手順は書きません。
In/Not In 演算子について
何が変わるのか?
今までは
取得したレコードコレクションに関連するレコードを複数取得しようと思うと
- レコードコレクションで ループを実行
- ループの中で関連レコードを取得
というステップになっていました
これは SOQLクエリのガバナ制限を超えてしまうためエラーメールで困った人も多かったのではないでしょうか?
もちろん
カスタムでApexを組めば対応できましたが、公式でサポートされそうな機能ではあったので
保守対象のApexが増やすことなくできるようになったのはやはり嬉しいですね!
アップデート前 | アップデート後 |
---|---|
サポートされる型
以下の型であればコレクションを そのままIn/Not In演算子で使うことができます。
- テキスト
- 数値
- 日付
- 日付/時間
- 通過
- チェックボックス
サポートされていないもの
レコードコレクションは In/Not In演算子に対応していないため、
レコードを取得し、サポートされている型だけのコレクションに再度入れ直す必要があります。
Winter '23時点ではサポートされていませんが、
今後のアップデートではサポートされる可能性はあります。
- レコードコレクション
試してみた
やったこと
- AccountのAccountSourceがWebのものを取得
- 取得したAccountを元にContactをIn演算子で検索するため
- テキストのコレクションにAccountのIDを再セット
- AccountのIDのコレクションでContactを取得
完成形
今回試しに作った検証用のFlowは GitHubに公開しています。
どうなったか?
Account Id の コレクション変数 WebAccountIds
([0012w000017ipeMAAQ,0012w000017ipeQAAQ])で
ContactのAccountIdを対象に検索!
次に含まれるで IN
次に含まれないで Not In の挙動になります。
取得した取引先責任者のAccountId項目のコレクション変数ContactsAccountIdList
([0012w000017ipeMAAQ,0012w000017ipeMAAQ,0012w000017ipeQAAQ,0012w000017ipeQAAQ)
と比べた際に ContactはAccountに対して多なので複数レコードが取れていますが
[0012w000017ipeMAAQ,0012w000017ipeQAAQ] のみ取れているので
問題なくIN演算子を使うことでループでレコード取得することができました
最後に
In検索されてリファクタリングが捗りますね!
今回のアップデートでリファクタリングだけではなく、
ApexのFlowアクションで外部システムからID等のリストを取得→取得したID等でレコードをIN検索
のような使い方もできるようになるので非常にいいアップデートだったと思います。
データテーブル等のアップデート内容も見ていこうと思います!