讓用戶自己設計和修訂報表是報表軟件很多年來所不斷追求的一個境界。但在很多嘗試之后,我們可以說離用戶自定義報表還有很大的距離。現有的解決方案大致可以歸為兩類。第一種是把桌面報表設計界面搬到瀏覽器上。第二種是提供一個簡單的Wizard界面,讓用戶可以在不需要培訓的情況下,可以自己做一些設計。
把桌面設計界面直接搬到網上基本上是把技術的和應用混淆了。這類型里最具代表的廠家當屬Cognos和它的ReportNet。ReportNet應該是最早應用AJAX技術在瀏覽器里全面實現報表設計界面的報表產品。從技術的角度,ReportNet的實現方式在2004年可以算是當之無愧的技術領先者。但這并不表示用了最新的技術就解決了用戶的問題。
其實用戶是否需要安裝一個軟件,只是自定義報表的很多因素中的一個。在讓用戶可以任何時間都使用報表設計界面的基礎上,這個軟件還必須帶來一個既易用又強大的工具。如果我們把一個給開發人員使用的工具交給終端用戶,得到的結果只能是一群迷茫的用戶。這往往還要改變工具的使用模式。
而提供一個簡單Wizard的方式往往太過限制。報表Wizard通常提供了一些基本的功能,比如數據選擇,排序,過濾,匯總等。雖然這些功能聽起來很多,但除了一些最簡單的報表,用戶基本上不能做出太多的東西。在實際操作中,Wizard大概只能滿足不到30%的客戶需求。
在討論及時報表的時候,很多人會把報表設計和Spreadsheet做比較。問題往往是為什么Spreadsheet可以讓用戶自己設計,而報表設計卻這么難。那下面就來分析一下報表設計難度的原因。
設計報表最困難的一點是怎么得到需要顯示的數據。在使用Spreadsheet的時候,用戶可以看到具體的數據,和直接在具體數據上操作。而在設計報表時,用戶不可能直接接觸數據。因為用戶只能根據數據的結構來選擇,就需要一定的抽象思維。而對沒有專業訓練的用戶,要進行這樣操作通常會有一些難度。
第二點是在設計報表時用戶往往需要達到一定的布局。而在設計的時候,用戶還要考慮到報表的輸出,和分頁等繁瑣的細節。而大部分的用戶在自定義報表時常常最關心的是數據和數據的計算。但很多報表設計界面卻強迫用戶同時關注報表的編排,從而增加了設計的難度。
Java報表廠家在追逐了即席報表很多年以后,一直沒有找到一個可行的解決方案。可以說現在已經是要換一個新的思路的時候了。
從根本上解決用戶自定義報表的問題,我們必須要解決數據的提取和處理,同時需要簡化報表的排列。
簡化數據的處理是一個很困難的任務。絕大多數用戶并沒有數據庫的經驗。要讓他們掌握數據的提取,必須給他們提供一個十分所得及所見的環境。而大多數報表的軟件往往把數據的功能限制在過濾,分組,和匯總的層面上,極大地限制了工具的靈活性。
要克服這些缺點,Java報表工具必須擺脫傳統的數據處理的模型。不止是提供一個可以提取回顯示數據的功能,同時應用可視化的功能,讓用戶可以更加直觀的和數據互動。通過直觀的數據的顯示和在圖表上數據的操作,用戶可以在不用學習數據結構的前提下直接對數據進行提前和處理。
下面是一個典型的數據發布圖。

如果用戶想要得到銷售數量大而又打折很低的產品,只需要在圖表上選擇左上角的點。

然后通過顯示細節數據的功能來取出相應的數據。

當然這只是通過可視化進行數據提取的形式之一。當一個BI工具提供了豐富的可視化互動功能時,用戶可以幾乎是無限制地對數據進行多樣的操作。完全不需要被數據庫的技術所限制。
和此相輔相成的是對數據的呈現。數據可視化工具通常提供了一個讓用戶隨心所欲的排列信息的功能。因為用戶不需要關注最后數據的排版,界面的設計得到了極大的簡化。比如在我們需要顯示一個交叉表時,傳統的報表軟件要求用戶考慮到數據的擴展和的排版。而在一個互動的界面里,數據的擴展完全可以通過滾動條來控制。

有些讀者可能會想,在電腦界面上使用滾動條固然好,但當要把結果輸出到打印時,用戶是否還是要對格式做一些指定。否則結果還是不能滿足使用的需求。這里有一定的道理。具體的使用就要看這個BI軟件是否有足夠的功能來自動地處理信息的擴展和排列。
在大部分的情況下,軟件有足夠的信息自動的擴展和調整內容的位置,從而達到一個讓大部分用戶可以接受的結果。

在自動排版不能達到最理想效果的情況下,可視化軟件必須提供一個讓用戶自己安排內容的途徑。一種可行的方式是自動把可視化界面轉化成用戶可以更多控制的報表的格式。當然,這種解決方案需要相應的軟件同時支持可視化和報表的功能。
在今天高度信息化的環境里,電腦界面應該是一個主流的瀏覽和操作數據的途徑。當然打印的輸出也不能忽視。所以,通過可視化界面解決及時報表的方式,需要在這兩方面都有一個完整的解決方案。這樣,用戶既可以很簡易地生成自己需要的信息,又有足夠的控制來生成最后的結果。