1. 目的:动态设置时间,触发相应的任务
2. 系统架构为 struts + spring + hibernate
3. 实现步骤:
-
在页面上设置时间;
-
将时间转换为Unix Cron Expression;
-
将转换后的时间规则表达式记录到数据库中(也可以写入xml文件中,这里是项目需要记录入数据库中);
-
从数据库中得到相应的时间规则表达式;
-
更新您的任务触发器的时间设置;
-
RESCHEDULE THE JOB。; - )
4. 具体实现细节:
1) 在页面上设置时间
根据具体的业务需求,设置时间规则,下面以某一项目为例,需要
按每月、每周、自定义分为三种规则。
每月则需要选择该月的第几个星期的星期几
每周则需要选择星期几
自定义则选择具体的日期,如 2007-1-10
三种规则都需要设定时间点
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
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
每月则需要选择该月的第几个星期的星期几
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
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/None.gif)
21
![](/Images/OutliningIndicators/None.gif)
每周则需要选择星期几
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
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14 tr >
15
![](/Images/OutliningIndicators/None.gif)
自定义则选择具体的日期,如 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
<
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/None.gif)
21
![](/Images/OutliningIndicators/None.gif)
22
![](/Images/OutliningIndicators/None.gif)
23
![](/Images/OutliningIndicators/None.gif)
24
![](/Images/OutliningIndicators/None.gif)
25
![](/Images/OutliningIndicators/None.gif)
26
![](/Images/OutliningIndicators/None.gif)
27
![](/Images/OutliningIndicators/None.gif)
28
![](/Images/OutliningIndicators/None.gif)
29
![](/Images/OutliningIndicators/None.gif)
30
![](/Images/OutliningIndicators/None.gif)
31
![](/Images/OutliningIndicators/None.gif)
32
![](/Images/OutliningIndicators/None.gif)