【Salesforce】フローの非同期処理に初挑戦したお話
レコードトリガーフローでレコードを作成するが…
Aオブジェクトのレコードを保存したら、Bオブジェクトのレコードを作成するレコードトリガーフローをつくりました。
Bオブジェクトのレコードは複数作成される可能性があるため、そうすると、Aオブジェクトのレコードを更新して保存ボタンを押すと、画面がぐるぐると更新しています!となったまま動かなくなります。
これって、毎日慌ただしくお仕事をされている方にとってはイライラの元ですよね。一秒だって早く次の作業がしたいわけですから。
保存ボタンを押したらすぐAオブジェクトのレコードが保存されて、画面も開放されてBオブジェクトのレコードも作成できている。これが理想なわけです。
同期処理と非同期処理
フローには、同期処理と非同期処理、どちらで処理を行うのか選択することができます。
同期処理とは
ユーザーの操作に対して、その処理がリアルタイムで即座に実行されます。
ユーザーは処理の完了を待たなければならず、処理が終わるまで他の操作ができない場合があります。
通常、比較的早い処理が必要な場合に使用されます。
非同期処理とは
ユーザーの操作に対して、即座に処理を実行せず、後から別のプロセスで実行されます。
ユーザーは処理の完了を待たずに他の操作を続行できます。
長時間かかる処理や、大量のデータ処理など、時間のかかる処理に使用されます。
今回の要件としては、「大量のデータ処理をする可能性がある」「処理の完了を待たずに他の操作を続行したい」になりますので、非同期処理を選択ししました。
非同期処理を行うときのポイント
非同期処理で処理を行いたい場合は、レコードトリガーフローのトリガー設定の下部にある「トリガレコードの元のトランザクションが正常にコミットされた後に外部システムにアクセスするには、非同期に実行パスを含めます。」にチェックをつけます。
そうすると、非同期処理のパスが表示されますので、そこに同期処理と同様にコンポーネントを設置していくのみです。
非同期処理のポイントは、レコードトリガーフローが起動あと、リアルタイムに処理がされない点にあります。
そのため、処理が完了したら、カスタム通知を使用してユーザーに処理が完了したことを通知するようにするのがポイントです。
カスタム通知とは、Salesforce画面右上にある鈴マークのところです。
あの鈴マークには任意に通知が出せるんです!(便利!)
あとは大量のデータを処理するので、ガバナ制限に引っかからないかどうかも確認する必要があります。
開発者コンソールで確認することができます。
開発者コンソールのところまで記載すると記事が長くなってしまうので別記事で取り上げたいと思います!
まとめ
今まで特に何も考えずにレコードトリガーフロー=同期処理でつくっていたので、非同期処理との違いや使い分け、ポイントについて勉強する良い機会になりました。
この記事だと非同期処理の方がいいのでは?となりそうですが、2つの処理のメリットデメリットを理解した上で機能要件に沿って選択することが大切だと思います。
ガバナ制限の確認方法については自分もまだまだ勉強不足なところがありますので、いろいろ試して自信がついたら記事にします!