こんにちは、アンダーソンです。
Spring21のアップデートで、さらにフローが強化されて前の値を取得できるようになりました。
これでレコードの〇〇の値が変更されたかどうか。を取得できるはずなのでやってみました。
Contents
簡単なフローを作成

全体はこんな感じです。
今回のやりたいことは、決定の部分。
前の値は『Record__Prior』で取れるようですので、今回は
現在の金額『Record.Amount』より大きい『Record__Prior.Amount』を設定してみます。

こんな感じにすると、前の値と金額を比較できるはず。
実行タイミングも該当の値が〜をキャッチするために要件を満たすように〜に設定。
商談の説明という項目があったので、そこに金額が上がってたらUp、下がってたらDownを入れるように設定しました。


実験
このレコードを使います。

金額をあげてみると。。

逆に下げると。。

うんうん。いけてますね。
ちなみに今回保存後にしたけど、保存前でもできるんだろうかって事で
少し作り直しました。

こうすれば何度も更新せずに済むので再帰的にならずにいいですね。
この辺の前とか後ってApexTrigger書いてたら何となくわかるけど、フローで初めてみたって方には難しいんではと思いました。
起動条件にはできない
前の値を取得するというのはあくまで使えるのが下記になるようです。
- 数式
- アクションの入力値
- 割り当て値
- 決定結果
- レコードを作成、更新、取得、または削除するときの検索条件値または個々の項目値
すなわち、起動条件にはできないのでどちらにしてもフローはトリガされるので、
決定などでしっかり対象の動かすべきレコードを見定める必要はありますね。
懸念点
できることがかなり多くなってきたフロー。
自動化するのにノーコードでできることが増えるのは個人的に賛成ではあるんですが、
プログラミングというかアルゴリズム的な考えもなしにバンバン作成できる危険性がましているのも事実な気がします。
トリガフロー自体もプロセスビルダーと同じでそれぞれの実行順序は保証されないのでできれば組織に一つとかで済ますのがいいような気がします。
基本ApexTriggerってそんなバンバン作らないのでその辺り設計をしっかりしないといけないなと思いました。