我想从Quartz中的调度程序检索调度但已执行的作业。有没有办法做到这一点?从Quartz中的调度程序获取执行的作业
0
A
回答
1
哦,首先你需要检索所有当前预定作业的列表:
Scheduler sched = new StdSchedulerFactory().getScheduler();
List jobsList = sched.getCurrentlyExecutingJobs();
然后,它的迭代名单检索范围的工作范围内的事。每个上下文都有一个getPreviousFireTime()。
Iterator jobsIterator = jobsList.listIterator();
List<JobExecutionContext> executedJobs = new List<JobExecutionContext>();
while(jobsIterator.hasNext())
{
JobExecutionContext context = (JobExecutionContext) jobsIterator.next();
Date previous = context.getPreviousFireTime();
if (previous == null) continue; //your job has not been executed yet
executedJobs.Add(context); //there's your list!
}
根据你使用的是哪种石英(java或.net),实现可能略有不同,但原理相同。
0
设置属性JobDetail.setDurability(true) - 指示Quartz在成为“孤立”时不要删除作业(当作业不再有引用它的触发器时)。
感谢您的回复。代码中指定的jobList是什么? (你得到列表迭代器的那个) – Chanikag 2013-05-09 05:08:56
在这里,我想检索完全执行(不再运行)的作业。如果我可以从计划程序中获得所有计划的任务(当前正在执行+完全执行),那也没问题。 – Chanikag 2013-05-09 06:20:38
@Chanikag我已经更新了代码段以使其更清晰。希望能帮助到你! – 2013-05-09 19:51:04