Apex Database.Batchableで一括処理バッチを実行する

環境
Salesforce

説明
Database.Batchable は、start(), execute(), finish() という3つのメソッドを持っています。
start()
処理したいデータをクエリして返すようにします。

execute()
start() でクエリしてきたデータに対しての処理を記述します。
execute() の処理はクエリしたデータを数件ごとに分割して実行されます。

finish()
全てのデータに対して処理が終わったあと実行される処理を記述します。

使用例
1.バッチのサンプルコード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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);

Apex

Posted by arkgame