Apex Databaseで一括処理を実行するサンプル

環境
Salesforce Apex

概要
取引先のソースを1から2に設定したいとします。
この場合startメソッドでソース = Aの取引先レコードを取得します。
executeメソッドにはAをBに書き換える処理を記載します。
finishには更新レコード数を取得してメールで通知する処理を記載します。

使用例
Database.Statefulをクラスに定義すると、インスタンスメンバー変数を使用したトランザクション間での
値保持が可能になります。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
global class ClassName implements Database.Batchable<sObject> {
global Database.QueryLocator start(Database.BatchableContext bc) {
// SOQLやクエリロケータでレコードを取得する処理
}
global void execute(Database.BatchableContext bc, List<Object> scope){
// startのレコードリストを取得して、それらに実行したい処理
}
global void finish(Database.BatchableContext bc){
// ジョブの状況の検知やその結果をメール通知する処理
}
}
global class ClassName implements Database.Batchable<sObject> { global Database.QueryLocator start(Database.BatchableContext bc) { // SOQLやクエリロケータでレコードを取得する処理 } global void execute(Database.BatchableContext bc, List<Object> scope){ // startのレコードリストを取得して、それらに実行したい処理 } global void finish(Database.BatchableContext bc){ // ジョブの状況の検知やその結果をメール通知する処理 } }
global class ClassName implements Database.Batchable<sObject> {
    global Database.QueryLocator start(Database.BatchableContext bc) {
        // SOQLやクエリロケータでレコードを取得する処理
    }
    
    global void execute(Database.BatchableContext bc, List<Object> scope){
        // startのレコードリストを取得して、それらに実行したい処理
    }    
    
    global void finish(Database.BatchableContext bc){
        // ジョブの状況の検知やその結果をメール通知する処理
    }    
}

 

IT

Posted by arkgame