2017-04-27 6 views
2

今はQuartzライブラリのジョブ名でジョブキーを取得する機能を探しています。Quartzでジョブ名を取得する方法はありますか

私はあなたがこの機能は、すでにクォーツライブラリに存在している知っています SchedulerGroupMatcher<JobKey>を使用して、グループ名でジョブのキーを取得する方法も QuartzGroupMatcher

Set<JobKey> getJobKeys(NameMatcher<JobKey> matcher) throws SchedulerException; 

と同じように、ユーザーことができNameMatcherを持っていることがわかり

答えて

3

JobKeyをジョブ名でNameMatcherを使用するAPIが存在しません。AFAIK。

しかし、それだけでキーを繰り返すことによって、その名前からジョブのキーを取得するために、実際に簡単です:

public JobKey findJobKey(String jobName) { 
    // Check running jobs first 
    for (JobExecutionContext runningJob : scheduler.getCurrentlyExecutingJobs()) { 
     if (Objects.equals(jobName, runningJob.getJobDetail().getKey().getName())) { 
      return runningJob.getJobDetail().getKey(); 
     } 
    } 
    // Check all jobs if not found 
    for (String groupName : scheduler.getJobGroupNames()) { 
     for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) { 
      if (Objects.equals(jobName, jobKey.getName())) { 
       return jobKey; 
      } 
     } 
    } 
} 
関連する問題