如何在Apex中实现调度程序?
-
08-10-2019 - |
题
我看到了Salesforce中的“调度程序”功能,但它与Salesforce提供的现有功能有些吻合,并且就我的研究而言,没有提供示例源代码。
我要做的是创建自己的调度程序,该调度程序根据日期发送简单的电子邮件。
目标:
自定义对象 Player
有字段
startDate : date like '2010-11-01'
email : text field like foo@bar.com
name : player's name like John.
如果今天的日期是开始日期的一天,我想将电子邮件发送给玩家。例如,玩家的名字是 John
如果今天是 2010-12-10
还有一个球员的 startDat
E设置为 2010-12-11
, ,电子邮件说 "hello John"
已发送。
不幸的是,我找不到在线或Salesforce Doc如何使用APEX进行此操作的好示例或教程。谁能指出从哪里开始?
更新
我想从 eyescream.
设置调度程序后,您可以设置什么后续操作,例如使用模板发送电子邮件或将自定义对象字段设置为某些值。
在下面,我发现对使用Visualforce格式的电子邮件模板的人有用。
我有自定义对象“ alerttester”,它具有对其他对象的“自定义”,甚至此对象'custom'都引用了另一个对象“ custom1grandChild”,并且所有关系(我认为最多3或5层)都可以像下面访问。
我在下面进行了测试,并且工作正常。现在,我收到了带有状况集的电子邮件:)
<messaging:emailTemplate subject="Hello" recipientType="User" relatedToType="alertTester__c" >
<messaging:plainTextEmailBody >
{!relatedTo.name}
{!relatedTo.custom__r.name}
{!relatedTo.custom__r.custom1GrandChild__r.name}
</messaging:plainTextEmailBody>
</messaging:emailTemplate>
解决方案
在深入研究Apex之前,请查看不涉及代码的解决方案...
电子邮件警报 +工作流规则应在这种情况下为您提供所需的所有功能,并仅在没有任何代码的情况下单击即可。
其他提示
我再次回答自己的问题。
下面的链接,搜索 schedule
http://www.salesforce.com/us/developer/docs/apexcode/index.htm
看起来Apex具有可安排的接口,我可以实现并设置CRON任务。
以下是文档中提供的示例代码:
global class TestScheduledApexFromTestMethod implements Schedulable {
// This test runs a scheduled job at midnight Sept. 3rd. 2022
public static String CRON_EXP = '0 0 0 3 9 ? 2022';
global void execute(SchedulableContext ctx) {
CronTrigger ct = [SELECT id, CronExpression, TimesTriggered, NextFireTime
FROM CronTrigger WHERE id = :ctx.getTriggerId()];
System.assertEquals(CRON_EXP, ct.CronExpression);
System.assertEquals(0, ct.TimesTriggered);
System.assertEquals('2022-09-03 00:00:00', String.valueOf(ct.NextFireTime));
Account a = [SELECT id, name FROM Account WHERE name =
'testScheduledApexFromTestMethod'];
a.name = 'testScheduledApexFromTestMethodUpdated';
update a;
}
}