2012-03-23 12 views
1

У меня есть служба Windows Top Chelf C#, которая обрабатывает Quartz Jobs. Эти задания сохраняются в базе данных, например:Не повторяющиеся кварцевые работы с Крондриггером?

public class JobConfiguration : IJobConfiguration { 
    public string Name { get; set; }   //ImportService 
    public string Type { get; set; }   //[ClassName, AssemblyName] 
    public string CronTrigger { get; set; } //example: 0 0 12 * * ? 
    public string CronMeaning { get; set; } //example: fire at noon every day 
} 

Теперь я должен добавить, что задание только один раз выстрелил (все остальные рабочие места должны были быть повторены). Мой (временное) решение покинуть поле NULL CronTrigger и начать эти работы с SimpleTrigger вместо CronTrigger как:

if (JobConfiguration.CronTrigger == Null) 
    //start job with Quartz SimpleTrigger 
else 
    //start job with Quartz CronTrigger 

Есть ли лучшее решение, чтобы сделать это? Другими словами: есть ли CronTrigger, который позволяет вам начинать работу только один раз и никогда не повторять ее.

ответ

2

Одним из решений было бы сделать абстрактное задание JobConfiguration и наследовать SimpleJobConfiguration и CronJobConfiguration из этой JobConfiguration.

В базе данных они могут храниться в одной таблице.

Другое решение - использовать StartTimeUtc и EndTimeUtc триггера, как Simple, так и Cron. Это позволяет создать инструкцию cron, которая будет запускаться каждые 30 минут, но с помощью EndDateUtc на триггере DateTime.Now(). Добавить (TimeSpan.FromMinutes (31)).

 Смежные вопросы

  • Нет связанных вопросов^_^