【Salesforce】バッチ処理のスケジュールクラス
Salesforceのバッチ処理を、スケジューリングしたい場合がよくあると思います。
バッチ処理について記述したので、ついでにメモです。
バッチ処理のスケジューリングを行うためには、「schedulable」を継承したクラスが必要です。
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_scheduler.htm
動作のイメージとしては、スケジュールされたクラスからバッチ処理を呼び出す形でしょうか。
global class BatchScheduler implements Schedulable {
/**
* 実行する処理
*/
global void execute(SchedulableContext SC) {
// バッチクラスを作成する
TestBatch batch = new TestBatch();
// バッチ処理を設定する
Database.executeBatch(batch, 5);
}
}
ちなみに、implementsを使用しているのでこのような書き方もできるようです。
global class TestBatch implements Schedulable, Database.Batchable<sObject>{
/**
* バッチ呼び出し処理
*/
global void execute(SchedulableContext SC) {
// バッチクラスを作成する
TestBatch batch = new TestBatch();
// バッチ処理を設定する
Database.executeBatch(batch, 5);
}
/**
* 開始処理
*/
global Database.QueryLocator start(Database.BatchableContext BC){
return Database.getQueryLocator('select Id from Account');
}
/**
* 実行処理
*/
global void execute(Database.BatchableContext BC, List<Account> accountList){
}
/**
* 終了処理
*/
global void finish(Database.BatchableContext BC){
}
}
週ごとや月ごとのスケジュールであれば、
[設定]>[開発]>[Apexクラス]のクラス一覧の上にある[Apexをスケジュール]で設定することができます。
細かく設定したい場合は、開発者コンソール等でスケジュールする必要があります。
No comments.