FR範本展示FDL定時任務資訊

  • 文檔創建者:Wendy123456
  • 編輯次數:19
  • 最近更新:Nikozhan 于 2025-08-04
  • icon提示:
    本文方案適用於 4.1.9.1 之前版本。

    1. 概述

    1.1 應用場景

    公司中有許多成員使用 FineDataLink 開發定時任務,若成員 A 修改了定時任務 1 沒有通知成員 B,成員 B 運作定時任務 1 的時候運作報錯或資料不對,B 不知道是誰做的修改以及修改原因。成員 B 若是對定時任務 1 再做修改,不知道會對成員 A 造成什麼影響。

    因此,希望使用看板展示所有定時任務的運作資訊,可透過搜尋對應的任務名稱,查看該任務編輯人員、最近編輯時間。

    1.2 實現思路

    對 FineDB 資料庫的 fine_dp_conf_entity_xfine_dp_operate_history 表進行資料處理。

    • 取出 fine_dp_conf_entity_x 表中的定時任務檔案相關配置資料( namespace 欄位為 DPFileEntityStore),解析 entity_value 欄位得到 createTime(定時任務建立時間)欄位。其中 createTime 為時間戳格式,為方便查看需轉化為日期格式。

    • 取出 fine_dp_conf_entity_x 表中的定時任務排程管理配置資料( namespace 欄位為 DPAttributeStore解析 entity_value 欄位得到 scheduleOpen(是否開啟調度欄位。

    • 取出 fine_dp_operate_history 表中編輯定時任務的資料(operate_type 欄位為 EDIT),得到 operate_user(編輯人員)、task_name(任務名稱)、task_path(任務路徑)、operate_time(任務儲存或修改時間)欄位。其中 operate_time 為時間戳格式,為方便查看需轉化為日期格式。

    • 將上面三張表資料聯動,篩選出有效資料後,進行匯出。

    • 使用最終匯出的表資料製作 FineReport 範本。

    1.3 任務展示

    FineDataLink 中的資料處理程式,詳情參見:https://demo.finedatalink.com/ 中的定時任務:「FR範本展示定時任務資訊」

    使用 FDL 匯出的資料,製作的FineReport 範本如下圖所示:

    1691657715951731.png

    2. 範例

    注:本文第二章步驟適用於下載 4.0.25 及之後版本的安裝包的工程,升級到 4.0.25 及之後版本或 4.0.25 之前版本方案略有不同,詳情可參考本文第三章。

    2.1 準備工作

    1)由於要讀取 FineDB 資料庫中的 fine_dp_conf_entity_x、fine_dp_operate_history 表資訊,需要有 FineDB 的資料連結使用權限。

    注:FineDB 資料庫簡介請參見:FineDB 資料庫簡介

    2)瞭解 fine_dp_conf_entity_x 欄位含義、瞭解 fine_dp_operate_history欄位含義

    2.2 獲得任務建立時間欄位

    取出 fine_dp_conf_entity_x 表中的定時任務檔案相關配置資料( namespace 欄位為 DPFileEntityStore),解析 entity_value 欄位得到 createTime(定時任務建立時間)欄位,由於 createTime 欄位為時間戳格式,將他轉換為日期格式方便查看。

    2.2.1 取出定時任務檔案相關配置資訊

    1)建立定時任務,拖入「資料轉換」節點,進入「資料轉換」節點。

    2)使用「DB表輸入」算子,從 fine_dp_conf_entity_x 表中取出定時任務檔案相關配置資料。如下圖所示:

    注:根據實際情況修改下方 SQL 語句。

    SELECT * FROM `xiangmu1`.`fine_dp_conf_entity_x` where namespace = 'DPFileEntityStore'

    2.2.2 解析 entity_value 欄位

    entity_value 欄位為 JSON 格式,需進行解析。

    使用「JSON解析」算子解析 entity_value 欄位,勾選「解析後保留所有上游匯出欄位」,若不勾選該按鈕,解析後只有 entity_value 欄位解析後的資料;JSON 節點選擇 id(檔案id)、createTime(定時任務建立時間)。

    由於解析的 id 欄位與已有欄位重名,將改寫已有欄位資料。所以解析後欄位名稱中,將 id 修改為任務ID

    如下圖所示:

    2.2.3 轉換任務建立時間

    2.2.2 節中,解析後的 createTime 欄位為時間戳格式,需要轉換為日期格式,方便查看。

    拖入「Spark SQL」算子,將時間戳資料處理為日期格式。如下圖所示:

    注:表名為上游節點的名稱;語句不能直接複製,「JSON解析」需點選生成。

    select *,from_unixtime(cast(JSON解析.createTime/1000 as bigint),'yyyy/MM/dd HH:mm:ss') from JSON解析

    點選資料預覽,效果如下圖所示:

    2.2.4 刪除不需要欄位

    新增「欄位設定」算子,將 2.2.3 節生成的日期格式的欄位重新命名為任務建立時間只保留任務ID欄位和任務建立時間」欄位。如下圖所示:

    注:保留「任務ID」欄位,方便與其他表左右聯動。

    2.3 獲取定時任務設定的調度資訊

    取出 fine_dp_conf_entity_x 表中的定時任務排程管理配置資料( namespace 欄位為 DPAttributeStore),解析 entity_value 欄位得到 scheduleOpen(是否開啟調度)欄位。

    步驟與 2.2 節類似。

    2.3.1 取出定時任務排程管理配置資訊

    使用「DB表輸入」算子,從 fine_dp_conf_entity_x 表中取出定時任務排程管理配置資料。如下圖所示:

    注:根據實際情況修改下方 SQL 語句。

    SELECT * FROM `xiangmu1`.`fine_dp_conf_entity_x` where namespace = 'DPAttributeStore'

    2.3.2 解析 entity_value 欄位

    entity_value 欄位為 JSON 格式,需進行解析。

    使用「JSON解析」算子解析 entity_value 欄位,勾選「解析後保留所有上游匯出欄位」,若不勾選該按鈕,解析後只有 entity_value 欄位解析後的資料;JSON 節點選擇 id(檔案id)、scheduleOpen(排程管理是否開啟);

    由於解析的 id 欄位與已有欄位重名,將改寫已有欄位資料。所以解析後欄位名稱中,將 id 修改為「任務id」;scheduleOpen 欄位重新命名為是否開啟調度

    注:使用者根據實際場景,判斷下方圖片第五步驟時勾選哪些節點。

    如下圖所示:

    2.3.3 刪除不需要欄位

    新增「欄位設定」算子,只保留「任務id」欄位和是否開啟調度」欄位,其餘欄位刪除。如下圖所示:

    2.4 取出定時任務編輯資料

    取出 fine_dp_operate_history 表中編輯定時任務的資料(operate_type 欄位為 EDIT),得到 operate_user(編輯人員)、task_name(任務名稱)、task_path(任務路徑)、operate_time(任務儲存或修改時間)欄位。

    2.4.1 讀取 fine_dp_operate_history 表資料

    當 fine_dp_operate_history 表中,operate_type 欄位值為 EDIT 時,為編輯定時任務的資料。

    取出 fine_dp_operate_history 表中編輯定時任務的資料。如下圖所示:

    2.4.2 轉換任務編輯時間

    operate_time 欄位為儲存/修改的時間,是時間戳格式,為後續方便查看,需轉換為日期格式。

    拖入「Spark SQL」算子,將時間戳資料處理為日期格式。如下圖所示:

    注:表名為上游節點的名稱;語句不能直接複製,「DB表輸入2」需點選生成。

    select *,from_unixtime(cast(DB表輸入2.operate_time/1000 as bigint),'yyyy/MM/dd HH:mm:ss') from DB表輸入2

    2.4.3 刪除不需要欄位

    新增「欄位設定」算子,刪除不需要欄位並給某些欄位重新命名。如下圖所示:

    欄位名
    操作
    id
    刪除
    operate_time刪除
    operate_type刪除
    operate_user重新命名為「編輯人員」
    task_id-
    task_name重新命名為「任務名稱」
    task_path重新命名為「任務路徑」
    task_type刪除
    from_unixtime(CAST((operate_time / 1000) AS BIGINT), yyyy/MM/dd HH:mm:ss)重新命名為「任務儲存或修改時間」

    2.5 資料聯動

    將 2.2 節、2.3 節、2.4 節的資料進行聯動。

    拖入「資料聯動」算子,「欄位設定」與「欄位設定1」左聯動,生成的表與「欄位設定2」左聯動。如下圖所示:

    2.6 篩選有效資料

    2.5 節聯動後的資料,部分資料中「任務id1」與「task_id」欄位為空,需要篩選出這兩個欄位非空的資料。

    拖入「資料過濾」算子,設定如下圖所示:

    2.7 匯出資料

    1)拖入「DB表匯出」欄位,匯出資料。如下圖所示:

    2)點選「欄位映射」,刪除「任務id1」與「task_id」欄位。

    2.8 效果查看

    1)儲存並運作任務,運作成功後,如下圖所示:

    2)資料庫表資料如下圖所示:

    39.png

    3)使用資料庫表資料做 FineReport 範本,篩選任務名稱查看該任務的建立時間、編輯人員、所在路徑、儲存或修改時間等。如下圖所示:

    1691655413295826.png

    3. 注意事項

    本文 2.2 節取出 fine_dp_conf_entity_x 表中的定時任務檔案相關配置資料( namespace 欄位為 DPFileEntityStore),entity_value 欄位在不同版本解析後欄位不同。

    4.0.25 及之後版本,entity_value 欄位如下圖所示:

    1691717699275626.png

    4.0.25 之前版本,entity_value 欄位如下圖所示:

    1691717610979815.png

    其中,上圖中的 id 和 fileId 代表的含義相同,都為檔案 id 。

    3.1.1 FDL 為 4.0.25 之前版本

    本文 2.2.2 節步驟中,選擇 JSON 節點時選擇  fileId 和 createTime 即可。

    3.1.2 FDL 為 4.0.25 之前版本升級到 4.0.25 及之後版本

    此時取出 fine_dp_conf_entity_x 表中的定時任務檔案相關配置資料( namespace 欄位為 DPFileEntityStore)後,entity_value 欄位如下圖所示:

    1691718028984762.png

    可以使用兩個「資料過濾」算子,分別過濾出包含 fileId 和包含 id 的資料,獲得定時任務 id 和 createTime(定時任務建立時間)後,左右聯動即可。其餘步驟與本文第二章相同。



    附件列表


    主題: 最佳實踐
    已經是第一篇
    已經是最後一篇
    • 有幫助
    • 沒幫助
    • 只是瀏覽
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

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

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

    不再提示

    10s後關閉

    獲取幫助
    線上支援
    獲取專業技術支援,快速幫助您解決問題
    工作日9:00-12:00,13:30-17:30在线
    頁面反饋
    針對當前網頁的建議、問題反饋
    售前咨詢
    業務咨詢
    電話:0933-790886或 0989-092892
    郵箱:taiwan@fanruan.com
    頁面反饋
    *問題分類
    不能為空
    問題描述
    0/1000
    不能為空

    反馈已提交

    网络繁忙