Apex Batch Class:
global class UpdateCaseBatch implements Database.Batchable<sObject>, Database.Stateful {
global set<Id> caseIdSet;
global string caseStatus;
global integer recordProcessed = 0;
public UpdateCaseBatch( set<Id> caseId, string strStatus) {
this.caseIdSet = caseId;
this.caseStatus = strStatus;
}
global Database.querylocator start(Database.BatchableContext bc){
string squery= 'SELECT Id,status from case where Id In:caseIdSet';
return Database.getQueryLocator(squery);
}
global void execute(Database.BatchableContext bc , List<Case> scope){
for(Case cse: scope){
cse.status = caseStatus;
recordProcessed = recordProcessed +1;
}
update scope;
}
global void finish(Database.BatchableContext bc){
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setToAddresses(new String[] {'dineshsamudre94@gmail.com'});
mail.setSenderDisplayName('Batch Process');
mail.setSubject('Case Statuses updated successfully');
mail.setPlainTextBody(recordProcessed + ': case record updated successfully');
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
}
Execute above batch class:
//Anonymous apex
Map<Id,Case> caseMap = new Map<Id,Case>([SELECT ID,status from case ]);
if(!caseMap.isEmpty()){
UpdateCaseBatch obj = new UpdateCaseBatch(caseMap.keySet(),'Closed');
string jobId = Database.executeBatch(obj,20);
System.debug('jobId:'+jobId);
}



No comments:
Post a Comment