Salesforce系列(十):Salesforce Schedule cron定时执行方法!

导读:本篇文章讲解 Salesforce系列(十):Salesforce Schedule cron定时执行方法!,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Salesforce系列(十):Salesforce Schedule cron定时执行方法!


前言

今天博主将为大家分享Salesforce系列(十):Salesforce Schedule cron定时执行方法!不喜勿喷,如有异议欢迎讨论!

再看这篇文章前博主郑重推荐大家前往阅读我的VsCode安装汉化等系列文章,点这里跳转:VsCode系列(一):下载安装及汉化 以及 Salesforce系列(一):使用Visual Studio Code进行开发!


cron的含义

在这里插入图片描述
特殊字符解释:

  • , :代表超过一个月;
  • “-” :定义一个区间,例如JAN-SEP;
  • ** :代表全部,例如月份是*,则代表每个月都会执行;
  • ? :不指定具体值;
  • / :指定增长值,例如Day_of_Month为1/5,则代表第一个月起开始,并在每个月的第五天执行;
  • L :指定范围的结束值,例如每个月末可能为29或31或其他,这个时候采用;
  • W :指定根据具体值找出最近的一周。同时使用L和W可指定出本月的最后一周;
  • “#”:指定每个月的第几周的周几(这个位置不太好叙述,周几/第几周)。#前数字代表周,#后数字代表月。例如2#2,指定每月第二周运行。

限制

  • 同一时间系统只允许存在100个Schedule;
  • Schedule的定时存在推迟问题,具体运行时间根据平台和系统的资源进行调配;
  • Schedule并不支持Callout,但是由于通常和Batch配合,因此不存在这个问题;

心得

Schedule相对而言比较简单。不建议实现太小的循环时间,因为Schedule的运行时间可能推迟,太小的时间差会导致精度大打折扣。

当然也可以在’主页’,进入如下界面:(可以新建一个定时Apex类)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


代码配置

调用方式:

System.schedule(name, instance, firetime);

参数说明:

  • name:String类型。代表在Scheduled Jobs管理页面中的标识;
  • instance:实现Schedulable接口的实例;
  • firetime:String类型。触发的时间。

取消方式:和Batch方式一样

System.abortJob(ctId);

管理方式: 和Batch类似,System.schedule()执行后会返回CronTrigger Id,通过CronTrigger来管理。

时间参数的说明:firetime参数实例:= ‘0 0 0 3 9 ? 2022’。分别代表的是:Seconds,Minutes,Hours,Day_of_Month,Month,Day_of_week,[Optional]year

例:每十五分钟执行一次

System.schedule('审批历史15分刷新', '0 15 * * * ?', new ProjectApprovalScheduler());
System.schedule('审批历史30分刷新', '0 30 * * * ?', new ProjectApprovalScheduler());
System.schedule('审批历史45分刷新', '0 45 * * * ?', new ProjectApprovalScheduler());

例:精准到时分

在这里插入图片描述
例:每小时,每天执行

System.schedule('每年1月1日运行', '0 0 * 1 1 ?', new QualityGradeAnnualCalculSchedule());
System.schedule('每小时跑一次', '0 0 * * * ?', new QualityGradeAnnualCalculSchedule());

Schedule写法

global with sharing class SchedulerRunSendMessageBatch implements Schedulable
{
    global void execute(SchedulableContext sc)
	{
	    BatchSendMessage bcrbatch = new BatchSendMessage();
         Database.executeBatch(bcrbatch);
	}
}

可能遇到的错误

System.StringException: Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.

ScheduleExamp2 se=new ScheduleExamp2();
string cron='0 0 16 2 1 2 2017';
ID jobid=system.schedule('batchapex', cron,se );

在执行这个的时候,我得到了上面的错误。

解决方法:

问题即将出现,因为您无法同时通过一个星期的某一天和一个月的某一天的参数。(Issue is coming because you can not pass the both a day-of-week AND a day-of-month parameter.)

So your exp can be below(所以你的经验可以在下面)

string cron='0 0 0 ? 2 7 2017';
ID jobid=system.schedule('batchapex', cron,se );

或视图sourceprint吗?

string cron='0 0 0 16 2 ? 2017';
ID jobid=system.schedule('batchapex', cron,se );

好了赶紧去试试吧别光看哈哈!


到这里:Salesforce系列(十):Salesforce Schedule cron定时执行方法!分享完毕了,快去试试吧!


最后

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97721.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!