0

Quartz のスケジューラーから、スケジュールされているが既に実行されているジョブを取得したいと考えています。そうする方法はありますか?

4

2 に答える 2

2

まず、現在スケジュールされているすべてのジョブのリストを取得する必要があります。

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) によって若干異なる場合がありますが、原則は同じです。

于 2013-05-08T17:33:28.177 に答える
0

プロパティ JobDetail.setDurability(true) を設定します。これは、「孤立」したジョブを削除しないように Quartz に指示します (ジョブを参照するトリガーがなくなった場合)。

于 2013-06-06T10:23:06.190 に答える