会社案内BLOG採用情報お問い合わせBLOG2019.10.14Salesforceでノンプログラミングでプロセス自動化Tweetこんにちは。クラウドソリューショングループのエンジニアの高尾です。プラットフォームには、ノンプログラミングでプロセス自動化を実現できるツールがいくつか準備されています。承認プロセスこの中でフローについては、少し前のリリースで機能が格段によくなっており、プロセスビルダーと組み合わせることで、今までApexトリガなどプログラムを書くことでしか実現できなかったことが、コーディングなしで実現できるようになりました。今回はお客様からご要望頂くことも多い、取引先に関連する活動の件数を取引先のカスタム項目へ積み上げてみたいと思います。今まではこのような参照関係にあるオブジェクトの積み上げ集計をしようと思うと、子のオブジェクトにApexトリガを準備する必要があったのですが、フローとプロセスビルダーを利用することでプログラムを書かずとも実現できます。取引先に「活動件数」という数値型のカスタム項目を(デフォルト値は0)を追加し、新規で取引先レコードを1件作成し保存します。次にフローを作成していきます。フローというメニューがあるのでそちらをクリックします。遷移先の画面で「新規フロー」ボタンをクリックします。するとモーダルが立ち上がるので、「自動起動フロー」を選択して作成ボタンをクリックします。新規のフローの編集画面が表示されます。フロー内で使用する変数を定義していきます。ツールボックスの「マネージャ」タブを選択し、新規リソースをクリックします。作成された活動レコードから関連する取引先IDを取得する変数を定義します。すると以下のようになります。活動件数を保持する変数を定義します。すると以下のようになります。取得した活動のレコードを格納する変数を定義します。(コレクション)」を忘れずチェックします。(開始とレコード取得は接続しておきます)実際のフローを定義します。ツールボックスの「要素」タブを選択し、関連するTODOを取得するために、「レコードを取得」をドラッグ&ドロップで右側のフィールドへ持っていきます。以下のように設定して、取引先IDが関連する完了済TODOを取得し、定義した変数へと格納するようにします。作成した「レコードを取得」のコンポーネントと開始コンポーネントを接続しておきます。ツールボックスから「ループ」をドラッグ&ドロップで右側のフィールドへ持っています。取得した活動レコードの件数分繰り返すよう設定します。(ループ変数はTODO型の変数を新規で追加します)作成した「ループ」のコンポーネントと「レコードを取得」を接続しておきます。ツールボックスから「割り当て」をドラッグ&ドロップで右側のフィールドへ持っていきます。活動レコードがある場合に、件数格納用変数をカウントアップするようにします。作成した「割り当て」のコンポーネントと「ループ」を接続しておきます。(相互に接続されるようにします)なお、ここまでは件数取得の対象がTODOのみなので、対象オブジェクトを行動にして、これまで作成したレコード取得~割り当てを準備して接続しておくと行動の件数も合算して集計可能です。(私の場合は実行日以前の日付の行動を取得してカウントするようにしました)ツールボックスから「レコードを更新」をドラッグ&ドロップで右側のフィールドへ持っていきます。件数格納用の変数で、取引先の活動件数項目を更新するようにします。作成した「レコードを更新」のコンポーネントと「ループ」を接続しておきます。フローの名称等をつけて保存すればフローの設定は完了です。(忘れずに有効化しておきます)続いてフローを動かすためのプロセスビルダーを作成します。(今回はフローがメインですので細かい画面遷移は割愛します)起動条件は以下のように取引先が関連していて、状況が完了になっているTODOを対象とします。アクション定義では先程作成したフローを選択し、フロー変数へ取引先IDを渡すように設定します。最後にサンプルとして作成した取引先に関連する活動履歴を作成してみます。活動件数が自動的に1に変更されます。以上のようにプログラミングの知識がなくとも、トリガライクな処理を実装することができます。私自身、以前のフローを使うことに苦手意識があったので長らく触っていませんでしたが、それなりの知識があればお客様自身でも作成・編集可能なメリットもあるので今後は積極的に活用していきたいと思っています。~初の県外試合~iPhoneでショートカットを使った自動化をやってみた。