2015-03-03 51 views
0

我正試圖找到一個正確的方式來安排每週(特定的一天)的工作,使用石英調度。 我還需要打印cron作業的描述,因此我決定使用 CronExpressionDescriptor.getDescription()以使非程序員能夠讀取表達式的含義。CronExpressionDescriptor和QuartzScheduler的兼容性

但是,當我使用cronExpression - 0 15 3? * 2

CronExpressionDescriptor.getDescription()返回凌晨3:15,只有週二

但調用

trigger = newTrigger().withIdentity(triggerName, group.getGroupName()).withSchedule(cronSchedule(executionTime)).forJob(job.getKey()).build();  
Date date = scheduler.scheduleJob(job, trigger); 

時的日期將是週一(星期一Mar 03 03:15:00 EST 2015)

我現在的解決方法是給我們e

int dayOfWeek = (Integer.valueOf(cronexpression.split(" ")[5])%7); 
trigger = newTrigger().withIdentity(triggerName, group.getGroupName()).withSchedule(CronScheduleBuilder.weeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute)).forJob(job.getKey()).build(); 

但當然,我不喜歡這種解決方案,因爲它是斑駁而醜陋的。 所以我的問題是:

  1. 有石英和CronExpressionDescriptor之間的關係? 你知道其他的框架,它能夠返回cronExpression字符串的人類表示。

  2. 你有更好的解決方案嗎?

感謝,

回答

0

對我來說,CronExpressionDescriptor是「更正確」是石英,因爲在linux的cron調度「中某一天的一週」字段從0-7,其中0和7的範圍相當於星期日,那麼2等於星期二。

石英的取值範圍爲1-7,其中1表示星期日,7表示星期六。

我不知道CronExpressionDescriptor,但是,嘗試搜索一種返回日期名稱(SUN,MON等)而不是日數表示的方式。