我们是否需要编写可批处理的 class 来安排 class
do we need to write a batchable class to schedule a class
我正在尝试生成报告并将报告作为 salesforce 中的附件发送到电子邮件。我创建了一个控制器,为 csv 流创建了一个 class 和一个电子邮件模板。我想安排 class。当我安排它时,我无法达到结果。谁能帮我实现这个目标?
我尝试的代码创建了一个 visualforce 组件 class 和一个电子邮件模板。
我尝试的代码是每 5 分钟安排一次。但我收到一个错误。
我们需要为此
写一个可批处理的class吗?
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;
}
}
您只需在调度程序中编写逻辑 class。
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 小时
您可以查看作业是否运行正在
Setup -> Scheduled Jobs
我正在尝试生成报告并将报告作为 salesforce 中的附件发送到电子邮件。我创建了一个控制器,为 csv 流创建了一个 class 和一个电子邮件模板。我想安排 class。当我安排它时,我无法达到结果。谁能帮我实现这个目标? 我尝试的代码创建了一个 visualforce 组件 class 和一个电子邮件模板。 我尝试的代码是每 5 分钟安排一次。但我收到一个错误。 我们需要为此
写一个可批处理的class吗?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;
}
}
您只需在调度程序中编写逻辑 class。
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 小时
您可以查看作业是否运行正在
Setup -> Scheduled Jobs