Salesforce: Schedule schedulable job or batchable for next minute from anonymous apex script

April 15, 2015

Sometimes we have to check Schedulable Job or Batchable job execution when scheduled.

Also we don’t want to wait until specific date or time happened (assume on production your Schedulable or Batchable job should be scheduled to 1 a.m. of last day of the month, and you start working at 10 a.m. of average day of the month), you have to test it now if it won’t fail during the execution on scheduled time.

So you have solution: you can temporarily schedule your job to next minute in sandbox. Don’t forget to delete it later. However, web interface does not allow you to schedule job for a specific minute; only hour, day, month you can choose. Still you may do this from the anonymous apex script execution.

The following code snippet implements scheduling class called Name_Of_Your_Class_Implementing_Schedulable_Interface which should implement Schedulable interface. This snippet uses System.schedule method. Job will be shown on your scheduled job list (at URL.getSalesforceBaseUrl().toExternalForm() + ‘/08e’)  under name “Some fake string to be passed as job name, do not forget that it should be unique :)”.

1
2
3
4
5
6
Datetime dt = Datetime.now().addMinutes(1);
String sch = '0 ' + dt.minute() + ' * ' + dt.day() + ' ' + dt.month() + ' ' + ' ? ' + dt.year();
System.schedule( 'Some fake string to be passed as job name, do not forget that it should be unique : ) ', sch, new Name_Of_Your_Class_Implementing_Schedulable_Interface() );

The following code snippet implements scheduling class calledName_Of_Your_Class_Implementing_Batchable_Interface which should implement Batchable interface. Batch size will be 2000 for this snippet. This snippet uses
System.scheduleBatch method.

1
2
System.scheduleBatch(new Name_Of_Your_Class_Implementing_Batchable_Interface(), 'x', 1, 2000);

If you do not want to specify batch size, you may just omit that parameter and run this code snippet which uses This snippet uses
System.scheduleBatch method.

1
2
System.scheduleBatch(new Name_Of_Your_Class_Implementing_Batchable_Interface(), 'x', 1 );

In last option, default value of 200 as scope size will be used.

Also, if you want just to execute Batchable class without scheduling, you may use one of two overloaded versions of Database.executeBatch method like following

1
2
3
Database.executeBatch( new Name_Of_Your_Class_Implementing_Batchable_Interface() );
Database.executeBatch( new Name_Of_Your_Class_Implementing_Batchable_Interface(), 2000 );

You may or may not specify scope size as second optional parameter. If you do not specify scope size, default value of 200 will be used.

I hope you enjoyed reading this post and found something useful and learned something new.

You may click like to let me know that you did really enjoy 🙂

Tags



Share


Recent Articles

Get 100% Code Coverage for Salesforce Custom Metadata Based Decisions

January 18, 2018 | Bohdan Dovhan

How to obtain a full coverage for code which uses Custom Metadata for strategy-like decision implementation? Introduction Many applications use configuration data. Configuration data might be relevant to the entire organization, or a subset of user, or even different for each user. For the purposes of this article, we will focus only on global configuration […]

Logging of Exceptions in Salesforce

January 11, 2018 | Mykola Senyk

Unpredicted behaviour in a custom code. Can we eliminate it? The ability to customize your Salesforce org code is not just a “nice to have.”  It greatly increases the capability and flexibility of Salesforce. However, custom code can also be tricky to use. It would be great if we could detect unpredicted behavior in our […]

© Copyright - CoreValue 2018
Salesforce, Sales Cloud, and others are trademarks of salesforce.com, inc., and are used here with permission.
Used with permission from Microsoft.