Salesforceでシステム開発を行っていて、条件分岐系のロジックを数式項目で実装すると管理しやすくなるな、と思ったのでシェアします。
レコード保存時、「担当部署」選択リスト項目の値に応じて、宛先を動的に切り替えてメールアラートを送信する、という要件がありました。
大した要件ではないので素直にトリガーフローを作成して、その中で条件分岐のロジックを実装する、というのはあるあるだと思います。
これでも良いっちゃ良いんですが、分岐の数が増えたりするとフローがごちゃついて管理が大変になってきます。
ここで、条件分岐のロジックを数式に持たせるのはどうでしょう。
メリット1:変更に強い
仕様変更があっても、フロー(やApexなど)の実装部分に手を加える必要がない。
修正箇所が直感的に理解でき、場合によっては非エンジニアでも対応可能。
メリット2:デバッグしやすい
今回の例だと実際にトリガーフローを起動してメール送信しなくても、どの宛先に送信しようとしているかはレコードの詳細画面から数式の値として確認できる。
以下、サンプルの実装です。
case( CurrentDivision__c
, "部署A", "bushoA@test.co.jp"
, "部署B", "bushoB@test.co.jp"
, "部署C", "bushoC@test.co.jp"
, "bushoD@test.co.jp"
)
メールアラートの宛先はメールアドレス項目のみ設定可能なので
数式のテキスト値を別項目にコピーする処理が必要です。
今回の対応では、フローを2つ用意しました。
(フロー1と2をまとめてしまっても期待どおり動くかどうかは未検証です。)
フロー1、2の順番で実行しないと意味がないので、フローのプロパティからトリガー順序を設定します。
ロジックの複雑さ加減にもよるので何でもかんでも数式化する必要はありませんが、結構採用頻度の高いテクニックだと思います。
こちらの記事も根っこは同じ思想ですね。
(数式を活用してできるだけ簡潔に業務要件を整理する)