【Salesforce】フローの概要とできることできないこと
2021年9月に開催されたSalesforceのイベントにて、
段階的にワークフロー・プロセスビルダーを廃止し、今後はフローの機能を強化していくことが発表されました。
ワークフロー・プロセスビルダーで作成してきた自動化プロセスは、
フローに置き換えていく必要があります。
そこで、フローについてこれから数回に分けて紹介していきます。
今回は「フローとは何ぞや?」という概要と、フローでできること・できないことの比較記事となります。
(参照)
・Salesforceの公式文章として初めてフローの廃止に触れた記事(英語)
https://admin.salesforce.com/blog/2021/go-with-the-flow-whats-happening-with-workflow-rules-and-process-builder
■フローの概要
-フローとは?
ノーコードで自動化プロセスやアプリケーション作成が可能なツールです。
Apexほど高度な処理ができませんが、「開発コストが抑えられる」「修正がしやすい」などのメリットから、Salesforceで現在強化を進めている機能の一つです。
-どんなことができるの?
一例として以下のような処理が行えます。
- 簡易的な画面作成
- レコード操作(作成、更新、削除)・検索※
- バッチ処理
- メール通知やChatter投稿などのアクション
- ログイン時に画面呼び出しやレコード更新(ログインフロー)
※レコード保存前更新・レコード保存後更新も可能
※関連レコード以外のレコードの検索も可能
■Apex・LWCとの比較
・Apexとの比較(2022年2月時点)
レコード保存前フロー | レコード保存後フロー | Apex | |
同じレコードの項目更新 ※1 | 利用可能 | 理想的ではない | 利用可能 |
高性能バッチ処理 ※2 | 理想的ではない | 理想的ではない | 利用可能 |
オブジェクトをまたがる作成・更新・削除 | 利用不可 | 利用可能 | 利用可能 |
非同期処理 ※3 | 利用不可 | 利用可能 | 利用可能 |
複雑なリスト処理 ※4 | 利用不可 | 理想的ではない | 利用可能 |
カスタム検証エラー
(入力規則のようにDMLエラー) |
利用不可 | 利用不可 | 利用可能 |
・利用可能:正常に動作する
・理想的ではない:可能だが、重要な考慮事項がある
・利用不可:今後12か月以内にサポートする予定はない
※1 レコード保存前フローはレコード取得や数式項目の使用ができないが、処理が早い
※2 フローは複雑な数式・リスト処理(※4)に弱い・Mapデータ型をサポートしていない
※3 フローは複雑なエラー処理はできない、再試行のデータ量は一定量しかできない
※4 フローはリスト内の並べ替えやフィルター処理が面倒
ループ機能によってコレクション内の「項目」を参照できず、参照できるのは「値」のみ
(参照)
Record-Triggered Automation
https://architect.salesforce.com/design/decision-guides/trigger-automation/#Same_Record_Field_Updates
・LWC(Lightning Web Component)との比較(2022年7月時点)
動的フォーム | 画面フロー | LWC | |
デスクトップ上のカスタムオブジェクト | 利用可能 | 利用可能 | 利用可能 |
デスクトップ上の任意のオブジェクト | ロードマップ | 利用可能 | 利用可能 |
マルチスクリーンフォーム※1 | 利用不可 | 利用可能 | 理想的ではない |
クロスオブジェクト | 利用不可 | 利用可能 | 利用可能 |
フォームの背後にあるロジックまたはアクション※2 | 利用不可 | 利用可能 | 利用可能 |
動的イベント処理※3 | ロードマップ | 利用不可(LWCと組み合わせて可能) | 利用可能 |
ピクセルパーフェクトなスタイリング※4 | 利用不可 | 利用不可(LWCと組み合わせて可能) | 利用可能 |
単体テスト | 利用不可 | 利用不可(LWCと組み合わせて可能) | 利用可能 |
・利用可能:正常に動作する
・理想的ではない:可能だが、重要な考慮事項がある
・利用不可:今後12か月以内にサポートする予定はない
※2:レコード操作やメール通知などのアクション
※3:コンポーネント間の連携(通信)
※4:ピクセル単位でのUIデザイン
https://architect.salesforce.com/design/decision-guides/build-forms/
■フローの実装にあたって気を付ける点
【トランザクションの開始】はレコードの作成・更新、ボタンをクリックしたとき、URLにアクセスしたとき などを指し、
【トランザクションの終了】はレコードの更新が終了したときや、画面要素、ローカルアクション(ブラウザ上のアクション処理)、一時停止要素が実行されたとき などを指します。
・SOQLクエリ(レコード取得要素)の合計:100回
・SOQLクエリ(レコード取得要素)によって取得されるレコード件数:50,000件
・DML ステートメント(レコードの作成・更新・削除要素)によって処理されるレコードの件数:10,000件
■まとめ