Apex 一括処理
Apex 一括処理クラスを使用すると、レコードをバッチ単位で非同期に一括処理できます。データの整理やアーカイブなど、処理するレコードの数が多い場合、Apex 一括処理が適しています。一括処理クラスを呼び出すごとに、ジョブは Apex の実行待ちジョブキューに置かれます。
一括処理クラスの実行ロジックは、レコードのバッチごとに 1 回コールされます。デフォルトのバッチサイズは 200 レコードです。カスタムバッチサイズも指定できます。さらに、各バッチ実行は、別個のトランザクションとみなされます。新しいレコードのバッチごとに、新しいガバナ制限のセットが適用されます。このため、コードをガバナ実行制限内に抑えやすくなります。一括処理が別個のトランザクションとして扱われることのもう 1 つの利点は、レコードのバッチの部分処理が可能になることです。あるバッチの処理が失敗した場合でも、正常に処理された他のすべての一括処理トランザクションが影響を受けたり、ロールバックされたりすることはありません。
Apex 一括処理構文
1global class CleanUpRecords implements Database.Batchable<sObject> {-
start メソッド
1global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContext bc) {}start メソッドは、Apex 一括処理ジョブの開始時にコールされます。このメソッドは、インターフェースメソッド execute に渡すレコードまたはオブジェクトを収集します。
-
execute メソッド:
1global void execute(Database.BatchableContext BC, list<P>){}execute メソッドは、メソッドに渡すレコードのバッチごとにコールされます。データの処理単位ごとに必要な処理をすべて実行する場合に、このメソッドを使用します。
このメソッドは次を取得します。- Database.BatchableContext オブジェクトへの参照。
- List<sObject> などの sObjects のリスト、またはパラメータ化された型のリスト。Database.QueryLocator を使用している場合は、返されたリストが使用されます。
レコードのバッチが start メソッドから受け取った順序で実行される保証はありません。
-
finish メソッド
1global void finish(Database.BatchableContext BC){}finish メソッドは、すべてのバッチが処理された後にコールされます。確認メールの送信や後処理操作を行う場合に、このメソッドを使用します。
一括処理クラスの呼び出し
1BatchClass myBatchObject = new BatchClass();
2Database.executeBatch(myBatchObject);このチュートリアルの各ステップでは、一括処理クラスの作成とテストの方法、および一括処理ジョブを呼び出す方法を学習します。