1. 概述
1.1 版本
FineBI伺服器版本 | 功能變更 |
---|---|
6.0 | - |
1.2 應用場景
FineBI 在排程管理中提供了自訂類判斷功能。使用者可以根據業務需要自己編寫自訂類,然後交給系統執行,並根據自訂類的條件傳回結果來判斷是否執行該定時任務。
1.3 功能詳情
FineBI 支援在排程管理任務中,透過自訂類的條件傳回結果來判斷是否執行定時任務。
FineBI 提供 com.fr.schedule.base.provider.ExecuteCondition API,該API有一個方法 public boolean execute(),完成條件判斷邏輯並傳回判斷結果。
如下所示:
當自訂類條件傳回結果為 true 時,執行定時任務。
當自訂類條件傳回結果為 false 時,不執行或者延遲執行定時任務。
1.3.1 自訂類別別
自訂類判斷包括:無參數自訂類判斷、有參數自訂類判斷。
其中,有參數自訂類判斷可以滿足定時任務的複用需求,使用者可在參數設定面板中新增參數並指派。如下圖所示:
注:2020-06-08 及之後的 JAR,執行條件選擇自訂類判斷時,可新增參數並指派。
1.3.2 參數設定面板狀態
在自訂類判斷中,當選擇一個具體的自訂類之後,下方會出現參數設定面板,可以在其中新增參數並指派。
參數設定面板狀態如下:
1)新增參數並指派後,切換自訂類,參數設定面板不會保留原參數設定資訊。
2)儲存任務後,再次打該任務,可查看到參數設定面板會保留已儲存任務的參數設定資訊。
注:如果在儲存任務後,再次開啟該任務切換自訂類,即使再切換回原自訂類,參數設定面板也不會保留原參數設定資訊。
1.3.3 參數設定限制
1)參數名稱必須為字母、數字、中文的組合,且參數名稱開頭不能為數字。
2)參數設定中,指派框預設輸入字串格式,在自訂類中需要對拿到的值進行所需類型轉換。
1.4 本章範例
本文將透過具體範例來示範排程管理中自訂類判斷功能的使用方法。
範例 | 效果 | 步驟 |
---|---|---|
範例一:無參數自訂類判斷 | 在執行定時任務時判斷今天是不是週二,如果是週二就執行定時任務,不是週二就不執行定時任務 | 1)準備無參數自訂類 2)準備一張儀表板 3)設定定時任務 4)執行一次,查看執行效果
|
範例二:有參數自訂類判斷 | 如果參數 1 的值大於 5 且參數 2 的值包含「ABC」,則執行定時任務 | 1)準備有參數自訂類 2)準備一張儀表板 3)設定定時任務 4)執行一次,查看執行效果
|
2. 範例一:無參數自訂類判斷
本節範例:使用無參數的自訂類判斷功能,實現只在週二執行定時任務。
定時任務:給銷售部銷售主管 Lisa 的 APP 使用者端推播最新的銷售明細情況。
範例儀表板:「行業應用>零售電商>銷售管理中心儀表板」主題下的「產品銷售分析」儀表板。
該儀表板呼叫的資料為:「公共資料>部門資料>銷售_Lisa」資料夾中的資料表。
點選下載 Java 檔案:ExecuteClass.zip
2.1 準備自訂類
2.1.1 編寫 Java 檔案
編寫ExecuteClass.java,程式碼如下所示:
2.1.2 編譯 Class 檔案
1)生成 class 檔案
編譯 ExecuteClass.java,生成 ExecuteClass.class 檔案。
2)匯入 class 檔案
將編譯後的 ExecuteClass.class 檔案儲存到%BI_HOME%\webapps\webroot\WEB-INF\classes\com\fr\schedule資料夾下。
注1:若在 %BI_HOME%\webapps\webroot\WEB-INF\classes\com\fr 下不存在 schedule 資料夾,使用者自行建立資料夾 schedule 即可。
注2:編譯環境準備和編譯 Java 檔案的詳細步驟請參見:編譯Java程式。
2.2 儀表板準備
2.2.1 複製範本連結
在設定排程管理任務前,需要先獲取排程管理中使用的儀表板的連結,以便將儀表板推播給使用者 App 端。
1)管理者登入 FineBI 系統,點選「我的分析」。
選中「行業應用>零售電商>銷售管理中心儀表板」主題下的「產品銷售分析」儀表板,URL連結中report後的ID即為儀表板ID。儀表板預覽連結形如:http://IP:port/webroot/decision/v5/design/report/儀表板ID/view
注1:連結中的IP不可為「localhost」,必須更換為電腦實際的 IP 地址。
注2:APP端必須可存取該地址,如內外網環境不互通則無法存取。
2.2.2 分配資料權限
使用者如需查看排程管理中使用的 BI 範本,必須擁有該儀表板呼叫的資料表的組件資料權限。
管理者登入FineBI系統,點選「管理系統>權限管理>普通權限配置>權限快速配置」。
選擇「部門>銷售部>銷售主管」,點選「資料權限」,為其分配「公共資料>部門數據>銷售_Lisa」資料夾的「組件資料」權限。如下圖所示:
2.3 設定定時任務
2.3.1 新增任務
管理者登入 FineBI 系統,點選「管理系統>排程管理>任務管理」,點選「新增任務」,新增一個排程管理任務。如下圖所示:
2.3.2 基本設定
1)「任務名稱」設定為「銷售業績達成情況」。
2)點選「預設使用者組」的「編輯」按鈕。部門選擇銷售部的「銷售主管」,點選確定。如下圖所示:
注:如需使用平台通知,必須要設定預設使用者組,否則訊息無法傳送給任何人。
確認部門處已選定「所有部門:銷售部:銷售主管; 」,點選「確定」,預設使用者組設定完成。點選「下一步」,如下圖所示:
2.3.3 調度物件
1)物件類型選擇「BI範本」,選擇範本:「行業應用>零售電商>銷售管理中心儀表板」主題下的「產品銷售分析」儀表板。
2)檔案名稱設定為「${now()}的銷售情況」。
點選「下一步」,如下圖所示:
2.3.4 調度週期
1)設定執行頻率
執行頻率選擇「明細頻率設定」,點選「新增」。
設定執行時間為「18時0分」,執行日為「每日」,執行月為「全選」,點選「確定」,即可成功新增明細頻率。
勾選上一步新增的明細頻率。
2)設定執行條件
執行條件選擇「自訂類判斷」。
自訂類選擇:2.1 節準備的 ExecuteClass.class 檔案。
點選「下一步」。如下圖所示:
2.3.5 檔案處理
1)處理方式勾選「使用者端通知」。
2)在「使用者端通知」設定中:
勾選「APP」通知
選擇訊息類型為「連結訊息」
接收人為:「預設使用者組」
主題為:${today()}的區域銷售情況
郵件內容為:有新的銷售統計資料已到達,請即時查收。
勾選「自訂連結」,輸入內容為 2.2 節準備好的儀表板預覽連結
點選「儲存」,如下圖所示:
2.4 效果預覽
由於該任務的執行頻率是每天晚上 18 時執行一次,無法立刻看到任務效果。
為了立刻看到任務效果,可在「管理系統>排程管理>任務管理」介面找到該任務,選擇「執行一次」。
1)執行定時任務
職位「銷售部>銷售主管」對應的使用者是Lisa(Lisa,1)。
執行一次後,如果今天是週二,自訂類 ExecuteClass.class 的條件傳回結果為 true,執行該定時任務。
Lisa(Lisa,1)登入 FineMobile 資料分析 App,收到一條新訊息。如下圖所示:
2)不執行或延遲執行定時任務
如果今天不是週二,執行一次後,自訂類 ExecuteClass.class 的條件傳回結果為 false,不執行或延遲執行該定時任務。
點選「排程管理>運作監視」,可以看到任務的運作類型為「快照生成」,狀態為「跨越」。如下圖所示:
3. 範例二:有參數自訂類判斷
本節範例:使用有參數的自訂類判斷功能,實現當參數 1 的值大於 5 且參數 2 的值包含「ABC」時,執行定時任務。
定時任務:給銷售主管 Lisa 的 APP 使用者端推播最新的銷售明細情況。
範例儀表板:「行業應用>零售電商>銷售管理中心儀表板」主題下的「產品銷售分析」儀表板。
該儀表板呼叫的資料為:「公共資料>部門資料>銷售_Lisa」資料夾中的資料表。
點選下載 Java 檔案:NewCondition.zip
3.1 準備自訂類
3.1.1 編寫 Java 檔案
1)編寫NewCondition.java,程式碼如下所示:
3.1.2 編譯 Class 檔案
1)生成 class 檔案
編譯 NewCondition.java,生成 NewCondition.class 檔案。
2)匯入 class 檔案
將編譯後的 NewCondition.class 檔案儲存到%BI_HOME%\webapps\webroot\WEB-INF\classes\com\fr\schedule資料夾下。
注1:若在 %BI_HOME%\webapps\webroot\WEB-INF\classes\com\fr 下不存在 schedule 資料夾,使用者自行建立資料夾 schedule 即可。
注2:編譯環境準備和編譯 Java 檔案的詳細步驟請參見:編譯Java程式。
3.2 儀表板準備
3.2.1 複製範本連結
在設定排程管理任務前,需要先獲取排程管理中使用的儀表板的連結,以便將儀表板推播給使用者 App 端。
1)管理者登入 FineBI 系統,點選「我的分析」。
選中「行業應用>零售電商>銷售管理中心儀表板」主題下的「產品銷售分析」儀表板,URL連結中report後的ID即為儀表板ID。儀表板預覽連結形如:http://IP:port/webroot/decision/v5/design/report/儀表板ID/view
注1:連結中的IP不可為「localhost」,必須更換為電腦實際的 IP 地址。
注2:APP端必須可存取該地址,如內外網環境不互通則無法存取。
3.2.2 分配資料權限
使用者如需查看排程管理中使用的 BI 範本,必須擁有該儀表板呼叫的資料表的組件資料權限。
管理者登入FineBI系統,點選「管理系統>權限管理>普通權限配置>權限快速配置」。
選擇「部門>銷售部>銷售主管」,點選「資料權限」,為其分配「公共資料>部門資料>銷售_Lisa」資料夾的「組件資料」權限。如下圖所示:
3.3 設定定時任務
3.3.1 新增任務
管理者登入 FineBI 系統,點選「管理系統>排程管理>任務管理」,點選「新增任務」,新增一個排程管理任務。如下圖所示:
3.3.2 基本設定
1)「任務名稱」設定為「銷售業績達成情況」。
2)點選「預設使用者組」的「編輯」按鈕。部門選擇銷售部的「銷售主管」,點選確定。如下圖所示:
注:如需使用平台通知,必須要設定預設使用者組,否則訊息無法傳送給任何人。
確認部門處已選定「所有部門:銷售部:銷售主管; 」,點選「確定」,預設使用者組設定完成。點選「下一步」,如下圖所示:
3.3.3 調度物件
1)物件類型選擇「BI範本」,選擇範本:「行業應用>零售電商>銷售管理中心儀表板」主題下的「產品銷售分析」儀表板。
2)檔案名稱設定為「${now()}的銷售情況」。
點選「下一步」,如下圖所示:
3.3.4 調度週期
1)設定執行頻率
執行頻率選擇「明細頻率設定」,點選「新增」。
設定執行時間為「18時0分」,執行日為「每日」,執行月為「全選」,點選「確定」,即可成功新增明細頻率。
勾選上一步新增的明細頻率。
2)設定執行條件
執行條件選擇「自訂類判斷」。
自訂類選擇:3.1 節準備的 NewCondition.class 檔案。
點選「新增」,新增參數並指派。
新增參數:名稱為參數 1,值為 6。
新增參數:名稱為參數 2,值為 ABC。
點選「下一步」。如下圖所示:
3.3.5 檔案處理
1)處理方式勾選「使用者端通知」。
2)在「使用者端通知」設定中:
勾選「APP」通知
選擇訊息類型為「連結訊息」
接收人為:「預設使用者組」
主題為:${today()}的區域銷售情況
郵件內容為:有新的銷售統計資料已到達,請即時查收。
勾選「自訂連結」,輸入內容為 3.1 節準備好的儀表板預覽連結
點選「儲存」,如下圖所示:
3.4 效果預覽
由於該任務的執行頻率是每天晚上 18 時執行一次,無法立刻看到任務效果。
為了立刻看到任務效果,可在「管理系統>排程管理>任務管理」介面找到該任務,選擇「執行一次」。
1)執行定時任務
職位「銷售部>銷售主管」對應的使用者是Lisa(Lisa,1)。
執行一次後,由於在 3.3.4 節參數設定中,參數 1、參數 2 的值滿足參數 1 的值大於 5 且參數 2 的值包含「ABC」的條件,自訂類的條件傳回結果為 true,執行該定時任務。
Lisa(Lisa,1)登入 FineMobile 資料分析 App,收到一條新訊息。如下圖所示:
2)不執行或延遲執行定時任務
點選「編輯」,按照 3.3.4 節步驟修改參數 1 的值為 3,使參數值不滿足參數 1 的值大於 5 且參數 2 的值包含「ABC」的條件。如下圖所示:
執行一次後,自訂類 NewCondition.class 的條件傳回結果為 false,不執行或延遲執行該定時任務。
點選「排程管理>運作監視」,可以看到任務的運作類型為「快照生成」,狀態為「跨越」。如下圖所示: