课程章节介绍
好,今天我们来说一下Apex里的延迟执行,有时被形象地叫做“Apex收件箱”。意思呢,就是你可以把要跑的代码放进一个任务里,让它在你指定的时间自动触发,就像定时发送的邮件一样。
要实现这个,首先得让你的类实现一个叫 ,Deliverable, 的接口,并且重写里面的 `execute` 方法。这个方法会接收到一个 `DeliverableContent` 参数,你就在这里面写你真正想做的事情。
接着,怎么设定执行时间呢?我们用 `System.schedule` 这个方法,给它传入一个唯一的作业名称,还有一个 ,Cron 表达式,。Cron 表达式其实就是一个时间字符串,用来告诉系统“几点几分、哪一天”去跑这段代码。
那如果你想在这个定时任务里再安排一个批处理作业呢?你可以在 `execute` 方法中调用 `Base.executePoker()`,它能帮你把批处理塞进执行队列。或者用更简单的方式:直接调用 `System.schedulePoker()`,这一个方法就搞定了。
如果你需要追踪这个任务的状态,甚至想中途取消它,可以通过 `DeliverableContext` 的 `getTriggerID()` 方法拿到一个 ,CronTrigger ID,。这个 ID 就像任务的身份证,拿着它,你就能查看进度或者终止执行。
还有一点要特别注意:调度程序是作为系统来运行的,也就是说,不管当初创建任务的用户权限怎么样,任务里涉及到的所有类都会完整执行,完全不受用户权限的限制。所以用它的时候,要心里有数——它不会因为权限不足而停下来。
整体就是这样,你只需要写好类、配好时间,再把任务交给“收件箱”,Salesforce 就会按时帮你跑起来。
关键词
Apex
Salesforce
Developer Guide