一、概述
1
版本。
報表伺服器版本 | JAR | 新增功能 |
---|---|---|
10.0 | 2020-06-08 | 【調度週期】→【執行條件】→【自訂類判斷】中可新增參數並指派 |
2
功能簡介。
定時任務條件判斷是指在執行定時任務之前進行一次校驗判斷,如果不滿足條件就不執行或者延遲後再次校驗執行。
條件判斷包含三種型別的選擇:【始終執行】、【公式判斷】和自訂類判斷。
始終執行,就是不進行條件判斷,直接執行定時任務,下面介紹公式判斷和自訂類判斷。
注:若在調度周期步驟中勾選「任務重啓」,延遲一段時間後再次校驗執行。
二、公式判斷
公式判斷就是指定時任務在執行前要對當前公式內容進行判定,公式為真則繼續執行定時任務,如果公式為假則不執行或者延遲執行。
延遲執行是指在調度週期步驟中勾選【任務重啓】,會在間隔一段設定的時間後再次執行定時任務,重新進行條件判斷,以此類推,當重啓次數達到設定值的時候,條件判斷還是不滿足,則不執行,如果中間有一次滿足則執行定時任務。
1
範本準備。
開啟範本 【%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\Advanced\Cacuate_Between_Cells\日報.cpt】,查詢一段時間內的資料資訊情況。
2
新增任務。
管理者進入數據決策系統,點選【管理系統】→【排程管理】→【新增任務】,如下圖所示。
3
基本設定。
【任務名稱】為【公式判斷】,新增平台使用者【demo】,點選【確定】,如下圖所示。
4
調度物件。
點選【下一步】,選擇範本為【日報.cpt】,點選【設定參數預設值】,檔案名稱稱為【${now()}】 ,如下圖所示。
5
調度週期。
點選【下一步】,設定調度週期,執行條件選擇【公式判斷】,在右側的公式輸入框中輸入【E3>50】,勾選【如果任務中斷按以下頻率重新啟動】,設定【兩次重啓間隔】為 【1】 分鍾,【最多嘗試重啓次數】為 【2】 次,如下圖所示。
其中公式的含義及任務重啓設定的含義如下表所示。
設定項 | 備注 |
---|---|
公式:E3>50 | 表示定時任務綁定的範本中 E3 儲存格大於 50 才能滿足條件,可以執行定時任務,否則不執行或延遲校驗執行。 |
任務重啓設定項 | 如果 E3 儲存格內容小於 50 則進行任務重啓,每隔一分鍾重啓一次,重啓後再公式判斷,公式判斷還是不滿足則再次任務重啓,直到重啓過 2 次後,若公式判斷還是不滿足,則不執行。 |
6
檔案處理。
點選【下一步】,選擇【平台通知】,主題為 【FRTest】 ,內容為【公式判斷】,點選【儲存】按鈕,如下圖所示。
7
結果查看。
運作後在【任務管理】可以看到公式判斷任務已經運作結束,如下圖1所示。
點選【運作監視】,查看該任務執行的監視,如下圖2所示。
由運作監視可知,任務重啓了兩次,範本都不滿足執行條件,不執行直接跨越直至重啓最大設定次數,然後結束。
三、自訂類判斷
自訂類判斷是指執行自訂類,傳回值為 true 的時候執行定時任務。
定時任務的自訂類需要實現 【com.fr.schedule.base.provider.ExecuteCondition】 API,該API有一個方法 【public boolean execute()】,完成條件判斷邏輯並傳回判斷結果。
1
無參數。
自訂類編寫:在執行定時任務時判斷今天是不是週二,如果是週二就執行,不是週二就不執行,代碼如下所示。
編譯之後的 class 檔案儲存到【%FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\schedule】資料夾下。
定時任務設定:新增一個定時任務自訂類判斷,在【調度週期】設定【執行條件】時,選擇【自訂類判斷】,點選右側的下拉按鈕,選擇上面儲存的 class 檔案。如下圖1所示。設定完四個步驟之後儲存即可。
效果查看:如果今天是週二,點選運作監視,可以看到運作資訊顯示成功。
如果今天不是週二,點選運作監視,可以看到運作資訊顯示【快照生成:跨越】,如下圖2所示。
2
有參數。
注1:2020-06-08 及之後的 JAR,執行條件選擇【自訂類判斷】時,可新增參數並指派。
注2:所新增的參數名稱為字母、數字、中文的組合,參數名稱開頭不能為數字。
自訂類編寫:點選下載 Java 檔案:NewCondition.zip。
執行定時任務時如果【參數1】的值大於 5 且【參數2】的值包含【ABC】則執行,代碼如下所示。
編譯之後的 class 檔案儲存到【%FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\schedule】資料夾下。
定時任務設定:新增一個定時任務自訂類判斷,在【調度週期】設定【執行條件】時,選擇【自訂類判斷】,點選右側的下拉按鈕,選擇上面儲存的 class 檔案,並新增【參數1】和【參數2】,分別指派為 【6 】、【ABC】,如下圖1所示。
設定完四個步驟之後儲存即可。
效果查看:點選【運作監視】,可以看到運作資訊顯示成功。若【參數1】和【參數2】的值不滿足【執行條件】,即將【參數1】的值改為【4】,點選【運作監視】,可以看到運作資訊顯示【快照生成:跨越】,如下圖2所示。
四、注意事項
1
LEN 公式取儲存格值不生效。
問題描述:範本 A1 儲存格中插入了公式 【$fine_username】 ,在【調度週期】步驟中執行條件選擇【公式判斷】,使用 LEN 公式取 A1 儲存格值時不生效。例如使用公式【LEN(report0~A1)】 (FRM 範本中)或 【LEN(A1)】(CPT 範本中)。
原因分析:LEN 公式使用 A1 儲存格取值,且 A1 儲存格為拓展儲存格時,取到的是包含所有拓展值的一個陣列。
解決方案:將公式修改為:【LEN(INDEXOFARRAY(report0~A1,1))】(FRM 範本中)或 【LEN(INDEXOFARRAY(A1,1))】(CPT 範本中)。