1. 目的:動態設置時間,觸發相應的任務
2. 系統架構為 struts + spring + hibernate
3. 實現步驟:
-
在頁面上設置時間;
-
將時間轉換為Unix Cron Expression;
-
將轉換后的時間規則表達式記錄到數據庫中(也可以寫入xml文件中,這里是項目需要記錄入數據庫中);
-
從數據庫中得到相應的時間規則表達式;
-
更新您的任務觸發器的時間設置;
-
RESCHEDULE THE JOB。; - )
4. 具體實現細節:
1) 在頁面上設置時間
根據具體的業務需求,設置時間規則,下面以某一項目為例,需要
按每月、每周、自定義分為三種規則。
每月則需要選擇該月的第幾個星期的星期幾
每周則需要選擇星期幾
自定義則選擇具體的日期,如 2007-1-10
三種規則都需要設定時間點
OK. 這樣我們的頁面設置就完成了。: - )?
???????????????????????????????????????????????????????????To Be Continued...
?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

?2

?3

?4

?5

?6

?7

?8

?9

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

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

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

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

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

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

OK. 這樣我們的頁面設置就完成了。: - )?
???????????????????????????????????????????????????????????To Be Continued...