スケジュールに追加
追加方法は2つある
設定->開発->Apexクラスを選択。
画面内のApexをスケジュールをクリック。
この中で毎月や毎日、などを選択できる。
終了日も設定出来るので、ずっと動作するさせるものに関しては長めに設定しておく。
コードで実行
設定画面から追加での最大のデメリットは実行時間が毎時0分のみ、と、分の指定ができないところ。
これをさせようと思うとコードからジョブに追加してやる必要がある。
以下が追加させるコード
System.schedule('ジョブ名','0 0 * * * ?', new Schedule_sample());
第二引数に指定しているものは、クーロン式、というもので、ここで時間指定をしている。
これは、左から、秒、分、時、日、月、曜日、年となっている。
(年は省略化)
例)
‘0 0 13 * * ?’:毎日13時に実行
‘0 0 10 ? * MON-FRI’:月~金の10時に実行
‘0 0 * * * ?’:毎時0分に実行
‘0 30 * * * ?’:毎時30分に実行
秒のみの指定は怖くて試してません。
この実行式を開発者コンソールの匿名実行から実行することでジョブに追加させられる。
コードを書いて、実行ボタンをクリック。
テスト
テストコードはスケジューラに対して実行する。
Schedule_sample_Test.apxc
@isTest
public class Schedule_sample_Test {
public static String CRON_EXP = '0 0 0 15 3 ? 2022';
static testmethod void test() {
//データ準備
Test.startTest();
String jobId = System.schedule('ScheduleApexClassTest', CRON_EXP, new Batch_sample());
Test.stopTest();
//バッチ後のデータ確認
}
}
指定するクーロン式はなんでもよくて、Test.stopTest();の後にすぐにスケジュールが実行される。