Batch Class in Salesforce

All About Batch Class in Salesforce | The Developer Guide

Batch Apex is used to run large jobs (think thousands or millions of records!) that would exceed normal processing limits. Each time you invoke a batch class, the job is placed on the Apex job queue and is executed as a discrete transaction.

Type Of Batch Apex

batch apex method

Advertisement

dont miss out iconDon't forget to check out: Deleting Apex Classes / Apex Triggers From Production Using Workbench | Salesforce Tutorial

Example of Batch Apex

Batch Class: Update All the Old Opportunities in Org using Batch with criteria :

Update custom picklist field “Type”

If Amount is >=100 then “LITE”,

Else if Amount is >=200 then “MEDIUM” ,

Else if Amount is >=300 then “ADVANCE”

Also, create a scheduler class to run the batch job at 01:00 AM.

Batch Class Code

global class LeadProcessor implements    Database.Batchable<Sobject> ,Schedulable{
    string Query;
    global Database.QueryLocator start(Database.BatchableContext bc) {
        Query = 'Select id, name, Amount,StageName,Custom_Type__c,Type  From Opportunity';
        return Database.getQueryLocator(query);
    }
    global void execute(Database.BatchableContext bc, List<Opportunity> Scope1){
        for(Opportunity p : Scope1){
            //   system.debug('@'+p.stage__c);    
            if(p.Amount <= 100){
                p.Custom_Type__c='LITE';
            } 
            else if(p.Amount <= 200){
                p.Custom_Type__c='MEDIUM';  
            }
            else if (p.Amount <= 300){
                p.Custom_Type__c='ADVANCE';  
            }
            else{
                p.Type='Prospect'; 
            }
            //    Scope1.add(p);  
        }   
        update scope1;
    }    
    global void finish(Database.BatchableContext bc){   }    
    global void execute(SchedulableContext sc) {
        LeadProcessor b = new LeadProcessor();
        Database.executeBatch(b,15);
    }
}

dont miss out iconCheck out an amazing Salesforce video tutorial here: Skill Based Routing with Apex/Flows in Salesforce

Anonymous Window (Ctrl + E) Code

LeadProcessor b = new LeadProcessor();

String sch = '30 12 17 18 10 ?';

// In this String sch 30 represent a second 

//In this String sch 12 represent a minutes

//In this String sch 17 represent a hours (5 PM).

//In this String sch 18 represent a day of the month

//In this String sch 10 represent a month of the year

//In this String sch ? represent a current Year 

system.schedule('Job Name9', sch, b);

Responses

Popular Salesforce Blogs