0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Salesforce】条件によって値が定まるロジックを数式側に持たせる

Last updated at Posted at 2024-11-20

Salesforceでシステム開発を行っていて、条件分岐系のロジックを数式項目で実装すると管理しやすくなるな、と思ったのでシェアします。

レコード保存時、「担当部署」選択リスト項目の値に応じて、宛先を動的に切り替えてメールアラートを送信する、という要件がありました。
大した要件ではないので素直にトリガーフローを作成して、その中で条件分岐のロジックを実装する、というのはあるあるだと思います。

image.png

これでも良いっちゃ良いんですが、分岐の数が増えたりするとフローがごちゃついて管理が大変になってきます。

ここで、条件分岐のロジックを数式に持たせるのはどうでしょう。

メリット1:変更に強い
仕様変更があっても、フロー(やApexなど)の実装部分に手を加える必要がない。
修正箇所が直感的に理解でき、場合によっては非エンジニアでも対応可能。

メリット2:デバッグしやすい
今回の例だと実際にトリガーフローを起動してメール送信しなくても、どの宛先に送信しようとしているかはレコードの詳細画面から数式の値として確認できる。

以下、サンプルの実装です。

対応部署メールアドレス(数式) CurrentDivisionMailAddress_formula__c
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:アドレスコピー用
image.png

フロー2:メールアラート送信用
image.png

フロー1、2の順番で実行しないと意味がないので、フローのプロパティからトリガー順序を設定します。
image.png

ロジックの複雑さ加減にもよるので何でもかんでも数式化する必要はありませんが、結構採用頻度の高いテクニックだと思います。

こちらの記事も根っこは同じ思想ですね。
(数式を活用してできるだけ簡潔に業務要件を整理する)

「〇年縛り契約」→「次回契約更新月」を数式で表現する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?