反饋已提交

網絡繁忙

當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

B06-04 運算式設定

一、概述

  1. 定時排程任務,顧名思義,就是在某個固定的時間點發出某一個事件(任務),顯然,在定義定時排程任務的程式中,必須要設定任務執行的時間點,但是該任務可能是每天重複執行,隔日重複執行或者是單次執行等等各種不同組合的觸發時間點,這時可以透過表示式設定重複規則,如下圖所示。

1.jpg

二、定時表示式

  1. 定時表示式設定為新引入的透過【cronExpression】來設定的機制,定時表示式設定的正文框可自己手動填寫【cronExpression】,也可透過點選旁邊的【查看預設表示式】按鈕來直接選擇相應的表示式。點選【查看預設表示式】按鈕時,展開預設表示式視窗,如下圖1所示。點選其中的文字說明,則其上的正文框顯示並儲存相應的【cronExpression】,再次點選【收起預設表示式】按鈕時收起預設表示式視窗,如下圖2所示。

  2. 預設表示式如下表所示。

文字說明

表示式

每月最後一天 19 點 50 分。

0 50 19 L * ?

每月最後一個工作日(週一到週五) 19 點 50 分。

0 50 19 LW * ?

每月第 4 個週五 19 點 50 分。

0 50 19 ? * 6#4

2018 年第 4 季度每天 19 點 50 分。

0 50 19 * 10-12 ? 2018

週一到週五早上 9 點和晚上 6 點。

0 0 9,18 ? * MON-FRI


2.jpg

 3.jpg

三、Cron表示式

  1. Cron表示式為一個字串,由 5 個或 6 個空格隔開,分為 6 或 7 個域,每一個域代表一個時間範圍。

  2. Cron有如下兩種語法格式,從左到右(用空格隔開):【秒 分 小時 月份中的日期 月份 星期中的日期 年份(可選)】。

Seconds Minutes Hours DayofMonth Month DayofWeek Year
Seconds Minutes Hours DayofMonth Month DayofWeek
1
域。
  1. 每一個域可出現的字元如下表1所示。

  2. 每一個域除了使用數字還可以出現特殊字元,其中特殊字元的含義如下表2所示。

允許值  

允許的特殊字元

  秒(Seconds)

  0~59的整數

  , - * /    四個字元

  分(Minutes)

  0-59的整數

  , - * /    四個字元

  小時(Hours)

  0-23的整數

  , - * /    四個字元

  日期(DayofMonth)

  0-31的整數(但是需要考慮月的天數)

  ,- * ? / L W C     八個字元

  月份(Month)

  1-12的整數或英文JAN-DEC

  , - * /    四個字元

  星期(DayofWeek)

  1-7的整數或英文SUN-SAT(1=SUN, 2=MON,...)

  , - * ? / L C #     八個字元

  年份(Year)

  1970-2099

 , - * /    四個字元

 

字元

含義

*

表示匹配該域的任意值。

假如在Minutes域使用 *,即表示每分鐘都會觸發事件。

?

只能用在DayofMonth(日期)和DayofWeek(星期)兩個域。它也匹配域的任意值,但實際不會。因為DayofMonth和DayofWeek會相互影響。

例如想在每月的 20 日觸發調度,不管 20 日到底是星期幾,則只能使用如下寫法:13 13 15 20  ? ,其中最後一位只能用?,而不能使用 * ,如果使用 * 表示不管星期幾都會觸發,實際上並不是這樣。

-

表示範圍。

例如在Minutes域使用5-20 ,表示從 5 分到 20 分鐘每分鐘觸發一次。

/ 

表示起始時間開始觸發,然後每隔固定時間觸發一次。

例如在Minutes域使用5/20 ,則意味着 5 分鐘觸發一次,而 25,45等分別觸發一次。

,

表示列出枚舉值。

例如:在Minutes域使用5,20 ,則意味着在 5 和 20 分每分鐘觸發一次。

L

該字元只在DayofMonth和DayofWeek域中使用,代表“Last”的意思,但它在兩個欄位中意思不同。L在日期欄位中,表示這個月份的最後一天,如一月的 31 號,非閏年二月的 28 號;如果L用在星期中,則表示星期六,等同於7。但是,如果 L 在前面有一個數值 X ,它就具有其他含義了。

例如,月份中的 6L 表示該月的倒數第六天;星期域中的 FRIL 表示這個月的最後一個星期五。

W

該字元只能出現在DayofMonth域裏,是對前導日期的修飾,表示離該日期最近的工作日(週一到週五)。

例如 15W 表示離該月15 號最近的工作日,如果該月15 號是星期六,則匹配 14 號星期五;如果15 日是星期日,則匹配 16 號星期一;如果 15 號是星期二,那結果就是15 號星期二。但必須注意關聯的匹配日期不能夠跨月,如你指定 1W,如果 1 號是星期六,結果匹配的是 3 號星期一,而非上個月最後的那天。W 字串只能指定單一日期,而不能指定日期範圍。

LW

在DayofMonth欄位可以組合使用 LW,它的意思是當月的最後一個工作日(週一到週五)。

C

該字元只在DayofMonth和DayofWeek域中使用,代表“Calendar”的意思。它的意思是計劃所關聯的日期,如果日期沒有被關聯,則相當於日曆中所有日期。

例如:5C 在日期欄位中就相當於日曆 5 日以後的第一天;1C 在星期欄位中相當於星期日後的第一天。

#

該字元只能在 DayofWeek域中使用,表示當月某個工作日(週一到週五)。

6#3 表示當月的第三個星期五( 6 表示星期五,#3表示當前的第三個);而 4#5 表示當月的第五個星期三,假設當月沒有第五個星期三,忽略不觸發。

2
範例。
  1. Cron表示式範例如下。

注:使用者可參考 在綫Cron 表示式生成器(第三方工具) 檢查寫的表示式是否正確,確定正確以後填入。 

  表示式

 含義  

/5    * ?

每隔 5 秒執行一次。

0 /1    ?

每隔 1 分鐘執行一次。

0 0 /1  * ?

每隔 1 小時執行一次。

0 0 12   ?

每天中午十二點觸發。

0 0 0,13,18,21   ?

每天的 0 點、13 點、18 點、21 點都觸發一次。

0 0 0-8   ? 

每天的 0-8點,每整點觸發一次。

0 15 10 ?

每天早上 10:15 觸發。

0 15 10   ?

每天早上 10:15 觸發。

0 15 10   ? *

每天早上 10:15 觸發。

0 15 10   ? 2005

2005 年的 每天早上 10:15 觸發。

0  14  * ?

每天從下午 2 點開始到 2 點 59 分每分鐘一次觸發。

0 0/5 14   ?

每天從下午 2 點開始到 2 點 55 分結束每 5 分鐘一次觸發。

0 55/10 14,18   ?

每天的下午 2 點 55 和 6 點 55 分觸發。

0 10,44 14 ? 3 WED

三月的每週三的14:10和14:44觸發。

0 15 10 ? * MON-FRI

每個週一、週二、週三、週四、週五的10:15觸發。

0 15 10 15 * ?

每月 15 號的 10:15 觸發。

0 15 10 L * ?

每月的最後一天的 10:15 觸發。

0 15 10 ? * 6L

每月最後一個週五的 10:15 觸發。

0 15 10 ? * 6L 2002-2005

2002 年至 2005 年的每月最後一個週五的 10:15觸發。

0 15 10 ? * 6#3

每月的第三個週五的 10:15 觸發。

0 0 0 L-2  ?

每月倒數第二天(支援 FineReport 10.0,不支援 FineReport 9.0)。


附件列表


主題: 決策平台
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉