Chanikag
Chanikag

Reputation: 1439

Get executed jobs form the scheduler in Quartz

I want to retrieve scheduled but already executed jobs from the scheduler in Quartz. Is there any way to do so?

Upvotes: 0

Views: 2706

Answers (2)

siruvan
siruvan

Reputation: 13

Set the property JobDetail.setDurability(true) - which instructs Quartz not to delete the Job when it becomes an "orphan" (when the Job not longer has a Trigger referencing it).

Upvotes: 0

Nick Patsaris
Nick Patsaris

Reputation: 2218

Well, first you need to retrieve a list of all currently scheduled jobs:

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

Then, it's a matter of iterating the list to retrieve the context for reach job. Each context has a 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!
}

The implementation may be slightly different depending on which quartz you use (java or .net) but the principle is the same.

Upvotes: 2

Related Questions