我正在尝试运行可调度的工作,我从未在salesforce中使用过可调度的工作
这是我的代码
global class scheduledMerge implements Schedulable{
global void execute(SchedulableContext SC) {
System.debug('Hello World');
}
}
created a cusom controller
public class schedulableMerge{
public schedulableMerge(){
}
public PageReference Hello(){
scheduledMerge m = new scheduledMerge();
String sch = '0 10 * * 1-12 ? *';
system.schedule('Merge Job', sch, m);
return null;
}
}
和visualforce页面是
<apex:page controller="schedulableMerge">
<!-- Begin Default Content REMOVE THIS -->
<h1>Congratulations</h1>
This is your new Page
<!-- End Default Content REMOVE THIS -->
<apex:form >
<apex:commandButton value="Press it" action="{! Hello}" />
</apex:form>
</apex:page>
当我按下按钮按下它时,所有可调度作业中都有一个作业,但只有一个选项删除它。没有管理选项。我认为这个工作应该每10分钟运行一次。我看到来自Monitoring&gt; Debug Log的调试日志显示没有日志。你能告诉我每一分钟运行工作的表达方式是什么,以及在哪里看到调试日志?我的目标是看到可调度工作的工作
答案 0 :(得分:4)
好消息 - 您不需要visualforce页面和控制器。坏消息 - 你不能以1分钟的间隔安排工作。我认为5分钟是最小的(但我不确定,你必须尝试它)。
如何按需运行(一次)?从Developer Console或Eclipse的“Execute Anonymous”块。
确保将您的用户添加到调试日志中,并简单地强制运行您必须在接口中实现的execute
方法:
scheduledMerge sm = new scheduledMerge();
sm.execute(null);
在您确信一次运行成功完成后,尝试使用cron表达式。如果您每天使用一次频率很好 - 根本不需要这些表达式,请转到设置 - &gt;开发 - &gt;单击并单击[Schedule Apex]。只有当您每天需要多次运行时,才使用代码来安排课程。
最后但并非最不重要 - 转到设置并在搜索中输入“Apex jobs”。您应该看到最近执行的所有异步任务的信息(预定作业,批次,@future
方法等)
答案 1 :(得分:2)
请告诉我每分钟运行作业的表达式是什么,以及在哪里查看调试日志?
你不能每分钟都运行它。最短为一小时 - Apex Scheduler。 有一个人 - 尽可能频繁地开始工作以开始大量工作。
您可以尝试在当前正在运行的作业中安排新作业(如果可能的话)运行每个Datetime.now()。minute()+ 1.这个想法在我脑海中浮现。我没试过。所以同一个班级将在一分钟内开始。但是不要忘记在这个课程中杀死当前的工作,这样你就不会创建大量的预定工作并且没有州长限制。
答案 2 :(得分:0)
我为Scheduled Apex做了类似的事情,运行时间为15,30,45,60分钟(即每15分钟)
缺点是,我们需要为此执行4个不同的预定Apex作业。
System.schedule('Every 0th min', '0 0 * * * ?', new scheduledMerge());
System.schedule('Every 15th min', '0 15 * * * ?', new scheduledMerge());
System.schedule('Every 30th min', '0 30 * * * ?', new scheduledMerge());
System.schedule('Every 45th min', '0 45 * * * ?', new scheduledMerge());