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