Salesforce Schedule
前言
介绍
- 调用方式
- 页面配置:在Apex Class List界面点击Schedule Apex。输入相关信息并保存,之后平台会在符合条件的情况下执行;
- 代码执行:通过代码的方式设置执行时间/开始时间/结束时间(笔者个人感觉页面配置的方式后台也是通过这种方式实现的)。
- 取消方式
- 页面配置:在Quick Box中输入“Scheduled Jobs”进行管理;
- 代码执行:通过代码进行执行。
需要注意的是通过页面配置的方式最小循环时间是以天为单位的,如果需要以更小的单位(例如:小时)则必须通过代码去实现。并且代码方式可实现无终止时间的方式。
代码配置
- 调用方式:
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
对应允许的值是:
名称 |
值 |
特殊字符 |
Seconds |
0-59 |
|
Minutes |
0-59 |
|
Hours |
0-23 |
|
Day_of_Month |
1-31 |
, - * ? / L W |
Month |
1-12 或者 英文月份前三位字符 |
, - * / |
Day_of_week |
1–7 或者英文星期前三位字符 |
, - * ? / L # |
year |
null 或者1970-2099 |
, - * / |
- , :代表超过一个月;
- - :定义一个区间,例如JAN-SEP;
- * :代表全部,例如月份是*,则代表每个月都会执行;
- ? :不指定具体值;
- / :指定增长值,例如Day_of_Month为1/5,则代表第一个月起开始,并在每个月的第五天执行;
- L :指定范围的结束值,例如每个月末可能为29或31或其他,这个时候采用;
- W :指定根据具体值找出最近的一周。同时使用L和W可指定出本月的最后一周;
- # :指定每个月的第几周的周几(这个位置不太好叙述,周几/第几周)。#前数字代表周,#后数字代表月。例如2#2,指定每月第二周运行。
实现更小时间的循环
- 定义一个Schedule,正常运行;
- 运行后,通过abortJob取消这个Schedule,在生成新的Schedule(改变时间参数)。
global class Temp implements Schedulable {private static final String nextFireTimeTemp = '{0} {1} {2} * * ?';private static final Integer ADD_MINUTES = 100;global void execute(SchedulableContext SC) {CronTrigger ct = [SELECT TimesTriggered, NextFireTime FROM CronTrigger WHERE Id=:sc.getTriggerId()];DateTime dt = DateTime.now().addMinutes(ADD_MINUTES);String[] args = new String[]{String.valueOf(dt.second()), String.valueOf(dt.minute()), String.valueOf(dt.hour())};String nextFireTime = String.format(nextFireTimeTemp, args);refresh(ct.id, nextFireTime);}private static void refresh(String ctId, String nextFireTime) {if(ctId != null && nextFireTime != null) {System.abortJob(ctId);} else {DateTime dt = DateTime.now().addMinutes(ADD_MINUTES);String[] args = new String[]{String.valueOf(dt.second()), String.valueOf(dt.minute()), String.valueOf(dt.hour())};nextFireTime = String.format(nextFireTimeTemp, args);}System.schedule('Temp', nextFireTime, instance);}public static void refreshNow() {refresh(null, null);}
}
这样子就可以搞定了。其中refreshNow指定初始调用(生成Schedule),refresh代表每个Schedule的生成。
限制
笔者认为比较重要的:
- 同一时间系统只允许存在100个Schedule;
- Schedule的定时存在推迟问题,具体运行时间根据平台和系统的资源进行调配;
- Schedule并不支持Callout,但是由于通常和Batch配合,因此不存在这个问题;
心得
参考
Salesforce Schedule相关推荐
- Salesforce系列(十):Salesforce Schedule cron定时执行方法!
Salesforce系列(十):Salesforce Schedule cron定时执行方法! 前言 今天博主将为大家分享Salesforce系列(十):Salesforce Schedule cro ...
- Salesforce Schedule中调用接口案例
global class MessageTemplateStatusSchedule implements Schedulable {global void execute(SchedulableCo ...
- salesforce 定时任务遇到的坑
salesforce cron定时任务的时间设置的认识 新建定时任务 2种途径 途径1 在console下新建apexclass 途径2 在sublime TEXT3 salesforcce基础的定时 ...
- 第14章 Salesforce标准对象
14.1 Sales Cloud基本信息 Sales Cloud 会为您提供管理业务的一切功能.生成最佳潜在客户.通过销售漏斗管理业务机会,并使用现有客户培养关系.以及,预测收入.设置销售区域,并将代 ...
- 填问卷赢280元SaaS峰会门票 与Salesforce、Zenefits现场交流!
云市场头条邀请您填写关于阅读行为习惯的调查问卷.我们将从提交答案的用户中抽取40名,赠送价值280元的中美SaaS峰会|2017年中国SaaS产业峰会门票一张!5月10日北京,让我们与Salesfor ...
- oracle schedule stop,Oracle调度Schedule特性(第八部分)-Windows和Window Groups
哈哈,关于schedule的内容还没完,本章讲Windows,通常说的Windows是指盖首富的操作系统,而此处所说的Windows, 是指SCHEDULER特性中的一个子项.在SCHEDULER中, ...
- Salesforce Lightning开发学习(二)Component组件开发实践
lightning的组件区分标准组件.自定义组件和AppExchange组件.标准组件由SF提供,自定义组件由developer自行开发,AppExchange组件由合作伙伴建立.下面我们写一个简单的 ...
- CV技术在医疗领域中有哪些应用?Salesforce、谷歌、斯坦福综述文章登上Nature子刊...
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 编辑丨机器之心 计算机视觉在医疗领域得到了广泛应用,如医学影像处理等. 最近,来自 Salesforc ...
- SAP WM Production Schedule Profile设置问题导致生产补货的TO单自动创建问题
SAP WM Production Schedule Profile设置问题导致生产补货的TO单自动创建问题 笔者所在的D项目上,业务人员希望工单一旦release,自动触发为生产补货的TR单.然后业 ...
最新文章
- ORB_SLAM2代码阅读(2)——tracking线程
- TinyMind人工智能社区5月热门技术文章排行榜TOP15
- Xcode中的Info.plist字段列表详解
- sqlserver 循环赋值变量
- Java关键字(二)——native
- Vue 之 qs.parse()、qs.stringify()使用方法
- 信息系统项目管理知识--项目沟通管理
- 7z001 002合并 linux,解压小工具-如何把拆分后的压缩包合并(如7z.001)
- 一年几百亿的电费 中国移动再提5G功耗问题
- python去空格的函数_Python怎么去掉最后的空格
- python位运算符_NumPy按位运算符解析和实例详解
- CSS中meta标签的viewport
- WannaCry只是个开始?信息时代你急需的安全书单
- 关于collectionView的一些内容
- Telerik Reporting.NET,Internet或桌面程序提供交互式报告
- html如何将图片做成背景图片,css如何设置网页背景图片?
- 工业相机的曝光时间和帧率的关系
- 自定义表单控件(我是一个粉刷匠)
- ofo 上海深圳等公司相继注销
- 不知哪位仁兄有该软件,csdn好像不提供下载了哦