報表系統應該如何設計?–開源軟體誕生15
報表系統的設計與探討–第15篇
用日誌記錄「開源軟體」的誕生
【點亮星標】—-祈盼著一個鼓勵
部落客開源地址:
什麼是報表系統
報表對於業務系統是十分重要且與所有功能息息相關的,在資訊系統的日常應用中簡直可以說是無處不在。報表往往是通過匯總、統計的方式,通過不同的邏輯以及不同的展現形式,最終輸出我們在資訊系統中輸入的數據。
傳統的方式,我們實現一個報表,往往需要程式碼層面去實現。有一個報表邏輯我們就要根據當前邏輯,編寫一套程式碼來輸出顯示一個報表。但這種方式無疑是需要消耗高昂的開發成本以實現目的,所以報表系統應運而生。報表系統,簡單說就是可以通過配置或最少的開發方式來讓用戶自己實現自己想要的報表,以更便捷的方式降低了報表的實現成本。
報表系統解決了哪些問題
要看報銷系統解決了哪些問題,先要看原始的實現方式存在哪些問題,我們一條一條來分析。
(1) 快速開發報表,除了報表的核心邏輯外,開發多個報表往往需要很多重複的工作量。所以降低開發成本是報表系統最直接的好處。
(2)離線功能,傳統方式在報表生成時,往往是同步的,我們必須等待系統執行完成後,再查看報表或做其他操作。如果在報表的數據量較大的情況下,中間的等待時間往往是無法接受的。而報表系統就可以實現離線的生成報表,非同步的查看報表。
(3)歷史報表,傳統方式我們並不會存儲報錶的歷史記錄,比如你在月初生成了一個報表,如果你不在自己的硬碟里保存它,我們就很難在月底時找到月初生成的報表數據。而報表系統的歷史查詢功能就更突顯了它的優勢。
(4)定時報表、批量報表等更加靈活的報表生成方式,報表系統一般會提供更多更靈活的報表生成方式,而不僅僅局限於點擊生成、點擊查看,這是原始實現方式不具備的。
(5)統一的查看路徑和查看方式,如果沒有報表系統,我們要同時查看多個報表,往往必須多次點擊打開不同的模組,找到不同報表,查看的路徑和方式複雜多樣。而統一的方式更利於我們的日常管理和操作。
(6)統一的許可權控制,報表系統便於我們設置統一的許可權邏輯,並進行統一的許可權配置,實現報表和數據的嚴格管控。
ERP對於報表系統的依賴
大家都知道ERP系統管理的是企業內部的業務和財務,管理的是企業內一切的資源。這裡面涉及的報表不計其數,需要匯總、加工、統計、計算、分析等各種步驟。這讓本身就複雜的ERP系統,更為雜亂無章,十分需要一個一體化的解決方案來解決報表操作和處理的各種問題。
報表系統如何實現
既然報表系統對於ERP如此重要,下面我們來研究一下如何設計一個報表系統。現在常見的兩種報表系統的設計方式如下:
(1)全配置實現方式(極少程式碼):用友採用的是此方式。基本實現流程是,通過已經映射好的表結構關係和欄位關聯,將常用的欄位放置於頁面,通過可排版的編輯器,讓用戶自己製作出一個報表模板,並把設置好的欄位放置於模板中,最終生成用戶想要的報表。但這個過程中不是完全沒有編碼的工作,有時可能需要一些SQL或邏輯判斷來輔助完成。
此種方式多數只能生成一些不是特別複雜的報表,如果存在複雜的加工、分析邏輯,是很難通過配置方式簡單實現的。而對於簡單的報表,這種方式的實現門檻就極低了。
(2)部分程式碼、部分配置的實現方式:Oracle採用的是此方式。基本實現流程是,通過視圖或存儲過程生成報表的數據,然後用Excel畫出報表的模板,並根據固定的格式填入數據,最終將視圖和報表模板配置於報表系統中,從而生成用戶想要的報表。這個過程中需要用戶熟悉資料庫的基本操作,比如SQL、視圖、存儲過程等。
此種方式的優勢是基本可以用比較少的程式碼(只涉及報表的核心邏輯)實現所有的複雜報表的需求,而難點也是用戶必須具備一定的資料庫常用功能的編寫和處理能力。而即使是簡單的報表也採取了相同的實現流程,所以也需要上述的技術要求。
總結一下,不管你採用哪種方式實現報表系統,最終的目的一定是方便用戶生成報表,所以一定要分析你業務系統使用的場景,以及你產品受眾的關注點,去決定如何去設計報表系統。當然除了核心的流程外,一定要兼具離線處理、歷史記錄、批量報表、定時報表、許可權管控等各種功能。
後記
如果您對我們正在做的開源軟體感興趣,歡迎各種形式的合作,作為貢獻者或直接加入我們!讓我們一起打造一套開源的企業級資訊化解決方案。