【2023年まとめ】Salesforceのフロー

Salesforceエンジニアのぺろです！
この記事は「NoCode & LowCode Advent Calendar 2023」の記事として書いています。
https://qiita.com/advent-calendar/2023/nclc

ノーコードという言葉が広がる前からSalesforceはSalesfroceはノーコードで処理を自動化することができます。

## Salesforceフローの基本概要

Salesforceフローは、ビジネスプロセスを自動化し、カスタマイズするためのパワフルなツールです。これは、ノーコーダーでも直感的にプロセスを設計できるため、プログラミングができないビジネスユーザーやアドミニストレーターにとって非常に有用です。

- オブジェクトの選択と設定: フローは、特定のオブジェクトに基づいてビジネスプロセスを構築します。オブジェクトは、データを保存するための基本的な要素であり、フローはこれらのオブジェクトに対する操作や処理を指定します。

- ロジックの構築と条件の追加: フローは条件に基づいてビジネスプロセスを実行します。条件には、IF文やループなどのロジックが含まれ、これによりプロセスが特定の状況に対応できます。

- フローのテストとデバッグ: フローを作成したら、組み込まれたデバッグツールを使用してそれをテストできます。これにより、フローが期待どおりに動作するかどうかを確認し、必要に応じて修正できます。

Salesforceフローは、柔軟性があり、ビジネスプロセスの自動化を効果的かつ効率的に行うための強力なツールとなっています。

## 2023年の主な機能アップデート
Salesforceは年3回大きくアップデートされますのでフローの機能も大きく進歩しました。

元々プロセスビルダーと呼ばれるフローより簡単に自動化を実装できる機能がありましたが、プロセスビルダーを廃止しフローに統一していくという発表がありSalesforce界隈を大きく騒がせました。

その影響もあり、フローの機能がどんどんアップデートされていったのですが、その中でも今回はインパクトの大きな機能のみピックアップしていきます！

フローの構築をするにあたって知っておくべきアップデートなのでぜひ見ていってください！

### トランザクションの実行要素数上限２０００の廃止
フローは元々1トランザクションあたり２０００要素までしか処理できないという制限がありました。

要素というのは以下の図で示している割り当てや画面などのアイコン1つ1つのことです。

![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629169/4e095bb0-375b-a090-44f6-1aa56c538207.png)

プログラムを書く方はお馴染みかと思いますが、for文のような繰り返し処理を実装した場合大量データを扱うとすぐに２０００の制限に引っかかってしまう課題がありました。

その課題を回避するためにApexというプログラムを書く必要が出たりで回避策を模索してきました。

せめて繰り返し処理の時は要素のカウントをしないようにしてほしい...!Salesforceエンジニアなら誰もが考えたことがあると思います。

そんな課題が2023年から撤廃され要素数を気にせず実装できるようになりました！

DMLなど他のガバナ制限はまだありますが、フローの使い勝手が向上したのは革命ですね！

個人的に今年一番のメインアップデートだと思います！

### カスタムエラー要素の追加
フローにはいくつか種類がありますが、今回取り上げたいフローはレコードトリガフローです。

このフローは何かしらのレコードが作成、更新、削除された時に処理を自動で実行させれる機能です。

自動で処理を実行できるのは非常に便利ですが、処理を実行中にエラーでこけてしまうことがあります。

その場合、フロー自体がこけてしまいメールでエラーの旨が通知されますが、メールで通知を送らせることもなく軽微な修正ですぐ処理をやり直したい場合もあるかと思います。

例えばとある項目の値が未入力で保存された場合は起動したフローがエラーで落ちるとします。
（フローの起動条件も色々と設定できますので、そもそも起動しないようにできますが例としてイメージをお願いします。）

このエラーは最初から想定されるエラーなのでわざわざ処理を落とすことは避けて、とある項目の値が未入力かどうか判定し、未入力であれば「値を入れてください」というようなアラートを出すことが簡単にできるようになりました。

今まではノーコードで実装することは難しくApexを書いてアラートを出すなどの対応が必要でしたが全てノーコードのフローで対応できるようになったのでかなり便利になりました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629169/bcd9d1f0-fbd3-1b27-af39-04df557bd1c1.png)

実際に取引先を更新
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629169/816d7afa-7188-9a46-b7cf-8dbccf7ca62f.png)

エラー文が自動で表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629169/bdabd8ee-c521-a61e-8130-37172078378b.png)

取引先番号に値を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629169/7971255d-75fa-13a0-872b-d289b4cbe7f4.png)

正常に保存
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629169/861bc195-216e-ddb5-b9cc-1950c05f09a0.png)

例で取り上げた項目の値がブランクであればアラートを出すという処理は入力規則で対応可能ですが、実際の案件ではフロー内で色々処理をしていると基本的には問題ないがある条件の場合は処理を完了させたくないのでアラートを出したいということがあります。

例えば自動でレコードを作成するフローがあったとして、何かしらの理由でオブジェクトに作成するレコード数は1000件までと決めていた場合、既存レコードが１０００件の場合はレコード自動作成フローは起動しても「レコード数の上限に達しているため自動でレコードを作成できませんでした」などのアラートを出し処理を終了することが可能となります。

今まではApexを書かなければアラートを出せないので、ノーコードで対応するためにはレコードを作成できない旨をメールで通知するなどの対応が必要でしたが、アラートをSalesforceの画面に出せるようになっため他の画面を見る必要なくすぐに結果がわかるため業務の生産性を上げることが可能となりました。

### その他のフローの機能の更新
上記で紹介した機能以外にもフロー要素の切取や検索など細かいけれどもありがたい機能はこの1年で色々と更新されました。

しかし、個人的に最もインパクトがある機能はガバナ制限の撤廃とカスタムエラーです！

ノーコーダー向けにSalesforceの機能紹介も兼ねて書いておりますので、ここまで読んでSalesforceにご興味を持ってくださった方は公式が注目の機能の動画を用意しておりますのでぜひ見てみてください。
https://salesforce.vidyard.com/watch/xHVLKWMuUKnaHU7NJXoBdM


何かSalesforceで気になることがありましたらお気軽にXでご連絡ください。
https://twitter.com/perogineer