posts - 40,  comments - 187,  trackbacks - 0
1. 目的:动态设置时间,触发相应的任务

2. 系统架构为 struts + spring + hibernate

3. 实现步骤:
  • 在页面上设置时间;
  • 将时间转换为Unix Cron Expression;
  • 将转换后的时间规则表达式记录到数据库中(也可以写入xml文件中,这里是项目需要记录入数据库中);
  • 从数据库中得到相应的时间规则表达式;
  • 更新您的任务触发器的时间设置;
  • RESCHEDULE THE JOB。; - )

4. 具体实现细节:

1) 在页面上设置时间
根据具体的业务需求,设置时间规则,下面以某一项目为例,需要 按每月、每周、自定义分为三种规则。
 1 < tr >
 2            < th > 执行这个任务 </ th >
 3            < td  style ="font-weight:bold;" >
 4             < html:radio  property ="everyWhat"  styleClass ="InputBorderNone"  value ="monthly"  onclick ="changeStatus(this.value)" > 每月 </ html:radio >
 5             < html:radio  property ="everyWhat"  styleClass ="InputBorderNone"  value ="weekly"  onclick ="changeStatus(this.value)" > 每周 </ html:radio >
 6             < html:radio  property ="everyWhat"  styleClass ="InputBorderNone"  value ="userDefined"  onclick ="changeStatus(this.value)" > 自定义 </ html:radio >
 7             < html:hidden  property ="jobName"  value ="compare"   />
 8            </ td >
 9 </ tr >
10

每月则需要选择该月的第几个星期的星期几
 1 < tr  style ="display:"  id ="whichWeek" >
 2            < th > 选择第几个星期 </ th >
 3            < td  style ="font-weight:bold;" >
 4             < html:select  property ="week" >
 5              < html:option  value ="1" > </ html:option >
 6              < html:option  value ="2" > </ html:option >
 7              < html:option  value ="3" > </ html:option >
 8              < html:option  value ="4" > </ html:option >
 9             </ html:select >
10             < html:select  property ="dayOfMonth" >
11              < html:option  value ="1" > 星期日 </ html:option >
12              < html:option  value ="2" > 星期一 </ html:option >
13              < html:option  value ="3" > 星期二 </ html:option >
14              < html:option  value ="4" > 星期三 </ html:option >
15              < html:option  value ="5" > 星期四 </ html:option >
16              < html:option  value ="6" > 星期五 </ html:option >
17              < html:option  value ="7" > 星期六 </ html:option >
18             </ html:select >
19           </ td >  
20   </ tr >
21

每周则需要选择星期几
 1 < tr  style ="display:none"  id ="whichDay" >
 2            < th > 选择星期 </ th >
 3            < td  style ="font-weight:bold;" >
 4             < html:select  property ="dayOfWeek" >
 5              < html:option  value ="1" > 星期日 </ html:option >
 6              < html:option  value ="2" > 星期一 </ html:option >
 7              < html:option  value ="3" > 星期二 </ html:option >
 8              < html:option  value ="4" > 星期三 </ html:option >
 9              < html:option  value ="5" > 星期四 </ html:option >
10              < html:option  value ="6" > 星期五 </ html:option >
11              < html:option  value ="7" > 星期六 </ html:option >
12             </ html:select >
13          </ td >  
14    </ tr >
15

自定义则选择具体的日期,如 2007-1-10

三种规则都需要设定时间点
 1 < tr >
 2            < th > 起始时间 </ th >
 3            < td  style ="font-weight:bold;" >
 4             < html:select  property ="timeType"  styleId ="type"  onchange ="changeStatus2(this.value)" >
 5              < html:option  value ="AM" > 上午 </ html:option >
 6              < html:option  value ="PM" > 下午 </ html:option >
 7             </ html:select >
 8             < html:select  property ="hour"  styleId ="amHours" >
 9              < html:option  value ="1" > 1 </ html:option >
10              < html:option  value ="2" > 2 </ html:option >
11              < html:option  value ="3" > 3 </ html:option >
12              < html:option  value ="4" > 4 </ html:option >
13              < html:option  value ="5" > 5 </ html:option >
14              < html:option  value ="6" > 6 </ html:option >
15              < html:option  value ="7" > 7 </ html:option >
16              < html:option  value ="8" > 8 </ html:option >
17              < html:option  value ="9" > 9 </ html:option >
18              < html:option  value ="10" > 10 </ html:option >
19              < html:option  value ="11" > 11 </ html:option >
20              < html:option  value ="12" > 12 </ html:option >
21             </ html:select >
22             < html:select  property ="hour"  styleId ="pmHours"  style ="display:none" >
23              < html:option  value ="13" > 13 </ html:option >
24              < html:option  value ="14" > 14 </ html:option >
25              < html:option  value ="15" > 15 </ html:option >
26              < html:option  value ="16" > 16 </ html:option >
27              < html:option  value ="17" > 17 </ html:option >
28              < html:option  value ="18" > 18 </ html:option >
29              < html:option  value ="19" > 19 </ html:option >
30              < html:option  value ="20" > 20 </ html:option >
31              < html:option  value ="21" > 21 </ html:option >
32              < html:option  value ="22" > 22 </ html:option >
33              < html:option  value ="23" > 23 </ html:option >
34              < html:option  value ="0" > 0 </ html:option >
35             </ html:select >  点
36              < html:text  property ="minute"  name ="minute"  style ="width:20px;"  value ="0"  onchange ="valTime(this.value)"   />  分
37              < html:text  property ="second"  name ="second"  style ="width:20px;"  value ="0"  onchange ="valTime(this.value)"   />  秒(0-59之间的整数)
38        </ td >  
39 </ tr >
40

OK. 这样我们的页面设置就完成了。: - ) 

                                                           To Be Continued...
posted on 2007-01-10 15:39 小立飞刀 阅读(5396) 评论(2)  编辑  收藏 所属分类: Spring

FeedBack:
# re: Spring Quartz如何动态配置时间(1)
2007-01-10 18:36 | zxy
继续发扬共享精神哦 hoho   回复  更多评论
  
# re: Spring Quartz如何动态配置时间(1)
2007-01-11 10:13 | 小雪飞刀
谢谢,我会继续努力,呵呵  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2007年1月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

生存或毁灭,这是个必答之问题:是否应默默的忍受坎苛命运之无情打击,还是应与深如大海之无涯苦难奋然为敌,并将其克服。此二抉择,究竟是哪个较崇高?

常用链接

留言簿(12)

随笔分类(43)

相册

收藏夹(7)

朋友的博客

电子资料

搜索

  •  

积分与排名

  • 积分 - 301875
  • 排名 - 192

最新评论

阅读排行榜

评论排行榜