特定のレコード変更時のフローの保存前トリガのハンズオン

学習の目的

この単元を完了すると、次のことができるようになります。

  • 保存前更新をフローを使用して新規レコードと変更されたレコードを更新する。
  • 特定のレコード変更が行われた場合にのみフローパスを進む。
  • Salesforce 認定 Platform アプリケーションビルダー資格を維持する。

フロー内の保存前更新を使用した新規レコードと変更されたレコードの更新

新機能

Spring '20 でアプリケーション構築者は、Flow Builder ではレコードが保存される前にフローをトリガして実行できることを知りました。 

レコードの作成または更新により自動起動フローをトリガし、追加の更新をレコードに加えてからレコードをデータベースに保存することができるようになりました。フロー内の保存前更新は、他の使用可能なレコードトリガ更新よりもはるかに高速です。たとえば、フロー内の保存前更新は、プロセスビルダーで作成されたレコード変更プロセスでの更新よりも 10 倍高速です。レコード変更プロセスをフローに置き換えて、ユーザがレコードを保存するときにスピナーが表示される頻度を最小限にします。

保存前更新を実行するフローを有効化するには、アプリケーション構築者に「すべてのデータの参照」権限が必要です。

おそらく、プロセスビルダーに精通したユーザは、レコード変更プロセスを使用して、プロセスをトリガする各レコードに追加の更新を加えます。このようなプロセスでは、新しいケースレコードごとに [範囲] カスタム項目が自動的に設定される可能性があります。フロー内の保存前更新では、同じ目的をより短時間で達成できます。各レコードがデータベースに再度保存されないためです。この追加の保存手順を回避することで、実行に時間のかかる割り当てルール、自動レスポンスルール、ワークフロールール、および他のカスタマイズの再実行もスキップされます。

おそらく Apex トリガには慣れているでしょう。保存前更新を実行するフローは before トリガに似ています。前述のレコード変更プロセスは after トリガに似ています。保存手順で、フロー内の保存前更新は Apex before トリガの直前に実行されます。

このスピードのため、フロー内で保存前更新を使用して、新規または変更されたレコードの項目を更新することをお勧めします。Apex コードとレコード変更プロセスをフロー内の保存前更新に置き換えることで、Salesforce サーバの最大 CPU 時間の制限を回避することもできます。ただし、次の目的では、レコード変更プロセスまたは Apex after トリガの使用が必要になる場合があります。

  • 最終更新日項目や新規レコードの ID など、レコードの保存後にのみ設定される項目値にアクセスする。
  • 関連レコードを作成または更新する。
  • フローを起動するレコードの更新以外のアクションを実行する。

そのしくみ

自動起動フローを作成して、[開始] 要素を開きます。

[レコードトリガフロー] が選択されている [新規フロー] ウィンドウ

[フローをトリガする条件:] には [レコードが作成または更新された]を選択します。[フローを実行:] には、[レコードが保存される前] を選択します。

[レコードが作成または更新された] と [レコードが保存される前] を選択してトリガを設定します。

保存前更新を実行するフローの場合、Flow Builder ツールボックスでは、[割り当て]、[決定]、[ループ]、[レコードの取得] という 4 つの要素のみが提供されます。これらの要素により、他の Salesforce レコードからデータを取得して、そのデータをもとにトリガレコードの項目を更新するかどうか、どの値に更新するべきかを判断することができます。

[開始] [レコードトリガフロー] 要素が表示された Flow Builder。

$Record グローバル変数には、フローの実行をトリガするレコードからの値が含まれます。したがって、[レコードの取得] 要素を追加してレコードデータを取得したり、フロー変数を作成してレコードデータを格納したりする必要はありません。$Record グローバル変数の値がフローによって変更されると、そのレコードに新しい値が自動的に適用されます。ですから、新しい値をデータベースに保存するために [レコードの更新] 要素を追加する必要はありません。

特定のレコード変更が行われた場合にのみ進むフローパス

新機能

Winter '21 でアプリケーションの作成者は、Flow Builder では関連しないレコードを除外するためのパスをフローに設定できることを知りました。

フローの使用事例に関連しないレコードの更新を除外して、すでにフローをトリガしたレコードの再処理を回避できるようになりました。フローをトリガしたレコードが特定の条件を満たすように編集された場合には異なるパスを進むように、レコードの更新によってトリガされるフローを設定できます。決定結果の設定では、トリガレコードが条件の要件を満たすように更新された場合にのみ実行されるように、結果を設定できるようになりました。

このオプションは、ワークフロールールとプロセスビルダーで使用される関数 ISCHANGED や、Apex で使用される変数 oldMap/newMap と同様の強力な絞り込み機能をフローに提供します。プロセスビルダーまたは Apex で以前のバージョンのデータをチェックする必要なしに、Flow Builder で直接オートメーションを構築します。

そのしくみ

レコードトリガフローで、レコードが更新されたとき、またはレコードが作成もしくは更新されたときにトリガされるように開始要素を設定します。

「レコードが更新された] と [レコードが作成または更新された] というトリガオプションが強調表示されている [トリガを設定] 画面。

トリガレコードが特定の条件に一致するように更新された場合にのみ実行されるように決定要素の結果を構成するには、[フローの実行をトリガしたレコードが条件の要件を満たすように更新された場合のみ] を選択します。

フローの実行をトリガしたレコードが条件の要件を満たすように更新された場合にのみ結果を実行できる [新規意思決定] 画面。

メモ

メモ

このオプションは、トリガレコードが以前条件を満たさなかったかどうかと、トリガレコードではなく、変数 $Record 変数が現在条件を満たしているかどうかを確認します。設定した決定要素を実行する前にフローで $Record 変数の項目が変更された場合、決定要素は $Record の新しい項目値が条件を満たしているかどうかを確認します。

これで Platform アプリケーションビルダー向けの新機能のリリースノートをすべて確認できました。次は、Flow Builder で実際に見ていきましょう。

リソース