周期調度作業支持設置調度周期符合條件的作業為依賴作業。設置依賴作業的操作詳情請參考《DataArts Studio用戶指南》手冊中的“數據開發 - 作業開發 -調度作業”章節。
例如周期調度作業A,可設置其依賴作業為作業B,如下圖所示進行配置。則僅當其依賴的作業B在某段時間內所有實例運行完成、且不存在失敗實例時,才開始執行作業A。
說明
依賴的作業B的“某段時間”,計算方法如下,詳見后文設置依賴作業后的作業運行原理。
同周期依賴,如分鐘依賴分鐘、小時依賴小時或天依賴天時,“某段時間”為 (作業A執行時間-作業A周期時間, 作業A執行時間] 。
跨周期依賴:如小時依賴分鐘、天依賴分鐘、天依賴小時或月依賴天時,“某段時間”為 [上一作業A調度周期的自然起點, 當前作業A調度周期的自然起點) 。
作業A是否判斷其依賴的作業B的實例狀態,與“依賴的作業失敗后,當前作業處理策略”參數有關,具體如下:·
“依賴的作業失敗后,當前作業處理策略”參數配置為“掛起”或“終止執行”后,當其依賴的作業B在某段時間內存在運行失敗實例,則作業A“掛起”或“終止執行”。
“依賴的作業失敗后,當前作業處理策略”參數配置為“繼續執行”,只要其依賴的作業B在某段時間內所有實例跑完(不判斷其狀態),則作業A就繼續執行。
詳見下圖:作業依賴屬性


本章節主要介紹設置依賴作業的條件,以及設置依賴作業后的作業運行原理。
設置依賴作業的條件
當前周期調度作業的調度周期包括分鐘、小時、天、周、月這五種周期,周期調度作業A如果要配置依賴作業為周期調度作業B,則調度周期必須符合以下要求:
- 作業A的調度周期不能比依賴作業B小。例如,作業A和作業B同為分鐘/小時調度,A的間隔時間小于B的間隔時間,則作業A不能設置作業B為依賴作業;作業A為分鐘調度,作業B為小時調度,則作業A不能設置作業B為依賴作業。
- 作業A和依賴作業B的不能有任一調度周期為周。例如,作業A的調度周期為周或作業B的調度周期為周,則作業A不能設置作業B為依賴作業。
- 調度周期為月的作業只能依賴調度周期為天的作業。例如,作業A的調度周期為月,則作業A只能設置調度周期為天的作業為依賴作業。
不同調度周期的作業,其允許配置的依賴作業調度周期總結如下圖所示。


設置依賴作業后的作業運行原理
同周期依賴和跨周期依賴的作業運行原理有所差異。為方便說明,本例中假設“依賴的作業失敗后,當前作業處理策略”參數設置為“繼續執行”,作業A不判斷作業B的實例運行狀態;如果該參數設置為“掛起”或“終止執行”,則作業A還會額外判斷作業B的實例中是否存在失敗實例。
- 同周期依賴 :即作業A與其依賴作業B為相同調度周期,如分鐘依賴分鐘、小時依賴小時或天依賴天。
同周期依賴的情況下,當作業A的依賴作業配置為作業B后,作業A會在 (作業A執行時間-作業A周期時間, 作業A執行時間] 時間區間內檢查是否有作業B的實例運行,只有在此期間作業B的實例運行完成才會運行作業A。
示例1:作業A依賴作業B,均為分鐘調度。作業A的開始時間10:00,周期時間20分鐘;作業B的開始時間10:00,周期時間10分鐘。則會出現如下情況:
同周期作業依賴情況
| 時間點 | 作業B(分鐘調度,開始時間10:00,周期時間10分鐘) | 作業A(分鐘調度,開始時間10:00,周期時間20分鐘) |
|---|---|---|
| 10:00 | 執行 | 檢查 (09:40, 10:00] 區間,有作業B實例運行,待作業B執行完成后,執行作業A |
| 10:10 | 執行 | - |
| 10:20 | 執行 | 檢查(10:00, 10:20] 區間,有作業B實例運行,待作業B執行完成后,執行作業A |
| 10:30 | 執行 | - |
| ... | ... | ... |
示例2:作業A依賴作業B,均為天調度。作業A的開始時間為8月1日09:00;作業B的開始時間8月1日10:00。則會出現如下情況:
同周期作業依賴情況
| 時間點 | 作業B(天調度,開始時間為8月1日10:00) | 作業A(天調度,開始時間8月1日09:00) |
|---|---|---|
| 8月1日09:00 | - | 檢查 (7月31日09:00, 8月1日09:00] 區間,無作業B實例運行,不執行作業A |
| 8月1日10:00 | 執行 | - |
| 8月2日09:00 | - | 檢查 (8月1日09:00, 8月2日09:00] 區間,有作業B實例運行,待作業B執行完成后,執行作業A |
| 8月2日10:00 | 執行 | - |
| ... | ... | ... |
- 跨周期依賴 :即作業A與其依賴作業B為不同調度周期,如小時依賴分鐘、天依賴分鐘、天依賴小時或月依賴天。
跨周期依賴的情況下,當作業A的依賴作業配置為作業B后,作業A會在 [上一作業A調度周期的自然起點, 當前作業A調度周期的自然起點) 時間區間內檢查是否有作業B的實例運行,只有在此期間作業B的實例運行完成才會運行作業A。
說明調度周期的自然起點定義如下:
調度周期為小時:上一調度周期的自然起點為上一小時的零分零秒,當前調度周期的自然起點為當前小時的零分零秒。
調度周期為天:上一調度周期的自然起點為昨天的零點零分零秒,當前調度周期的自然起點為今天的零點零分零秒。
調度周期為月:上一調度周期的自然起點為上個月1號的零點零分零秒,當前調度周期的自然起點為當月1號的零點零分零秒。
示例3:作業A依賴作業B,作業A為天調度,作業B為小時調度。作業A的每天02:00執行;作業B的開始時間00:00,間隔時間10小時。則會出現如下情況:
跨周期作業依賴情況
| 時間點 | 作業B(小時調度,開始時間00:00,間隔時間10小時) | 作業A(天調度,每天02:00執行) |
|---|---|---|
| 第1天00:00 | 執行 | - |
| 第1天02:00 | - | 檢查 [第0天00:00:00, 第1天00:00:00) 區間,無作業B實例運行,不執行 |
| 第1天10:00 | 執行 | - |
| 第1天20:00 | 執行 | - |
| 第2天00:00 | 執行 | - |
| 第2天02:00 | - | 檢查[第1天00:00:00, 第2天00:00:00) 區間,有作業B實例運行完成,執行作業A |
| 第2天10:00 | 執行 | - |
| 第2天20:00 | 執行 | - |
| ... | ... | ... |
示例4:作業A依賴作業B,作業A為月調度,作業B為天調度。作業A的每月1號、2號的02:00執行;作業B在8月1日00:00開始執行。則會出現如下情況:
跨周期作業依賴情況
| 時間點 | 作業B(天調度,8月1日00:00執行) | 作業A(月調度,每月1號、2號的02:00執行) |
|---|---|---|
| 8月1日00:00 | 執行 | - |
| 8月1日02:00 | - | 檢查 [7月1日00:00:00, 8月1日00:00:00) 區間,無作業B實例運行,不執行 |
| 8月2日00:00 | 執行 | - |
| 8月2日02:00 | - | 檢查[7月1日00:00:00, 8月1日00:00:00) 區間,無作業B實例運行,不執行 |
| ... | - | ... |
| 9月1日00:00 | 執行 | - |
| 9月1日02:00 | - | 檢查[8月1日00:00:00, 9月1日00:00:00) 區間,有作業B實例運行完成,執行作業A |
| 9月2日00:00 | 執行 | - |
| 9月2日02:00 | - | 檢查[8月1日00:00:00, 9月1日00:00:00) 區間,有作業B實例運行完成,執行作業A |
| ... | ... | ... |