Apex Scheduler — Overview & Implementation

DEX455 - 异步 Apex 完全指南:Queueable、Scheduled、Batch 与 Future 方法

📄 第 244 页 🎬 视频课程

课程章节介绍

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

关键词

Apex Salesforce Developer Guide