2015-07-01 3 views
2

У меня возникли проблемы с пониманием того, как я могу получить детали работы с Quartz версии 2.3.2.Как получить JobKey/JobDetail of Quartz Job

До сих пор мы использовали Quartz v1.0.x для работы, и мне нужно обновить его до последней версии.

Это, как мы использовали, чтобы получить подробные сведения о работе:

JobDetail job = scheduler.GetJobDetail(task.Name, groupName); 

С версии 2.3.2, метод GetJobDetail() не имеет конструктор, который принимает 2 параметра больше ..., то принимает параметр JobKey.

К сожалению, я не смог найти способ получить один JobKey. То, что я попытался следующий:

string groupName = !string.IsNullOrEmpty(task.GroupNameExtension) ? task.GroupNameExtension : task.GroupName; 
var jobkeys = quartzScheduler.GetJobKeys(GroupMatcher<JobKey>.GroupContains(groupName)); 
var jobkey = jobkeys.Single(x => x.Name == task.Name); 
var jobDetail = quartzScheduler.GetJobDetail(jobkey); 
  • Это правильный путь для его реализации/получить jobKey? (Будет всегда только один jobkey на линии var jobkey = jobkey.Single(...)?
  • Есть ли действительно никакого способа получить JobDetail без получения все в JobKeys первый?
  • Это путь Кварц хочет получить JobDetail или там лучше/простой способ?

заранее спасибо

ответ

3

Вы можете просто создать новый ключ задания (это просто фантазии для хранения имени задания и имени группы)

new JobKey("jobName", "jobGroupName"); 

Пока имя вашей работы и название группы работ совпадают с тем, с какой вы создали свою работу, вы сможете получить подробную информацию о своей работе.

var jobDetail = quartzScheduler.GetJobDetail(new JobKey("jobName", "jobGroupName")); 

Personnally, я реализовать статический метод в моем классе работы централизовать ключа создание новых рабочих мест, так что я не так много litterals повсюду:

public static JobKey GetJobKey(EntityServer server) 
{ 
    return new JobKey("AutoRestart" + server.Id, "AutoRestart"); 
} 

Заметим, что это также верно для триггераKey

public static TriggerKey GetTriggerKey(EntityServer server) 
{ 
    return new TriggerKey("AutoRestart" + server.Id, "AutoRestart"); 
} 
+0

прохладно это опрятно! Огромное спасибо :-) – xeraphim