0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

スケジュールによってトリガーされるフローの改善

Last updated at Posted at 2023-11-02

使用を開始する前に、スケジュール済みのパスは、現在以下のタイプのレポートでトリガされるフローでのみ利用可能であることを覚えておく必要があります。

image.png

機能はフローで自由形式レイアウトを使用する場合のみ表示されることにも注意してください。現在ベータ版の自動レイアウトビルダーでは利用できません。上記の条件を満たしてからオブジェクトを選択すると、フローの開始ステップにスケジュール済みのパスオプションが自動的に表示されます。

スケジュール済みのパスを設定するためのUIは、決定ステップの作成と同様ですが、結果を指定する代わりに、そのパスを実行するさまざまな特定時点を指定します。
image.png

これがスケジュール設定されていることを確認するには、[設定]→[Environments(環境)]→[Monitoring(監視)]→[Time-Based Workflow(時刻ベースのワークフロー)]に移動します。


Hidden Gem in Spring 23: Schedule-Triggered Flow Improvements

  • スケジュールによってトリガーされるフローは、非常に便利なものになりつつあります。何故ですか?

Spring 23 では、フロー インタビューで実行される 2,000 要素の制限が削除されます。私のフォローを長く続けている方なら、私が 2021 年に、スケジュールによってトリガーされるフローがどのように理想的に構築されるべきかについての議論を引き起こしたことをご存知でしょう。私が直面した課題は、2000 という制限よりも、記録をロックする問題に関連していました。

  • 実行される 2,000 要素の制限は何ですか?

フローが実行されると、特定のパスをたどります。決定要素に進み、左に曲がり、そこで 2 つの要素を実行します。次にループに入り、5 つのレコードを処理します。ループ内に 3 つの要素がある場合、さらに 15 の要素が実行されることを意味します。これらすべてを合計すると、各フロー インタビューの合計数になります。特定のフロー インタビューが 2,000 を超えると、エラーがスローされます。ここでカウントするのはキャンバス上の要素の数ではないことに注意してください。実行パス上の要素を数えます。

  • スケジュールトリガーフローのアキレス腱: 🦵

スケジュールによってトリガーされるフローは、処理するレコードの順序を決定できないため、レコード ロックの問題が発生する傾向があります。最初に処理するものをランダムに選択します。

  • ロックエラーとは何ですか? 💻

Salesforce がレコードを処理するとき、関連するレコードが一時的にロックされ、処理できなくなります。たとえば、商談を更新するとします。関連する取引先および取引先担当者のレコードは、このトランザクション中はロックされます。複数の更新が同時に行われると、更新によってロックされたレコードが更新されようとする可能性がありますが、これは不可能です。スケジュールによってトリガーされるフローが複数の更新を同時に実行するのはなぜですか? バッチ処理されているためです。

  • バッチ処理とは ❔

Salesforce は、設定できるパラメータでない限り、実行する特定の操作をデフォルトのバッチ 200 でバッチ処理します。バッチサイズを変更できる場合もあります。この設定はどこで見られますか? データローダーを使用して 1,000 レコードをインポートする場合、設定でバッチ サイズを変更できます。レコードによってトリガーされるフローでスケジュールされたパスを構築するときにバッチ サイズを設定することもできます。スケジュールによってトリガーされるフローにはこの設定はありません。200 件以上のレコードがフローの開始要素のエントリ条件に適合する場合、200 件のフロー インタビューが 1 つのトランザクションにバッチ化されます。

ここからが問題の始まりです。

ロック エラーのリスクを軽減するには、次の 2 つの方法があります。

1️⃣ バッチサイズを減らす

2️⃣ 同じレコードに関連するレコードをまとめて並べ替えて処理します。

スケジュールによってトリガーされるフローを実行する場合、これらのメソッドは使用できません。

  • 何ができるでしょうか?✅

スケジュールによってトリガーされるフローを、子レコードではなく親レコードで実行するように設定できます。これにより、1 つのアカウントに関連するすべての商談をまとめて処理できるようになります。

  • なぜ以前はそれが実現できなかったのでしょうか? ❌

関連レコードをループしたり、場合によってはさらに 1 レベル進んでそれらのレコードの関連レコードをループしたりすると、ほぼ確実に、恐ろしい 2,000 以上の要素の実行エラーが発生します。これは、以前は Apex コード ソリューションを使用することをお勧めする典型的な使用例でした。今ではこの問題は発生しません。

  • これはどこで役に立ちますか? 💡

すぐに更新する必要のない複雑なロールアップ集計を設定できます。代わりに、子供たちが寝ている夜にこれらを実行してください。

カスタム オブジェクト レコードを作成および更新してデータをフラット化し、レポートを容易にすることができます。たとえば、ダッシュボード上で特定のデータを並べて表示したり、レポートで複雑な比較を作成したりすることができない場合、夜間にスケジュールされてトリガーされるフロー ジョブを使用してこれを容易にできるようになりました。

上記のスケジュールによってトリガーされるフローは、1 つのフロー インタビューで 1,000 を超える商談レコードをループしています。つまり、2,000 以上の要素が実行されます。

これは複雑な領域です。重要な点を抜け落ちていたり、評価を間違えていたりするかもしれません。したがって、以下にコメントして、実りある議論を始めるのに協力してください。

私は、皆さんの Salesforce Flow スキルを向上させることに大きな喜びを感じています。そのため、大規模なセールで次のライブコースを用意しています。このグループであなたが獲得できる席は残りわずかです: 🔥

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?