如何通过Apex Scheduler实现每日12点自动创建汇率相关对象
使用Apex Scheduler实现每日12点自动执行汇率同步
步骤1:创建实现Schedulable接口的调度类
编写一个实现Schedulable接口的Apex类,在execute方法中调用你已有的currencyConverter静态方法。建议添加异常处理,避免任务因异常中断,同时记录错误信息便于排查。
示例调度类代码:
public class DailyCurrencySyncScheduler implements Schedulable { public void execute(SchedulableContext sc) { try { // 调用你已有的汇率转换方法,替换YourExistingClass为实际类名 YourExistingClass.currencyConverter(); } catch (Exception e) { // 记录错误日志到Log__c对象 Log__c errorLog = new Log__c( Status_Code__c = 'ERROR', Response_Body__c = '调度任务执行失败: ' + e.getMessage() + '\n' + e.getStackTraceString() ); insert errorLog; // 抛出异常标记任务失败 throw new SchedulableException('每日汇率同步任务执行失败: ' + e.getMessage()); } } }
步骤2:配置每日12点的调度任务
有两种方式创建调度任务:
方式一:通过匿名Apex代码调度
执行以下代码创建每日UTC时间12点的任务:
// Cron表达式格式:秒 分 时 日 月 周 年(留空表示每年) // 此表达式表示每日UTC 12:00执行 String cronExpression = '0 0 12 * * ?'; System.schedule('每日汇率同步任务', cronExpression, new DailyCurrencySyncScheduler());
若需使用非UTC时区(比如北京时间),需先转换为UTC时间再调整表达式。例如北京时间12点对应UTC 4点,表达式改为0 0 4 * * ?
方式二:通过Salesforce界面配置
- 进入Setup,搜索Apex Classes
- 点击右上角的Schedule Apex按钮
- 在弹窗中配置:
- 输入任务名称(如「每日汇率同步任务」)
- 选择调度类
DailyCurrencySyncScheduler - 运行频率选Weekly,并勾选所有星期几(实现每日执行)
- 设置运行时间为目标时间(界面显示当前用户时区)
- 保存设置
额外注意事项
- 确保
currencyConverter方法中的endPoint是全局可访问的(比如用静态常量定义),避免调度类无法读取 - Salesforce调度任务存在±15分钟的执行延迟,属于平台正常机制
- 可在Setup的Scheduled Jobs页面查看、编辑或删除已创建的任务
内容的提问来源于stack exchange,提问作者Jhony
相关产品推荐
相关产品推荐

