Introduction
In this article, we will learn how to schedule an apex Batch Class in Salesforce without creating multiple classes.
Apex Code
global class ScheduledApexBatch implements Database.Batchable<sObject>, Schedulable {
private String query;
global ScheduledApexBatch (String queryString){
query = queryString;
}
// The batch job starts
global Database.Querylocator start(Database.BatchableContext bc){
//String query = 'SELECT Id, FirstName FROM Lead';//In case of customized query
return Database.getQuerylocator(query);
}
// The batch job executes and operates on one batch of records
global void execute(Database.BatchableContext bc, List<sObject> scope){
System.debug('>>>> execute ' + scope.size());
//perform business logic
}
// The batch job finishes
global void finish(Database.BatchableContext bc){
AsyncApexJob job = [SELECT Id, Status FROM AsyncApexJob WHERE Id = :bc.getJobId()];
System.debug('>>>> finish ' + job.Status);
}
public void execute(SchedulableContext context){
// Implement the scheduling logic here
ScheduledApexBatch batchJob = new ScheduledApexBatch();
Database.executeBatch(batchJob, 200);
}
}
