нам нужно написать пакетный класс, чтобы запланировать класс - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь сгенерировать отчет и отправить отчет по электронной почте в качестве приложения в Salesforce.Я создал контроллер, создал класс для потока CSV и шаблон электронной почты.Я хочу запланировать урок.когда я планирую это, я не могу достичь результата.Может ли кто-нибудь помочь мне в достижении этого?Код, который я попробовал, создан компонентом Visualforce, классом и шаблоном электронной почты.Код, который я пробовал, состоит в том, чтобы планировать его каждые 5 минут.но я получаю ошибку.Нужно ли нам написать пакетный класс для этого

global class IncrementReport implements Schedulable {

   global void execute(SchedulableContext ctx) {

   System.debug('Entered Cron trigger');

   rptobj__c r = [SELECT Id, Name, reporttrigger__c FROM rptobj__c WHERE Name = 'ThisReport' LIMIT 1];

   r.reporttrigger__c += 1;

   String s = '0 0 * * * ?' ';

   IncrementReport abc = new IncrementReport();

   system.schedule('Report Job', s, abc);

   System.debug('updating trigger to: ' + r.reporttrigger__c);

   update r;

   }
 }

1 Ответ

0 голосов
/ 24 апреля 2019

Вы пишете логику только в своем классе планировщика.

global class IncrementReport implements Schedulable {
 global void execute(SchedulableContext ctx) {

        System.debug('Entered Cron trigger');

        rptobj__c r = [SELECT Id, Name, reporttrigger__c FROM rptobj__c WHERE Name = 'ThisReport' LIMIT 1];

        r.reporttrigger__c += 1;


        System.debug('updating trigger to: ' + r.reporttrigger__c);

        update r;

    }
}

И затем можно запустить это выражение cron из консоли разработчика.

    String sch1 = '0 0 * * * ?';
    IncrementReport ir1 = new IncrementReport();
    system.schedule('Every Hour plus 0 min', sch1, ir1);

    String sch2 = '0 5 * * * ?';
    IncrementReport ir2 = new IncrementReport();
    system.schedule('Every Hour plus 5 min', sch2, ir2);

    String sch3 = '0 10 * * * ?';
    IncrementReport ir3 = new IncrementReport();
    system.schedule('Every Hour plus 10 min', sch3, ir3);

    String sch4 = '0 15 * * * ?';
    IncrementReport ir4 = new IncrementReport();
    system.schedule('Every Hour plus 15 min', sch4, ir4);

    // And so on ir5, ir6 .... ir12

Поскольку вы хотите запускать планировщик каждые 5 минут, вам нужно system.schedule 12 раз, как 12 * 5 = 60 минут = 1 час

Вы можете видеть, выполняется ли задание или нет

Настройка -> Запланированные задания

...