2013-05-08 78 views

回答

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

感谢您的回复。代码中指定的jobList是什么? (你得到列表迭代器的那个) – Chanikag 2013-05-09 05:08:56

+0

在这里,我想检索完全执行(不再运行)的作业。如果我可以从计划程序中获得所有计划的任务(当前正在执行+完全执行),那也没问题。 – Chanikag 2013-05-09 06:20:38

+0

@Chanikag我已经更新了代码段以使其更清晰。希望能帮助到你! – 2013-05-09 19:51:04

0

设置属性JobDetail.setDurability(true) - 指示Quartz在成为“孤立”时不要删除作业(当作业不再有引用它的触发器时)。