2013-05-08 3 views
0

Quartz의 스케쥴러에서 스케쥴되었지만 이미 실행 된 작업을 검색하려고한다. 그렇게 할 방법이 있습니까?Quartz의 스케쥴러에서 실행 작업 가져 오기

Scheduler sched = new StdSchedulerFactory().getScheduler(); 
List jobsList = sched.getCurrentlyExecutingJobs(); 

다음에,이 범위 작업의 컨텍스트를 검색 할 목록이 반복의 문제입니다 :

답변

1

그럼, 먼저 모든 현재 예약 된 작업 목록을 검색 할 필요가있다. 각 컨텍스트에는 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 또는.

+0

응답 해 주셔서 감사합니다. 코드에 지정된 작업 목록은 무엇입니까? (목록 반복자를 얻은 사람) – Chanikag

+0

여기서는 완전히 실행 된 (더 이상 실행되지 않는) 작업을 검색하려고합니다. 스케쥴러에서 스케줄 된 (현재 실행 + 완전히 실행 된) 모든 작업을 가져올 수 있다면 괜찮습니다. – Chanikag

+0

@Chanikag 코드 세그먼트를 명확하게 업데이트했습니다. 희망이 도움이됩니다! –

0

JobDetail.setDurability (true) - Job이 더 이상 "고아"가 될 때 (Job이 더 이상 트리거를 참조하지 않는 경우) Quartz가 작업을 삭제하지 않도록 지시한다.