怎麼把報表模塊從應用裏拆出來單獨維護?

如果報表通過報表工具開發,且報表中只涉及 SQL/ 存儲過程,拆分相對容易些,只需要整理好報表模塊需要的數據庫資源即可,比如:會涉及到哪些數據源、數據庫連接數需要分配多少等,然後將報表模塊單獨作爲報表應用部署維護即可。

如果報表中涉及 JAVA 編寫的內容(通常是爲報表準備數據)會比較麻煩。首先因爲 JAVA 代碼要跟主程序一起打包部署,所以報表模塊和主應用是緊耦合在一起的,要解耦報表模塊需要另一種方式實現報表中 JAVA 實現的部分。

報表中使用 JAVA 編碼主要基於以下幾種原因:

1、數據計算涉及複雜過程和邏輯控制
爲報表準備數據時涉及的計算過於複雜,或者需要做比較複雜的邏輯控制,通過 SQL 不易實現,只能通過 JAVA 硬編碼

2、涉及多樣性數據源
報表的數據來源多種多樣,當涉及 NoSQL、文本、XML、Hadoop、時序數據庫、Webservice 等數據源時,報表工具無法實現混合計算,需要用 JAVA 實現報表數據準備

3、方便應用擴展
未來業務增長需要對應用進行水平擴展(拆分),使用 SQL 不利於未來分庫,只能用 JAVA 實現報表數據計算

4、用於管理
爲了管理需要,有時需要記錄報表訪問人、報表查詢次數、每次查詢了哪些數據等信息,通過 JAVA 編寫監聽類實現

可以直接使用具備這些能力的報表工具完成解耦:
1. 很強的複雜計算能力,能完成較複雜的運算,還容易實現邏輯控制;
2. 多樣性數據源支持,最好還能混合計算,如 CSV 和 DB 做 join;
3. 計算不依賴數據庫,方便擴展
4. 支持熱切換,修改報表不用重啓應用

可以看一下 如何降低報表應用的耦合度 ,介紹瞭如何使用報表工具解耦報表和主應用,畫個圖感受一下:

imagepng
原來 JAVA 程序把報表和主應用緊緊綁在一起,現在可以把報表模塊單獨拆分維護,解釋執行可以熱切換,修改報表可以不必重啓整個應用了。甚至還可以將報表模板單獨部署,在物理上實現分離,實現單獨維護。

工具對複雜計算的支持可以參考 如何應對報表開發中的複雜邏輯
對多樣性數據源的支持參考 在報表中直接使用多樣性數據源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章