フローで積み上げ集計をやってみた(2-2)
前回の続きで参照関係のオブジェクトで積み上げ集計をフローでやってみます。
処理を作成する
前回はリソースを作成しましたので、実際のフロー処理を作成します。
レコードの取得
プロセスビルダーを起動した子オブジェクトと同じ親をもつレコードを取得します。
- 要素から
レコードを取得
をパレット上にもっていきます - 設定画面が開くので以下のような設定をします
ループ処理
取得したレコードを1件ずつ取り出すループ処理を作成します
- 要素から
ループ
をパレット上にもっていきます - 設定画面が開くので以下のような設定をします
- 表示ラベル:
子オブジェクトをループ
- API参照名:
loopChildren
- コレクション変数:
{!listChildren}
- ループ変数:
{!child}
- 表示ラベル:
listChildren
に複数の子オブジェクトが格納されるので、1件ずつ取り出してchild
に割り当てて処理をします。
設定したら、レコードを取得からループ処理へ矢印をつなげて保存してください。
割り当て
先に設定したvarTotal
に売上を足し込んでいきます
- 要素から
割り当て
をパレット上にもっていきます - 設定画面が開くので以下のような設定をします
設定が完了したら、ループから割り当てへ矢印をつなげます。
そのときにループコネクタを選択画面が表示されるので、コレクション内の項目ごと
を選択して完了を選択し、割り当てからループに矢印をもどします。
親レコードを更新
最後に親レコードにvarTotal
で計算した合計値を更新します。
- 要素から
レコードを更新
をパレット上にもっていきます - 以下の設定をします。
設定したらループから矢印をつなげます
このときは自動的にループコネクタが選択された状態になります。
有効化
これまでの設定をすべて保存したら有効化
ボタンを押してください
プロセスビルダーの設定
最後にフローを呼び出すプロセスビルダーを設定します。
子レコードが作成されたときに呼び出すようにします。
※売上が空欄の場合だったり、変更されたときなど実運用では考慮することがありますが今回は単純に作成されたときという条件で呼び出します。
- ルール適用時のアクション種別で
フロー
を選択 - フローで作成したものを選択
- フロー変数に
varParentId
を選択(これしか選べないはずです) - 種別を
項目を参照
にしてparent__c
を選択してください
最後にプロセスビルダーを有効化してください。
動作確認
実際に動作確認です。
キャッシュが残って更新がきれいにはいかなかったですが親オブジェクトの項目が子オブジェクトによって更新されたことが確認できました。
まとめ
フローを使うとプログラムがかけなくても複雑な処理を実装することができます。
ただしある程度の知識と慣れが必要だと思いますので、かんたんなものから始めてステップアップするのが良さそうです。
今回は使用しませんでしたが、決定
という要素を使うことで条件分岐も可能となりより複雑な処理ができます。
今回の内容であればプロセスビルダーだけでも実装は可能ですが、一例として。。