【Salesforce】バッチ処理のスケジュールクラス
Salesforceのバッチ処理を、スケジューリングしたい場合がよくあると思います。
バッチ処理について記述したので、ついでにメモです。
バッチ処理のスケジューリングを行うためには、「schedulable」を継承したクラスが必要です。
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_scheduler.htm
動作のイメージとしては、スケジュールされたクラスからバッチ処理を呼び出す形でしょうか。
1 2 3 4 5 6 7 8 9 10 11 12 13 | global class BatchScheduler implements Schedulable { /** * 実行する処理 */ global void execute(SchedulableContext SC) { // バッチクラスを作成する TestBatch batch = new TestBatch(); // バッチ処理を設定する Database.executeBatch(batch, 5 ); } } |
ちなみに、implementsを使用しているのでこのような書き方もできるようです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 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.