Blog

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


0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *

Recent Articles

Part 2: Optimizing and scaling microservices. Organic growth of eco-systems.

October 11, 2017 | Nikola Krastev

A microservices approach is not a silver bullet for all software architecture problems. It introduces tradeoffs and challenges of its own. However, process gains and improvements in human performance have been considered to be worth the overhead in technology. Here are some general arguments against using sophisticated SOA. Server performance and overhead in communication By […]

CoreValue President at IT Arena 2017

September 27, 2017

We are pleased to announce that CoreValue president Igor Kruglyak will participate in IT Arena 2017, to be held in Lviv, Ukraine, September 29 – October 1, 2017.