2017-04-27 72 views
2

現在我正在尋找的功能由Quartz庫作業名稱獲取作業鍵來獲得石英作業鍵。有什麼辦法由作業名

我看到Scheduler有方法使用GroupMatcher<JobKey>Quartz具有NameMatcher它可以是用戶以同樣的方式GroupMatcher

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

你知道是這個功能已經存在於石英圖書館度日組名作業鍵?

回答

3

根據作業名稱使用NameMatcher獲取JobKey的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; 
      } 
     } 
    } 
}