Salesforceのフローには、「サブフロー」という機能が用意されています。
処理を分割して管理しやすくするためのものですが、同様の処理を繰り返す際に
実装をシンプルにしてくれる効果があります。(=DRY原則(Don't Repeat Yourself))
実際の要件を例に説明します。
要件
平日の朝に、自分の承認待ちで止まっているレコードがあれば、その一覧を
通知するメールを送る。1件もなければ何もしない。これを担当者ごとに実行する。
以下のように機能を分割して実装しました。
①スケジュールフロー:平日の朝に実行するようスケジュールを設定する
処理の中で担当者の分だけ②を呼び出す
②サブフロー:①から渡された担当者に関して、承認待ちレコードが存在するか確認する
1件以上存在した場合、③のURLを記載したメールを送信する
③レポート:自分(=ログインユーザー)の承認待ちレコードの一覧を表示する
①スケジュールトリガーフロー
土日 or 平日で分岐。平日の場合、担当者の分だけサブフローを呼び出す。
「担当者名(person_name)」「宛先メールアドレス(toAddress)」を渡している。
②サブフロー
承認待ちレコードが存在した場合、メール送信
「person_name」「toAddress」は「入力で使用可能」にチェックを入れる
③レポート
本記事の趣旨から外れてしまうので別記事にまとめました。
→ 【Salesforce】自分の承認が済んでいないレコードが存在する場合、その一覧を毎朝メールする
サブフローを用いることで似た処理を複製する必要がなくなり、保守性が向上します。
今回の例の他に、『「取引先の重複を調べて自身の項目にセットする」処理をサブフローにまとめ、それをトリガーフローやスケジュールバッチから呼び出す』といった機能郡を実装したりしました。
近い内にそれも記事にしようと思います。
サブフローをうまく使いこなせると、フロー開発者として初心者レベルは卒業できたと言って良いのかなと思います。