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?

Salesforceのバッチ処理の管理

Last updated at Posted at 2024-01-10

①決まった時間に処理が動き出す(ex:バッチAをAM0:00に起動)
②バッチ処理間に依存関係を付ける(ex:バッチAの処理完了後、バッチBを実行)
③バッチ完了状態がSalesforceのホーム画面上でユーザーが把握できるようにする
イメージとしては、スケジューラーを使用して順次処理を起動させるような仕組みを組む

Apexバッチならスケジュールすることができるので、①の要件は満たせると思います。

②についてはJobの実行結果を監視する必要があると思います。他に走るジョブがなければ、ステータスが実行中のジョブを検索して結果が0件であれば後続処理を流すような仕掛けをつくれば②も可能だと思います。

ただ、②は繰り返し起動するような処理が必要です。後続処理も自分自身が2回流れないような制御も必要だと思います。

③については、BatchJobを表示するカスタムコンポーネントを作るか、ジョブの終了後に通知メールを送信する方法が使えるのではないでしょうか。


バッチ処理の実行結果を管理するカスタムオブジェクトを作っても問題なければ以下の方法が簡単かもしれません。

①の処理がスタートしたらレコードを作成します。また完了したら完了日時あるいは完了チェックボックスをtrueにします。

②の処理は①が終わるであろう時間に起動させます。(平均的な時間間隔分あけます)

②の処理の最初で、日付と処理名などをキーに検索して①の処理が完了しているか、また②自身の処理がないかを確認して問題なければ、処理を開始しします。ここでまたカスタムオブジェクトにレコードを追加します。処理が終われば①と同じように完了日時あるいは完了チェックボックスをtrueにします。

②の2回目の処理を時間起動でスタートして、やはり①の終了と②自身のレコードがあれば(終わってなくても処理が走っていれば)、後続の処理は行いません。そうでなければ、後続の処理を流します。

上記の繰り返しを何個か時間を空けて設定しておけば、バッチ処理だけで仕組みを構築できると思います。

また、このカスタムコンポーネントに処理結果やエラー内容も書き込んでおけば便利だと思います。またカスタムオブジェクトなので、標準的な画面でよければカスタムコンポーネントの作成も不要です。

設定など

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?