今回は「Apexバッチ処理のスケジューリング方法」についてです。
Apexバッチの実装方法などに関してはこちらの記事にまとめていますのでぜひどうぞ~

スケジューラークラスの作成
Apexバッチ処理をスケジューリングするためには、バッチクラスを動かすためのスケジューラークラスを作成する必要があります。
以下、スケジューラークラスのサンプルです。
public class AccountBatchSchedule implements Schedulable{
public void execute(SchedulableContext sc){
system.debug('AccountBatchスケジューラークラス');
//動かしたいバッチをnew
AccountBatch ab = new AccountBatch();
Database.executeBatch(ab, 200);
}
}
スケジューラークラスでは、Schedulableインターフェースを実装します。そしてexecuteメソッドの中で、実行したいバッチクラスとバッチサイズを引数に指定してあげれば完了です。
シンプルですね。
バッチのスケジュール
さて、スケジューラークラスを作成したところで、次はスケジューリングをしていきます。
ここでは「設定」からスケジューラークラスをスケジューリングする方法と、 匿名ウィンドウでバッチの実行タイミングを指定する方法をみていきます。
「設定」からスケジュール
- 設定がシンプルでラク
- 1時間単位での指定しかできない(分単位の指定ができない)


上画像の「Apexクラス」の選択で、先ほど作成したスケジューラークラスを指定します。
次にそのスケジューラークラスを動かしたいタイミングを設定します。
毎週もしくは毎月と、開始、終了時間の組み合わせで実行タイミングを指定することが可能です。「保存」を押して、指定した時刻まで待機です。
また、スケジュール内容は「設定」> 「スケジュール済みジョブ」で確認できます。

この設定方法は非常にシンプルで扱いやすいのですが、時間指定が1時間単位なので、毎時30分に実行したいというような設定はできません。
Anonymous Window (匿名ウィンドウ)でスケジュール
- 分単位で細かい実行タイミングの指定が可能
- コードで指定する必要あり
「Anonymous Window (匿名ウィンドウ) 」 は開発者コンソールの上部にある「Debug」タブから開けます。(Ctrl + Eでも開けます。)

ウィンドウを開いたら以下のようにコードを入力します。
system.schedule('AccountBatchJob', '0 0 11 * * ?', new AccountBatchSchedule());
上記のコードで実行すると、毎日11時0分0分に処理が実行されます。
構成としては、以下のようになっています。
system.schedule(スケジュール名, 実行タイミング, 実行するスケジューラークラス);
実行タイミングですが、クーロン式で指定する必要があります。
左から、「秒 分 時 日 月 曜日 年」という構成になっています。(※年は省略可)
パッと見わかりずらいのでいくつかサンプルを挙げておきます。
実行タイミング | クーロン式 |
---|---|
毎日11時に実行 | ‘0 0 11 * * ?’ |
毎時30分に実行 | ‘0 30 * * * ?’ |
月~金の12時に実行 | ‘0 0 12 ? * MON-FRI’ |
匿名ウィンドウからスケジュールした場合でも、スケジュール内容は「設定」> 「スケジュール済みジョブ」で確認できます。
まとめ
今回は「 Apexバッチ処理のスケジューリング方法 」についてまとめてみました。
「設定」からバッチのスケジューリングをできるのは非常に便利なんですがね、なんで分単位で指定できないのか、、、
そこが少しい惜しい。
そんなSalesforce。
おしまーい。

コメント