书接上回,上回说到,我们已经将页面的时间设置转为了Cron Expression,下面我记录了时间规则。
3) 记录时间规则
??????我将时间规则存入数据库中,目的是为了生成历史日志,也可以存入XML文件中。当然您也可以省略此步,直接将转换后的规则放入相应的Quartz trigger中。
4) 更新任务触发器的时间设置
到了关键的一步了,也是最简单的一步,一个方法就可以实现了。
首先,我们需要通过trigger的名称得到一个CronTriggerBean;
其次,通过trigger的setCronExpression(String cronExp)方法将新的表达式注入;
最后,RESCHEDULE THE JOB,OK!
???
/**?*/
/**
?????*?自定义定时器调度时间
?????*?
@param
?triggerName?触发器名称
??????*?
@throws
?Exception?
?????
*/
????
public
?
void
?updateNotificationInterval(String?triggerName,?String?triggerId)
????????????
throws
?SchedulerException,?ParseException?
{
????????
//
得到trigger
????????CronTriggerBean?trigger?
=
?(CronTriggerBean)?scheduler.getTrigger(
????????????????triggerName,?Scheduler.DEFAULT_GROUP);
????????
//
得到cron?expression????????
????????String?cronExpression?
=
?schedulerDAO.getCronExpression(triggerId);
????????
//
设置trigger的时间规则
????????trigger.setCronExpression(cronExpression);
????????
//
重置job
????????scheduler.rescheduleJob(triggerName,?Scheduler.DEFAULT_GROUP,?trigger);
????}
至此,目的达到了,快乐的看着您的任务在您自定义的时间下快乐的执行,您是否也想像'Happy Feet'中那只快乐的企鹅一样,Show段踢踏呢 ; - D
PS:忘了说我的Quartz任务是怎么配置的了,罪过,罪过。
<
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
>
????????????????????
????????????
</
list
>
????????
</
property
>
????
</
bean
>
????????????????????????????????????????????????????????????????????????????????????THE END