2012-04-14 104 views
3

我對quartz.net和cron表達式相當陌生,我必須在c#dotnet應用程序中創建quartz.net調度程序,該程序應在每月,每週和每日基礎上執行從數據庫獲得的值。Quartz.Net每月,每週和每日的Cron表達式

具有調度細節的表。

Id EffectiveDate StartTime Frequency 
1 2012-04-22  20:55  Daily  
2 2012-04-22  10:12  Weekly  
3 2012-04-22  17:00  Daily 
4 2012-04-23  02:15  Monthly 
5 2012-04-26  18:30  Daily   
6 2012-04-27  11:45  Weekly 

請幫我解決這個問題。

回答

3

@ user1301587,希望你已經找到了前進的方向,但我注意到,你的問題仍顯示在谷歌相當高的,所以我會繼續和我將如何做到這一點添加一些僞代碼:

  1. 從數據源獲取的時間表(看起來像一個RDBMS 數據庫表中的情況下)
  2. 迭代地通過調度 名單及附表建立CronScheduleBuilder的一個實例:

    串cronExpressio N =的String.Format( 「{0} {1} {2} {3} {4} {5}」, 二部, minutePart, hourPart, dayOfMonthPart, monthPart, dayOfWeekPart );

    IScheduleBuilder scheduleBuilder = CronScheduleBuilder 
           .CronSchedule(cronExpression) 
           .InTimeZone(TimeZoneInfo.Utc); 
    

例如cron表達式0 26 6 * *?在周的每一天的早上6:26運行你的工作 我發現的一個問題是,如果你不指定時區,Quartz會根據你當前的時區應用轉換,將指定時間轉換爲UTC時間

現在你可以建立與上述建立的時間表觸發:

ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() 
       .WithIdentity("TestTrigger") 
       .WithSchedule(scheduleBuilder) 
       .Build(); 

使用THIS原址興建Quart.Net風格表達