Sample Code to Schedule an Apex class
Would this help? Then you'll have to set the schedule in your apex classes setup
global class Miko_Scheduled Implements Schedulable
{
global void execute(SchedulableContext sc)
{
setToMiko();
}
public void setToMiko()
{
List<Account> listAccounts = new List<Account>();
listAccounts = [SELECT ID,Tenant_Name__C FROM Account WHERE Tenant_Name__C = null];
for(Account acc : listAccounts)
{
acc.Tenant_Name__C = 'Miko';
}
update listAccounts;
}
}
afterwards you can go to Setup > Build > Develop > Apex Classes and then press on the 'Schedule Apex' to set up your class.
Added:
It's helpful to add a few functions like the following to schedulable classes:
public static String schedmon5am = '0 00 05 ? * 2'; //Every Monday, 5AM
// used for scheduling a repeating job - currently set for Monday 5AM.
global static String scheduleMeMon5AM() {
AutoChatterSiteManagerCheck SC = new AutoChatterSiteManagerCheck();
return System.schedule('ScheduleClassNameStr - Monday 5AM', schedmon5am, SC);
}
That way, you can schedule the class from the "execute anonymous" window with the following:
YourTestClass.scheduleMeMon5AM();
without having to look up how scheduling strings work.
You can take help from the below example :
Batch class :
global class BatchCreateOpportunity implements Database.batchable<sObject>{
global Database.QueryLocator start(Database.BatchableContext bc){
String query = 'SELECT id from Account limit 1';
return Database.getQueryLocator(query);
}
global void execute(Database.BatchableContext BC, List<Account> scope)
{
List<Opportunity> oppList = new List<Opportunity>();
for(Account acc : scope )
{
for(integer i=0;i<5;i++){
Opportunity opp = new Opportunity();
opp.accountId = acc.id;
opp.name = 'version'+i;
opp.CloseDate = system.today()+10;
opp.StageName = 'prospecting';
oppList.add(opp);
}
}
insert oppList;
}
global void finish(Database.BatchableContext BC)
{
}
}
Schedular class :
global class schduleBatchCreateOpportunity implements Schedulable {
global void execute(SchedulableContext ctx) {
BatchCreateOpportunity p = new BatchCreateOpportunity();
database.executeBatch(p);
}
}
Let me know if it helps.
Schedule apex class for every 15 mins - Complete coding
Let's consider following class to be scheduled for every 15mins.
public with sharing class contactcreate {
public void createcontact(){
Contact conobj=new Contact();
conobj.FirstName='Raj';
conobj.LastName='K';
insert conobj;
}
}
Scheduler class:
global class scheduledCron implements Schedulable{
global void execute(SchedulableContext SC) {
//Non static method cannot be referenced from a static context
contactcreate abc = new contactcreate();
abc.createcontact();
}
}
Go to Developer Console: Debug->Open Execute Anonymous Window
Add following code
System.schedule('Scheduled Job 1', '0 0 * * * ?', new scheduledCron ());
System.schedule('Scheduled Job 2', '0 15 * * * ?', new scheduledCron ());
System.schedule('Scheduled Job 3', '0 30 * * * ?', new scheduledCron ());
System.schedule('Scheduled Job 4', '0 45 * * * ?', new scheduledCron ());
You can check scheduler under Setup->Scheduled Jobs