Vinod Sebastian – B.Tech, M.Com, PGCBM, PGCPM, PGDBIO

Hi I'm a Web Architect by Profession and an Artist by nature. I love empowering People, aligning to Processes and delivering Projects.

Advertisements




Salesforce Batch Apex

Introduction

Salesforce Batch Apex is a framework that allows you to process large amounts of data asynchronously in batches to avoid hitting governor limits.

Syntax

The syntax for Batch Apex in Salesforce involves creating a class that implements the Database.Batchable interface. This interface requires you to define three methods:

  • start: This method is used to start the batch job and return the records to be processed.
  • execute: This method processes the records in the batch.
  • finish: This method is called after all batches are processed.

Salesforce Batch Apex Example

Here is an example of a Batch Apex class that updates the Account records:

    global class AccountUpdateBatch implements Database.Batchable {
        global Database.QueryLocator start(Database.BatchableContext bc) {
            return Database.getQueryLocator('SELECT Id, Name FROM Account');
        }
        
        global void execute(Database.BatchableContext bc, List scope) {
            for(Account acc : scope) {
                acc.Name = 'Updated Name';
            }
            update scope;
        }
        
        global void finish(Database.BatchableContext bc) {
            // Any post-processing logic goes here
        }
    }

Test Classes for Above Example

When writing test classes for Batch Apex, make sure to cover all scenarios including batch execution, governor limits, and error handling. Here is an example test class for the AccountUpdateBatch:

    @isTest
    private class AccountUpdateBatchTest {
        @isTest
        static void testBatch() {
            // Test batch execution
            Test.startTest();
            AccountUpdateBatch batch = new AccountUpdateBatch();
            Database.executeBatch(batch);
            Test.stopTest();
            
            // Add assertions here
        }
    }

Purpose

The primary purpose of using Batch Apex in Salesforce is to handle large data volumes efficiently without hitting governor limits. It allows you to process records in smaller chunks, improving performance and avoiding timeouts.

Considerations

When implementing Batch Apex, consider the following points:

  • Batch size: Determine the optimal batch size based on the volume of data being processed.
  • Governor limits: Be mindful of Salesforce governor limits and ensure your batch job stays within these limits.
  • Error handling: Implement proper error handling mechanisms to address any issues that may arise during batch processing.
  • Testing: Thoroughly test your Batch Apex classes and ensure they cover all possible scenarios.