Apex Database.Batchableで一括処理バッチを実行する
環境
Salesforce
説明
Database.Batchable は、start(), execute(), finish() という3つのメソッドを持っています。
start()
処理したいデータをクエリして返すようにします。
execute()
start() でクエリしてきたデータに対しての処理を記述します。
execute() の処理はクエリしたデータを数件ごとに分割して実行されます。
finish()
全てのデータに対して処理が終わったあと実行される処理を記述します。
使用例
1.バッチのサンプルコード
public class TestBatch implements Database.Batchable<sObject> {
/* Iterable<sObject> を利用する場合 */
public Iterable<sObject> start(Database.BatchableContext bc) {
List<Account> accList = [SELECT ID FROM Account];
return accList;
}
public void execute(Database.BatchableContext bc, List<P> records){
// レコードに対する処理コード
}
public void finish(Database.BatchableContext bc){
// バッチ終了時の処理コード
}
}
public class TestBatch implements Database.Batchable<sObject> {
/* Iterable<sObject> を利用する場合 */
public Iterable<sObject> start(Database.BatchableContext bc) {
List<Account> accList = [SELECT ID FROM Account];
return accList;
}
public void execute(Database.BatchableContext bc, List<P> records){
// レコードに対する処理コード
}
public void finish(Database.BatchableContext bc){
// バッチ終了時の処理コード
}
}
public class TestBatch implements Database.Batchable<sObject> { /* Iterable<sObject> を利用する場合 */ public Iterable<sObject> start(Database.BatchableContext bc) { List<Account> accList = [SELECT ID FROM Account]; return accList; } public void execute(Database.BatchableContext bc, List<P> records){ // レコードに対する処理コード } public void finish(Database.BatchableContext bc){ // バッチ終了時の処理コード } }
2.バッチの実行方法
TestBatch batch = new TestBatch();
// 100件ごとに実行
Database.executeBatch(batch, 100);