ワークフローと承認申請 > フローからフローを新規します。 決定(ロジック)をフローに追加(マウスドラッグ)し、名前"ValidateAccountId"で保存します。 変数"varAccountId"を新規作成します。 高速検索要素"SearchContacts"をフローに追加します。 Sオブジェクトコレクション変数"contacts" を新規し、検索結果にセットします。 これで高速検索要素"SearchContacts"が次のようになります。 次はループ要素""LoopContacts"を追加します。 割り当て要素"LoopContacts"をループの右に追加します 最後にレコード更新要素を追加します。 そして決定(ロジック)を開始要素として設定し、各要素間に線を次のように引きます。 フローを名前"ContactSummaryFlow"で保存し、有効化します。 ContactSummaryProcess 作成 > ワークフローと承認申請 > プロセスビルダーから"ContactSummaryProcess"のプロセスを新規します。 取引先責任者を指定して保存します。 評価条件を追加して保存します。 評価条件が「True」の場合のアクションを追加し、先作ったフロー"ContactSummaryFlow"を指定します。 最後にプロセスを有効化します。 これまで、取引先責任者が新規または編集された時、責任者数を取引先に自動集計する機能が完成しましたが、 取引先責任者が削除されたときにプロセスが動きません。 そして、削除フローとフローVFページでその問題を解決します。 ContactDeleteFlow もう1つフロー"ContactDeleteFlow"を新規作成します。 レコード削除要素"DeleteContact"と変数"varTargetId"を追加します。 最後にフロー要素"ContactSummaryFlow"を追加します。 保存と有効化します。 ContactDeletePage 下記のソースコードでVFページ"ContactDeletePage"を新規作成します https://gist.github.com/983676a54d6db6ec093a 取引先責任者削除アクション カスタマイズ > 取引先責任者 > ボタン、リンク、およびアクションから、取引先責任者の標準削除アクションをVFページ"ContactDeletePage"で置き換えます。 動作確認 取引先責任者を新規 取引先責任者を削除 問題なく動作しているようですね! 次回のポストにはプロセスとフローの他のおもしろい使い方を共有したいと思います Enjoy it!" /> ワークフローと承認申請 > フローからフローを新規します。 決定(ロジック)をフローに追加(マウスドラッグ)し、名前"ValidateAccountId"で保存します。 変数"varAccountId"を新規作成します。 高速検索要素"SearchContacts"をフローに追加します。 Sオブジェクトコレクション変数"contacts" を新規し、検索結果にセットします。 これで高速検索要素"SearchContacts"が次のようになります。 次はループ要素""LoopContacts"を追加します。 割り当て要素"LoopContacts"をループの右に追加します 最後にレコード更新要素を追加します。 そして決定(ロジック)を開始要素として設定し、各要素間に線を次のように引きます。 フローを名前"ContactSummaryFlow"で保存し、有効化します。 ContactSummaryProcess 作成 > ワークフローと承認申請 > プロセスビルダーから"ContactSummaryProcess"のプロセスを新規します。 取引先責任者を指定して保存します。 評価条件を追加して保存します。 評価条件が「True」の場合のアクションを追加し、先作ったフロー"ContactSummaryFlow"を指定します。 最後にプロセスを有効化します。 これまで、取引先責任者が新規または編集された時、責任者数を取引先に自動集計する機能が完成しましたが、 取引先責任者が削除されたときにプロセスが動きません。 そして、削除フローとフローVFページでその問題を解決します。 ContactDeleteFlow もう1つフロー"ContactDeleteFlow"を新規作成します。 レコード削除要素"DeleteContact"と変数"varTargetId"を追加します。 最後にフロー要素"ContactSummaryFlow"を追加します。 保存と有効化します。 ContactDeletePage 下記のソースコードでVFページ"ContactDeletePage"を新規作成します https://gist.github.com/983676a54d6db6ec093a 取引先責任者削除アクション カスタマイズ > 取引先責任者 > ボタン、リンク、およびアクションから、取引先責任者の標準削除アクションをVFページ"ContactDeletePage"で置き換えます。 動作確認 取引先責任者を新規 取引先責任者を削除 問題なく動作しているようですね! 次回のポストにはプロセスとフローの他のおもしろい使い方を共有したいと思います Enjoy it!" />

プロセスビルダーとフローで取引先に責任者の集計項目を作る

積み上げ集計項目は親オブジェクトから子(明細)オブジェクトの値を集計するため使用される項目です。
子オブジェクトと親オブジェクトの関係は主従関係にしないといけません。
残念ながら取引先と取引先責任者オブジェクトは参照関係しか持ってないため、取引先に責任者数のカウントなどに積み上げ集計項目の使用はできません。

この機能実現するには、責任者トリガの開発は一般的なソリューションですが、実はプロセスビルダーとフローで、ノーコーディング的な実現方法があります。

下記は今回設定(新規作成)必要な機能一覧です:
ContactSummaryFlow (フロー)
ContactSummaryProcess (プロセスビルダー)
ContactDeleteFlow (フロー)
ContactDeletePage (VFページ)
※ちょっと待ってよ!一見トリガ開発よりかなり複雑になってしまうではないか? うーん、開発者としては確かにですが、他の人はそう思ってないかもね、特にお客さんたち。 ; )

カスタム項目を新規

取引先に1つカスタム項目”NumberofContacts”(Number(18, 0))を新規作成しておきます。 NumberofContacts

ContactSummaryFlow

作成 > ワークフローと承認申請 > フローからフローを新規します。 ContactSummaryFlow 決定(ロジック)をフローに追加(マウスドラッグ)し、名前”ValidateAccountId”で保存します。 f3_3 変数”varAccountId”を新規作成します。 f3_2 varAccountId 高速検索要素”SearchContacts”をフローに追加します。 SearchContacts Sオブジェクトコレクション変数”contacts” を新規し、検索結果にセットします。 f4_2 f4 これで高速検索要素”SearchContacts”が次のようになります。 f5 次はループ要素””LoopContacts”を追加します。 LoopContacts 割り当て要素”LoopContacts”をループの右に追加します Assignment Assignment 最後にレコード更新要素を追加します。 Record Update element そして決定(ロジック)を開始要素として設定し、各要素間に線を次のように引きます。 f10 フローを名前”ContactSummaryFlow”で保存し、有効化します。 ContactSummaryFlow ContactSummaryFlow

ContactSummaryProcess

作成 > ワークフローと承認申請 > プロセスビルダーから”ContactSummaryProcess”のプロセスを新規します。 Process Builder 1 取引先責任者を指定して保存します。 Process Builder 2 評価条件を追加して保存します。 Process Builder 3 評価条件が「True」の場合のアクションを追加し、先作ったフロー”ContactSummaryFlow”を指定します。 Process Builder 4 最後にプロセスを有効化します。 Process Builder 5 Process Builder 6 これまで、取引先責任者が新規または編集された時、責任者数を取引先に自動集計する機能が完成しましたが、 取引先責任者が削除されたときにプロセスが動きません。
そして、削除フローとフローVFページでその問題を解決します。

ContactDeleteFlow

もう1つフロー”ContactDeleteFlow”を新規作成します。

レコード削除要素”DeleteContact”と変数”varTargetId”を追加します。 Flow Designer  DeleteContact Flow Designer  varTargetId 最後にフロー要素”ContactSummaryFlow”を追加します。 Flow Designer  varTargetAccountId Flow Designer  ContactSummaryFlow Flow Designer  ContactSummaryFlow 保存と有効化します。 Flow Designer  ContactDeleteFlow Flow Designer  ContactDeleteFlow

ContactDeletePage

下記のソースコードでVFページ”ContactDeletePage”を新規作成します

取引先責任者削除アクション

カスタマイズ > 取引先責任者 > ボタン、リンク、およびアクションから、取引先責任者の標準削除アクションをVFページ”ContactDeletePage”で置き換えます。 Buttons  Links  and Actions  Contact   1 Override Standard Button or Link  Delete   2

動作確認

取引先責任者を新規

Result 1 Result 2

取引先責任者を削除

Result 3 Result 5 問題なく動作しているようですね!

次回のポストにはプロセスとフローの他のおもしろい使い方を共有したいと思います
Enjoy it!