Sample Code to Schedule an Apex class

  • I'll be working on creating a apex schedule class and I just need a pointer to start is that possible if you can have a working small sample where I can understand how the mechanics work and I have googled but not find what exactly I want and also I looked at the salesforce site

    https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_scheduler.htm

    Do you have any specific questions regarding the information at the link you provided? That page includes a working example along with test code to cover it.

    I beleive you have to write a class which is "schedulable" (as noted in the docs). Basically, this schedulable class will create an instance of the method you want to run, usually with no input parameters. For example, your method can query the top 5 users that logged in this month and email the CEO. When the scheduled time occurs, the "schedulable" class will execute your method (running the SOQL Query and Email Notification.

  • dotmiko

    dotmiko Correct answer

    6 years ago

    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.

    How would you call the `Miko_Scheduled` class to pick the apex schedule?

    What do you mean? Set Miko_Scheduled as an apex scheduled class? You can go to Setup > Build > Develop > Apex Classes and then press on the Schedule Apex button.

    1+ ah ha i see that now.. let me work on that

    sounds good! keep me posted if it works so i can help you out. mark it as an answer afterwards so you can help others too :)

    Will do that, if you can edit your answer and add the last step you have shown like `You can go to Setup > Build > Develop > Apex Classes and then press on the Schedule Apex button` will help others too.

License under CC-BY-SA with attribution


Content dated before 7/24/2021 11:53 AM