自定义报表 java_报表为什么会没完没了?怎么解决这个问题?
可以先想一下自己的部門或項目組是否面臨這些問題:
1. 投入很多技術力量做報表,卻還是疲于應付
2. 用了高端報表工具和敏捷 BI,卻還是不夠用
3. 技術高手用來做報表,感覺很浪費
4. 對于頻繁多變的報表需求,需要低成本應對方案
專門用于統計分析的報表業務有一個特點,就是業務穩定性非常差。在業務開展過程中會催生很多新的查詢需求,而且已實現的查詢需求還會經常變化,這就造成了沒完沒了的報表。所以經常會有這么一段對話
報表沒完沒了是需求使然,無法規避,只能適應,而目前主要的是問題是普遍缺少一種低成本的方案來適應沒完沒了的報表。
為什么報表開發成本一直居高不下?
我們知道,報表工具的主要作用是將報表呈現階段的開發工具化,使用報表工具可以將原本需要硬編碼的工作通過工具來提高生產效率;但報表開發的另一個階段:數據準備,卻仍然在使用原始的硬編碼方式處理,有時我們要編寫非常復雜的 SQL、存儲過程和 JAVA 程序,這樣的工作通常要依賴高水平的技術人員才能完成。
另外,采用過于原始手段會帶來報表維護困難,復雜的代碼無論從編寫還是修改都比較困難,這樣又會加劇報表開發成本居高不下!
除了技術原因外,還有應用結構和團隊管理方面的因素也會造成報表開發的成本居高不下。在許多應用系統中,報表是耦合在其中的一些功能,而業務系統的技術環境很復雜,這就迫使報表開發人員也要熟悉這些東西,也就很難把報表開發人員和業務系統的開發人員分開,業務系統上線之后,開發人員仍然要繼續堅守開發報表,很難把這項工作轉交給客戶方的運維人員。
開發過程中的有效溝通也會影響工作量。我們經常會發現這樣的現象:業務人員提出報表需求,等技術人員做好后才發現某些概念術語的理解有誤,統計口徑不一致,結果并不是業務人員想要的,然后也只能重做,甚至反復多次才能正確實現,嚴重浪費開發資源。
如何解決報表開發成本過高?如何低成本地應對沒完沒了的報表?
可以嘗試通過如下五個步驟來解決這些問題。
1. 引入報表工具
先把最容易解決的問題解決掉,通過引入專業的報表工具解放報表數據呈現階段的人力,報表工具可以完成包括中國式復雜報表在內的各種圖表呈現。選擇成熟且性價比高的工具是這個階段的主要目標。
2. 增加計算模塊
引入報表工具后,解放了數據呈現階段的人力,降低了一定的成本,但占主要部分的報表數據準備階段仍未解決。
數據準備階段的特點是:
1. 編碼困難,沒有普適的工具
2. 對人員要求高,需要高水平技術人員完成
3. 實現周期過長,難以適應多變的報表需求
4. 硬編碼耦合性高,依賴數據庫和 JAVA 都都會造成緊耦合
5. 運維過于復雜,修改維護成本提高
這時,我們需要沿著第一步的方向繼續前進,將數據準備階段也工具化。比較好的方式是
在報表工具中增加用于數據準備的計算模塊,將原來使用 SQL/ 存儲過程 /JAVA 實現的數據準備算法,全部通過計算模塊完成,使得報表開發徹底工具化,簡化開發,降低成本。
計算模塊的能力可以通過腳本來實現,在腳本中內置各種豐富的計算類庫,讓報表開發人員獨立就能完成數據準備階段的工作,從而全面接管報表的開發,而不再依賴其他專業程序員。
這里尤其要注意,報表計算模塊需要具備這樣一些能力。
1. 易于編碼
包含豐富的計算類庫,可以很方便地完成各類數據計算任務;必要時還能提供可視化的編輯調試環境進一步簡化這個階段的開發;
2. 支持熱切換
計算模塊需采用解釋執行機制,這樣可以很好地和前端報表呈現模板結合在一起,報表修改后可以實時生效,無需重啟整個應用;
3. 支持多樣性數據源
提供 RDB、NoSQL、文本、Excel、hadoop 等多樣性數據源接口,報表直接基于多言行數據源開發,也可以進行混合計算(如 Excel 和 RDB 的表 join);
4. 高性能
計算模塊的計算性能不能低于原來 SQL/JAVA 的計算性能,最好高于原來的實現方式。
報表開發全面工具化以后,就可以獲得更高的報表開發效率,進一步降低報表開發成本。
3. 獨立報表模塊
報表開發全面工具化以后,就可以著手梳理應用結構,獨立報表模塊,從而將報表模塊從業務系統中解耦出來。
1. 梳理數據源
首先梳理數據源,將報表業務相關的數據源都整理出來,以后的報表開發只需要和這些數據源打交道;同時為下一步剝離報表業務做準備。
2. 剝離報表業務
將數據源和業務應用中與報表相關的數據準備(復雜 SQL、存儲過程、中間匯總表、自定義 JAVA 類)全部轉移到報表工具中實現;同時將這些內容從數據庫和業務應用中清除,完成報表業務剝離。
3. 獨立報表模塊
報表業務完全剝離后,在報表工具中實現的報表在物理上就可以獨立于數據源和業務模塊存儲,不再與業務系統和數據源緊密耦合,完全獨立報表模塊
4. 調整應用結構
獨立報表模塊后,報表模塊與業務模塊共享數據存儲;應用系統調用報表模塊為用戶輸出報表結果;同時解釋執行報表模塊支持熱切換,即改即用,無需重啟應用。
獨立報表模塊以后,報表就可以單獨修改和維護,清晰的應用結構會進一步降低報表開發成本。
4. 建設報表團隊
報表模塊獨立后,建設專門的報表開發團隊,不再需要高成本應用程序員或 DBA 參與報表開發,進一步降低報表開發成本。
報表開發人員就無需應對紛繁復雜的應用環境,更無需關系應用架構,只需根據已有架構開發報表就可以了。半年以上工作經驗的技術人員就能勝任(其實,理工科應屆畢業生就可以了,甚至高中學歷都行)。
簡化報表開發后,還可以嘗試將持續的報表開發工作移交給客戶方的本地運維人員,這樣不僅能降低開發商的成本,還能提高對客戶的響應速度。
5. 完善溝通機制
最后就是建立有效的溝通機制,減少交流中的誤解。
一個簡單可行的辦法就是建立企業內部的報表知識庫,技術形式上搞一個論壇即可。把以前做過的報表收集到論壇上加以評注,并提供搜索功能。
當有了新的報表需求時,可以搜索歷史庫中是否曾經做過類似的報表(出現過相同的業務術語)。歷史報表中保留有相關代碼或公式,而這些形式化的信息不會有歧義,這就能幫助新的開發人員正確理解業務術語。
甚至許多報表部分還可以被直接復用,在人員變動時也可以最大限度地保證業務知識的繼承。
應對報表沒完沒了是一個長期的過程,是涉及技術、管理等諸多方面的綜合性事務。當這些步驟完成以后就可以全方位應對沒完沒了的報表了。
擴展閱讀:
應對報表沒完沒了的五個步驟
一勞永逸地“解決”沒完沒了的報表開發
總結
以上是生活随笔為你收集整理的自定义报表 java_报表为什么会没完没了?怎么解决这个问题?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gta5第三个逃犯位置在哪
- 下一篇: jsp中去掉超链接下划线吗_好烦啊,PP