Play Around Batch Apex And Schedule Apex

Play Around Salesforce Batch Apex And Schedule Apex

Batch Apex

Batch Apex classes are beneficial if the task is something to run large jobs like thousands or millions which is exceeded than normal processing limits. Through batch class one can process the records asynchronously. The specific advantages for using the batch class :

  • If any batch failed and not processed successfully then other successful batch transactions not rolled back.
  • A new transaction starts with new governor limits which make sure that your code runs under their governor limits.

There are three methods which are used in batch class

  • Start : In start method the records are collected which are further utilize in execute method. Here we can use QueryLocator and Iterable for records retrieval and we can query upto 50 million records by queryLocator that bypassed the governor limit whereas in Iterable the governor limit for fetching records through SOQL is still enforced.
  • Execute : The data under every batch get processed within execute method. The default size of batch is 200 records. This method has reference of Database.BatchableContext object and a list of sObjects i.e List<sObject>. By using Database.QueryLocator we can use returned list.
  • Finish : This method is used for post processing operations and it calls once all batch get processed.

Syntax :

global class MyBatchClass implements Database.Batchable<sobject> {
    global (Database.QueryLocator | Iterable<sobject>) start(Database.BatchableContext bc) {
        // collect the batches of records or objects to be passed to execute
    }
    global void execute(Database.BatchableContext bc, List
 records){
        // process each batch of records
    }    
    global void finish(Database.BatchableContext bc){
        // execute any post-processing operations
    }    
}
</sobject></sobject>

Example:
global with sharing class BatchClassTest implements Database.Batchable&lt;sobject&gt; {
global Database.QueryLocator Start(Database.BatchableContext bc){
String query = 'select name,phone,AccountNumber,industry from Account'+
'where industry =\'Energy\'';
return Database.getQueryLocator('select name,phone,AccountNumber,industry from Account'+
' where industry =\'Energy\'');

}
global void execute(Database.BatchableContext bc, List&lt;Account&gt; scope){
List&lt;Account&gt; account =new List&lt;Account&gt;();
for(Account acc : scope){
acc.Name='Energy '+acc.Name;
// acc.Name=acc.Name.removeStart('Energy Energy Energy Energy ');

account.add(acc);
}
update account;
}
global void finish(Database.BatchableContext bc){
}
}

For executing batch Class write below code in the developer console, where 1 signifies the no. of records in a batch you can change this value according to requirement.

Database.executeBatch(new BatchClassTest(),1);

Schedule Apex

Schedule apex classes let you schedule the run of your apex classes at the specified time so that the class can run without a delay. An apex class that implements the Schedulable interface for the class determines Schedule apex class. By using System.schedule the method we can schedule a run of an instance of the class at the specified time.

Syntax :

global class SomeClass implements Schedulable {
global void execute(SchedulableContext ctx) {
// awesome code here
}
}

Example :
global class ScheduleClassTest implements Schedulable{
global void execute(SchedulableContext sc){
Database.executeBatch(new BatchClassTest(),10);
}
}


We can schedule jobs by two different ways:

  • By Scheduling a Job from the UI.
  1. From Setup, enter Apex in the Quick Find box, then select Apex Classes.
  2. Click Schedule Apex.
  3. For the job name, enter something like Daily Oppty Reminder.
  4. Click the lookup button next to Apex class and enter * for the search term to get a list of all classes that can be scheduled. In the search results, click the name of your scheduled class.
  5. Select Weekly or Monthly for the frequency and set the frequency desired.
  6. Select the start and end dates, and a preferred start time.
  7. Click Save
  • By Using code in developer console or anyplace inside code.

ScheduleClassTest reminder = new ScheduleClassTest();
// Seconds Minutes Hours Day_of_month Month Day_of_week optional_year
String sch = '20 30 8 10 2 ?'; //10Feb 08:30:20
String jobID = System.schedule('Job Name', sch, reminder);

Thanks For Reading!!
Happy Salesforce!!

0 Comments

Leave a Reply

CONTACT US

We're not around right now. But you can send us an email and we'll get back to you, asap.

Sending

About Us

Forcetalks is a Salesforce collaboration platform for coders & developers, geeks & nerds, consultants & business heads, admins & architects, managers & marketers and of course the business owners. A community where you can learn from, where you can contribute to. For you. For Salesforce. Read More...

Copyright 2018 Forcetalks. All Right Reserved.

Log in with your credentials

or    

Forgot your details?