【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.