2013-05-08 73 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在成爲「孤立」時不要刪除作業(當作業不再有引用它的觸發器時)。

相關問題