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

實時資料儀表板定時重新整理

一、概述

1.1 預期效果

使用 FineBI 實時資料直連資料庫的使用者經常會將 FineBI 的儀表板用作企業戰情室展示,因此常常會需要將儀表板進行定時重新整理,FineBI 提供了實現儀表板定時重新整理功能,能夠實現單個儀表板、多個儀表板和單個組件的自動定時重新整理。

  • 儀表板定時重新整理效果,如下圖所示:

  • 單個組件定時重新整理效果,如下圖所示:

二. 方法一:引入refresh.js並指定ID值方式

2.1 實現思路

1)建立 JS 檔案。

2)將建立好的 refresh.js 檔案放至 FineBI 安裝目錄%FineBI%/webapps/webroot中

3)呼叫 JS 檔案。

若本文不滿足需求,可聯絡技術支援獲取 BI 預覽自動重新整理範本插件(QQ:800049425)。

2.2 單個儀表板定時重新整理

2.2.1 建立 JS 檔案

1)儀表板的定時重新整理透過客製的 JS 來實現,複製如下代碼建立 refresh.js檔案。

setTimeout(function () {
var b =document.title;
var a =BI.designConfigure.reportId;//獲取儀表板id
//對儀表板id進行判斷,實現指定儀表板重新整理
if (a=="7193a5c87fbb4915b8893e07a0c6759c") {
 setInterval(function () {
  BI.SharingPool.put("controlFilters", BI.Utils.getControlCalculations());
  //Data.SharingPool.put("controlFilters", BI.Utils.getControlCalculations());
  BI.Utils.broadcastAllWidgets2Refresh(true);
 }, 5000000);//5000000為定時重新整理的頻率,單位ms
}
}, 2000)

其中在對儀表板 ID 進行判斷時,需要修改判斷條件為自身需要重新整理的儀表板 ID;且 5000000 為定時重新整理的間隔時間,單位毫秒,根據自身需要進行修改,通常應大於 300000 。

2)修改 JS 檔案定時重新整理的間隔時間。

  • 如果資料不是每秒都更新。建議 JS 設定重新整理時間高於 5 分鐘,即定時重新整理的間隔時間應大於 300000 。

否則會引起當機,記憶體使用量激增等問題,且由於工程有5分鐘的快取時間,這5分鐘裏一直在讀快取,所以當重新整理時間間隔小於 5 分鐘時,資料可能不變化。

  • 如果要設定秒級的重新整理時間。需要在開啓實時資料的同時,關閉快取來規避 5 分鐘的快取時間。

管理者可在「管理系統>系統管理>BI 參數>快取設定」,關閉對應按鈕,並「儲存」後生效,設定路徑如下圖所示:

3)獲取儀表板 ID ,修改 JS 檔案儀表板 ID 。

儀表板 ID 可直接透過編輯儀表板時的連結位址獲取,比如建立儀表板時的連結位址為

http://localhost:37799/webroot/decision/v5/design/report/7193a5c87fbb4915b8893e07a0c6759c/edit,則該儀表板 ID 為7193a5c87fbb4915b8893e07a0c6759c,如下圖所示:

獲取後,在判斷 ID 處修改a=="儀表板ID"

4)關閉 FineBI  。

5)將建立好的refresh.js檔案放至 FineBI 安裝目錄%FineBI%/webapps/webroot中,如下圖所示:

2.2.2 呼叫 JS 檔案

1)在%FineBI%/webapps/webroot/WEB_INF/lib下的fine-bi-adapter-5.0.jar( 5.1 版本為 fine-bi-adapter-5.1.jar )中找到show.html,如下圖所示:


2)在該 HTML 檔案中插入下面的代碼呼叫之前建立的refresh.js檔案,如下圖所示:

插入代碼位置如下圖所示:

修改完成後儲存至該 JAR 包中。

2.2.3 效果查看

1)配置完成後啟動 FineBI ,在該儀表板預覽頁面中按 F12 查看網頁原始碼判斷 JS 是否載入成功。儀表板成功載入了定時重新整理的 JS 。如下圖所示:

注:若在 JS 裏面改頻率的話,修改完檔案儲存之後,清除瀏覽器快取就可以,不需要重啓 FineBI 。  

2)儀表板效果請參見本章 1.1 節。

2.3 多個儀表板定時重新整理

多個儀表板定時重新整理的與單個儀表板的操作步驟大體相似,那麼具體應該怎麼操作呢?下面我們來詳細介紹一下。

2.3.1 建立 JS 檔案

1)建立refresh.js檔案,內容與本章 2.1 節一致,需要設定儀表板 ID 及定時重新整理時間,定時重新整理頻率設定及注意事項請參見本文 2.1 節。僅在判斷儀表板 ID 的地方,填入需要設定的多個儀表板的 ID 判斷。

setTimeout(function () {
var b =document.title;
var a =BI.designConfigure.reportId;//獲取儀表板id //對儀表板id進行判斷,實現指定範本重新整理
if (a=="d5405b13bfeb454081be9627a9cfc97f" || a=="e1dcb1a61d6947e1adedced59bde9533") {  
setInterval(function () {
  BI.SharingPool.put("controlFilters", BI.Utils.getControlCalculations());  
  //Data.SharingPool.put("controlFilters", BI.Utils.getControlCalculations());  
   BI.Utils.broadcastAllWidgets2Refresh(true);  
   }, 5000000);//5000000為定時重新整理的頻率,單位ms
   }
   }, 2000);

比如上述代碼中,設定的即為“d5405b13bfeb454081be9627a9cfc97f”"e1dcb1a61d6947e1adedced59bde9533"兩個儀表板的 ID 判斷,還想增加的話,在判斷 ID 處繼續加入|| a=="範本ID"的條件即可。

3)儀表板 ID 可直接透過編輯儀表板時的連結位址獲取。

4)關閉 FineBI 。

5)將 refresh.js檔案put 命令%FineBI%/webapps/webroot下。詳情參見本章 2.1 節。

2.3.2 呼叫 JS 檔案

詳情請參見本章 2.2 節。

2.3.3 效果查看

1)若查看儀表板的網頁原始碼,每個儀表板都會增加定時重新整理的 JS 。詳情請參見本章 2.3 節。

2)儀表板效果請參見本章 1.1 節。

2.4 單個組件定時重新整理

若想要在儀表板展示時,對某個組件的資料進行定時重新整理,可參考如下操作步驟。

2.4.1 建立 JS 檔案

1)獲取定時重新整理組件的 ID 值

在儀表板編輯頁面按 F12開啟瀏覽器控制檯,選擇Console頁面,輸入 BI.designModel.widgets,回車,點選...獲取所有的組件資訊,點選組件 ID 後...獲取該組件的詳細資訊,如下圖所示:

點選下拉框,此時可以根據組件 ID 下方的name獲取找到需要設定定時重新整理的組件,獲取該組件的 KEY 值。本範例對未命名組件 1 進行定時重新整理, ID 為f83b0b5ec717bf18,如下圖所示:   

2020-07-10_17-40-21.png

2)獲取組件所在儀錶板 ID 。

從路徑中獲取該儀錶板 ID 為7193a5c87fbb4915b8893e07a0c6759c,如下圖所示:

3)建立refresh.js檔案,並設定儀錶板 ID 及定時重新整理的頻率,定時重新整理頻率設定及注意事項請參見本文 2.1 節。

檔案內容如下所示:

setTimeout(function () {   
var b =document.title;  
var a =BI.designConfigure.reportId;//獲取儀表板id   //對儀表板id進行判斷,實現指定儀表板重新整理  
if (a=="fdcc1cb3b96445fcba18fdf27684740b") {    
setInterval(function () {
BI.Broadcasts.send(BICst.BROADCAST.REFRESH_PREFIX + "b07e0e200514dfcb"); //重新整理指定組件  
}, 5000000);
 //5000000為定時重新整理的頻率,單位ms  
  }  
 }, 2000);

與範本定時重新整理 JS 相比,增加了指定組件的判斷。對範本 ID 進行判斷和重新整理指定組件中需要修改範本 ID 和組件 ID 為自身需要重新整理的對應 ID 值。本範例中修改a=="儀表板 ID "BI.Broadcasts.send(BICst.BROADCAST.REFRESH_PREFIX + "組件 ID ")

注:獲取範本 ID 後需要關閉 BI 再進行操作。

4)將refresh.js檔案put 命令%FineBI%/webapps/webroot下。

2.4.2 呼叫 JS 檔案

詳情參見本章 2.2 節。

2.4.3 效果查看

1)此時,查看設定的範本,單個組件會實現定時重新整理。若查看範本的網頁原始碼,會增加上述的定時重新整理 JS 。詳情請參見本章 2.3 節。

2)儀表板效果請參見本章 1.1 節。

三、前端非侵入式靈活配置

3.1操作思路

參考一的思路和方法,將每次修改js檔案新增相關ID值的方式,修改為儀表板元件內容嵌入代碼塊,js檔案決議內容並設定動態重新整理方法。

3.2 具體過程

3.2.1 js優化

同上所屬,show.html檔案新增如下代碼塊:

3.2.2 儀表板視覺化參數配置

新增一個“正文組件”,內容設定為如下代碼(由於正文組件的內容支援富正文式操作,因此如下代碼必須是一個整體方式對待處理,否則上述的js代碼將無法獲取該設定參數);

  true=IsAutoRefresh,10=SecondAutoRefresh  


附件列表


主題: 设计和分享仪表板
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 评价文档,奖励 1 ~ 100 随机 F 豆!