我們已經(jīng)將頁(yè)面的時(shí)間設置轉為了Cron Expression,下面我記錄了時(shí)間規則。
1) 記錄時(shí)間規則
我將時(shí)間規則存入數據庫中,目的是為了生成歷史日志,也可以存入XML文件中。當然您也可以省略此步,直接將轉換后的規則放入相應的Quartz trigger中。
2) 更新任務(wù)觸發(fā)器的時(shí)間設置
到了關(guān)鍵的一步了,也是最簡(jiǎn)單的一步,一個(gè)方法就可以實(shí)現了。
首先,我們需要通過(guò)trigger的名稱(chēng)得到一個(gè)CronTriggerBean;
其次,通過(guò)trigger的setCronExpression(String cronExp)方法將新的表達式注入;
最后,RESCHEDULE THE JOB,OK!
1 /** */ /**
2 * 自定義定時(shí)器調度時(shí)間
3 * @param triggerName 觸發(fā)器名稱(chēng)
4 * @throws Exception
5 */
6 public void updateNotificationInterval(String triggerName, String triggerId)
7 throws SchedulerException, ParseException {
8 // 得到trigger
9 CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger(
10 triggerName, Scheduler.DEFAULT_GROUP);
11 // 得到cron expression
12 String cronExpression = schedulerDAO.getCronExpression(triggerId);
13 // 設置trigger的時(shí)間規則
14 trigger.setCronExpression(cronExpression);
15 // 重置job
16 scheduler.rescheduleJob(triggerName, Scheduler.DEFAULT_GROUP, trigger);
17 }
18 至此,目的達到了,快樂(lè )的看著(zhù)您的任務(wù)在您自定義的時(shí)間下快樂(lè )的執行,您是否也想像‘Happy Feet‘中那只快樂(lè )的企鵝一樣,Show段踢踏呢 ; - D
PS:忘了說(shuō)我的Quartz任務(wù)是怎么配置的了,罪過(guò),罪過(guò)。
< bean id ="compareJob"
class ="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
< property name ="targetObject" ref ="compareService" />
< property name ="targetMethod" value ="compare" />
< property name ="concurrent" value ="false" />
</ bean >
< bean id ="compareTrigger"
class ="org.springframework.scheduling.quartz.CronTriggerBean" >
< property name ="jobDetail" ref ="compareJob" />
< property name ="cronExpression" >
< value > 0 39 16 20 * ? </ value >
</ property >
</ bean >
< bean id ="schedulerFactory"
class ="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
< property name ="triggers" >
< list >
< ref local ="compareTrigger" />
</ list >
</ property >
</ bean >