Salesforce の積み上げ集計とフローで自動化を使ってみたい方、うまく扱えていない方へ、積み上げ集計とフローを併用する際に、知っておくと開発で役立つ考慮事項を紹介します。
前回の記事(以下)では、積み上げ集計の作成方法や主な制限、考慮すべき点について解説しております。
【Salesforce】徹底解説!積み上げ集計を使用する際の考慮事項と制限
積み上げ集計を使ったことのない方からは「イメージが付きやすい」、使ったことのある方からは「こんな制限があったのか」等、様々な反響をいただきました。
そんな中、「フローを使用すると、どんな挙動になるのか」といったご意見をいただきました。
私もそうですが、Salesforceで開発を進めていると、フローを使用することが多々あります。
なので今回は、積み上げ集計とフローの関係、影響等を解説していきます。
積み上げ集計で自動計算された場合、レコードの最終更新日が更新されるため、フローも連動して起動します。
過去に、予期せず起動したり、起動想定のつもりが起動しなかったりといったことがテスト段階で判明し、危うく不具合に直結することがありました。
今後も積み上げ集計とフローを併用する際に、同じような失敗を繰り返さないためにも起動する場合の明確な確認をしておきたい、また確認した内容を同様の開発者の方々にも共有しておきたいという思いから本記事を記載させていただきます。
積み上げ集計とフロー
積み上げ集計は、数式項目と同様に自動で計算されます。
再計算されるタイミングは数式項目と異なり、積み上げ集計の基となる子オブジェクトの項目が変更されると実行されます。
ここで疑問となるのが、子オブジェクトを更新すると、親オブジェクトも更新されて、更新時のフローは起動するのかどうか、です。
以下に一例を記載します。
親オブジェクト上に子オブジェクトの金額を積み上げ集計する項目を作成して、これを条件に図1のようなフローを設定します。
項目の「Sum__c」は「積み上げ集計(合計)」のことを指します。
また、フロー実行時は「フローにて更新」項目に「起動しました」を設定するようにしております。

図1 フロー詳細
この場合、以下の両方を満たすと、フローが起動します。
A: フローで設定した親オブジェクトのレコードが更新される(最終更新時刻に変化がある)
B: フローで設定した条件を満たしている(100円より大きい)
①起動する(親レコードの項目を更新する)場合
親レコード上で積み上げ集計項目の値が”200円”とします。
この状態で、親レコードを開き、メモなど特に関係の無い項目を変更した場合においても、フローは起動します。
フローが起動した痕跡として、「フローにて更新」項目が「空白」から「起動しました」に変更されていることが分かります。
積み上げ集計項目の値が”200円”のままであっても、親レコード自体は更新されているためです。先述したA,Bは満たします。

図2 フロー起動説明資料(①起動する場合)
②起動する(子レコードを更新して、親レコードの積み上げ集計が条件を満たす)場合
子のレコードを更新することによって、積み上げ集計項目の値が”100円”より大きければ起動します。

図3 フロー起動説明資料(②起動する場合)
③起動しない(子レコードを更新して、親レコードの積み上げ集計が条件を満たさない)場合
積み上げ集計項目の値が”30円”など100円以下の場合、フローは起動しません。
フローが起動していない痕跡として、「フローにて更新」項目が変更されてません。
積み上げ集計とフローは全く異なる標準機能のため、フローの起動条件とは関係なく、自動計算されます。

図4 フロー起動説明資料(③起動しない場合)
上記①~③の結果を見ると、積み上げ集計の基となる子オブジェクトの項目を更新すれば親オブジェクトの積み上げ集計が更新されて、親オブジェクトのフローは起動することが分かります。
ここでも疑問となるのが、積み上げ集計の基となる子オブジェクトの項目(図4の「金額」や「主従関係」)以外を更新して、親オブジェクトの積み上げ集計の結果が変わらない場合、フローは起動するのかどうか、です。
④起動しない(親レコードの積み上げ集計に関係のない子レコードの項目を更新する)場合
親オブジェクトの積み上げ集計の結果が変わらない場合、フローは起動しません。
常に子オブジェクトを更新した場合に親オブジェクトも更新されて、フローが起動するとは限らないので、開発で使用する際にはお気をつけください。

図5 フロー起動説明資料(④起動しない場合)
最後に
本投稿では、積み上げ集計とフローを併用する際の考慮事項について説明しました。
前回の積み上げ集計についての記事と併せて、積み上げ集計とフローを使用する際のお力になれれば幸いです。
今後もSalesforceの開発で、気になる観点や公式には出し切れていない疑問点等がありましたら投稿し
ていきます。
投稿者プロフィール

-
技術領域:VB、Salesforce
経験:建築業務向け生産支援システム、管理会計システム