一般社団法人 全国個人事業主支援協会

COLUMN コラム

# 背景
SalesforceのApexで大量のデータを更新する処理を実装した際に、
既に作成していたレコードトリガフローが大量に起動してしまいエラーが発生することがありました。
フローの通常の設定では同期処理で実行されるため、負荷がかかるようです。

# フローを非同期で処理するやり方

レコードトリガフローの条件を絞って、条件に一致するレコードのみ実行することで負荷を軽くするのがベストプラクティスと思われますが、
ユースケース的に必ずレコード更新時に起動したい場合は非同期で処理することを検討する必要がありそうです。

具体的には、フローの「非同期パス」を使うと、処理のタイミングを調整したり、負荷を軽くすることができるっぽいです。

『トリガーレコードの元のトランザクションが正常にコミットされた後に外部システムにアクセスするには、非同期に実行パスを含めます。』にチェック入れると、『非同期に実行』パスが表示されるので、そこのパス上に更新処理を設定します。

これでApexで大量のデータを更新時にはレコードトリガフローが非同期で処理されて、エラーを解消することができました。
(あくまでフロー内の処理自体をすべて『非同期に実行』パスに入れているだけで、厳密には『即時実行』パスは同期で実行されている可能性はありそうです。)

The following two tabs change content below.

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア