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> {
/* Database.QueryLocator を利用する場合 */
public Database.QueryLocator start(Database.BatchableContext bc) {
// レコードをクエリする
return Database.getQueryLocator(
'SELECT ID FROM Account'
);
}
public void execute(Database.BatchableContext bc, List<P> records){
// レコードに対する処理コード
}
public void finish(Database.BatchableContext bc){
// バッチ終了時の処理コード
}
}
public class TestBatch implements Database.Batchable<sObject> { /* Database.QueryLocator を利用する場合 */ public Database.QueryLocator start(Database.BatchableContext bc) { // レコードをクエリする return Database.getQueryLocator( 'SELECT ID FROM Account' ); } public void execute(Database.BatchableContext bc, List<P> records){ // レコードに対する処理コード } public void finish(Database.BatchableContext bc){ // バッチ終了時の処理コード } }
public class TestBatch implements Database.Batchable<sObject> {
    /* Database.QueryLocator を利用する場合 */
    public Database.QueryLocator start(Database.BatchableContext bc) {
        // レコードをクエリする
        return Database.getQueryLocator(
            'SELECT ID FROM Account'
        );
    }

    public void execute(Database.BatchableContext bc, List<P> records){
        // レコードに対する処理コード
    }
    public void finish(Database.BatchableContext bc){
        // バッチ終了時の処理コード
    }
}

2.バッチの実行方法
TestBatch batch = new TestBatch();
Database.executeBatch(batch);
インスタンスを作成してから、Database.executeBatch() を呼び出すことで実行します。

Apex

Posted by arkgame