2. 系统架构为 struts + spring + hibernate
3. 实现步骤:
在页面上设置时间;
将时间转换为Unix Cron Expression;
将转换后时间规则表达式记录到数据库中(也可以写入xml文件中这里是项目需要记录入数据库中);
从数据库中得到相应时间规则表达式;
更新您任务触发器时间设置;
RESCHEDULE THE JOB; - )
4. 具体实现细节:
1) 在页面上设置时间
根据具体业务需求设置时间规则下面以某项目为例需要 按每月、每周、自定义分为 3种规则
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" > 2 </ html:option >
7 < html:option value ="3" > 3 </ html:option >
8 < html:option value ="4" > 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" > 星期 2 </ html:option >
14 < html:option value ="4" > 星期 3 </ html:option >
15 < html:option value ="5" > 星期 4 </ html:option >
16 < html:option value ="6" > 星期 5 </ html:option >
17 < html:option value ="7" > 星期 6 </ 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" > 星期 2 </ html:option >
8 < html:option value ="4" > 星期 3 </ html:option >
9 < html:option value ="5" > 星期 4 </ html:option >
10 < html:option value ="6" > 星期 5 </ html:option >
11 < html:option value ="7" > 星期 6 </ html:option >
12 </ html:select >
13 </ td >
14 </ tr >
15
自定义则选择具体日期如 2007-1-103种规则都需要设定时间点
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. 这样我们页面设置就完成了: - )
最新评论