張少應,張 濤
(西安航空學院 計算機學院,西安 710077)
隨著信息化建設的不斷發展,企業各下屬部門建立了各種功能的管理系統,給企業的生產和銷售帶來了很大的幫助和便利,但這些系統存在架構差異較大、系統間數據不關聯、信息不互換共享、重復建設等問題。同時企業對數據的應用和要求越來越廣泛,企業開始將各類同構和異構的數據進行集成,使得數據量按級數增加,導致數據檢索與分析困難。針對上述問題,系統開發人員通常采用數據倉庫、數據挖掘、聯機分析、應用集成等技術,對海量數據進行分析處理,為管理層政策決策提供可靠的依據。在Web應用程序中,數據統計已從單純的文本顯示向多元化角度發展[1]。使用報表、圖表顯示的方式,更直觀地為管理層進行信息預測、政策制定提供可靠的保障,實現數據的可視化。
Java語言是企業級開發中常選的開發語言之一,目前在Java Web應用程序中使用的圖表生成技術有兩種:一是基于HTML5圖形庫的圖表組件(客戶端生成技術);二是基于服務器端生成技術。這兩種技術針對多種格式的數據,為用戶提供了可以高度個性化定制的數據可視化圖表,基本都能滿足企業級開發的需求。
在B/S應用系統開發中,基于客戶端生成技術通常采用Flash插件、基于HTML5的Canvas組件采用JavaScript+DIV等前臺開發技術,結合Ajax的異步更新工作方式,在不重新加載整個頁面的情況下,實現與服務器交換數據,并更新部分網頁內容。其工作原理如圖1所示。

圖1 基于客戶端生成技術的工作原理
目前比較流行的技術有ECharts、Hightcharts等。這些軟件大多都是純JavaScript編寫的圖表庫,底層依賴輕量級的Canvas類庫,為用戶提供直觀、可交互、可高度個性化定制的數據可視化圖表[2-3]。使用該技術進行開發時,需要在頁面中引入該技術對應的庫文件以及自定義的JavaScript文件,在頁面添加一個DIV元素,作為放置圖表展示的容器;設置圖表類型配置項的參數值和圖表的渲染;定義解析函數,完成處理XML、JSON格式數據的JavaScript加載文件,實現以圖表形式顯示業務邏輯數據的功能。
基于服務器端的生成技術,通常都是采用Java技術開發的圖形圖表類庫,供Java Applets、Servlets以及JSP應用程序的調用,實現對后臺數據的處理,直接在瀏覽器中顯示交互式的圖表圖像,其工作原理如圖2所示。

圖2 基于服務器端生成技術的工作原理圖
目前比較流行的技術有JFreeChart[4-5]、JCharts、潤乾報表等,它們大多都使用純Java語言編寫,繼承其跨平臺的特性,在基于框架開發、MVC開發模式等Java Web應用程序中,都可以無縫的與該系統集成,為企業級數據分析與商業智能提供可靠的、直觀的統計分析圖表,為企業管理者的決策提供必要的參考。
使用該技術進行開發時,用戶需要在項目中導入該技術對應的JAR庫文件,在Java類文件(JavaBean或Servlet)中,調用JAR文件中接口或類提供的方法,建立與后臺數據庫服務器交互的數據源;創建圖表對象,設置圖表類型項參數、圖形特性、顯示外觀等屬性值;使用JSP的動作標記,完成JSP頁面對Java類文件的調用,實現業務邏輯數據以圖表形式的直觀顯示。
在Java應用開發中,兩種技術都可以同后臺數據庫進行交互,在Web應用程序中生成折線圖、餅狀圖、曲線圖、散點圖等各類動態統計圖,為用戶提供直觀的數據顯示模式;設置鼠標點擊時數據點顯示提示的效果,縮放過濾按需查看細節,實現圖形的渲染等功能。但這兩種技術存在差異,主要表現在下述方面。
1.3.1 數據加載過程
在客戶端生成技術中,一般都采用Ajax實現動態數據的加載,其具體過程為:客戶端通過Ajax發送請求給Web服務器,服務器端通過Servlet接收用戶的請求,生成JSON格式的數據后,將結果反饋給客戶端。客戶端接收到數據,通過JavaScript的解析函數對JSON數據處理后,繪制出滿足用戶查詢條件的統計圖表。
在服務器端生成技術中,數據庫訪問層的Java類直接調用圖形圖表類庫中的接口或類,通過這些類提供的方法建立數據源。使用SQL或HQL語句操作后臺數據庫,完成對查詢數據的篩選。業務邏輯層通過調用數據庫訪問層的Java類、圖形圖表類庫提供的方法,完成對統計圖表的渲染。表示層通過JavaBean或者Servlet完成對業務邏輯層類的調用,實現圖表的正常顯示。
同服務器端技術相比,絕大多數客戶端技術都需要將后臺數據進行二次處理(生成JSON、XML格式),客戶端接收到這些數據后,需重新解析后才能生成圖表,增加了編碼的難度。而服務器端技術直接操作后臺數據庫,生成對應的數據集或單元格數據,處理效率高。
1.3.2 運行加載速度
使用服務器端生成技術開發的應用程序,大多都采用胖服務器架構形式,服務器的性能、訪問內容的冗余程度、網速帶寬和流量問題,影響圖表生成和瀏覽。在移動客戶端訪問時,圖表顯示會浪費大量流量,使得圖表加載的速度比較慢。而客戶端生成技術中,Web應用程序多采用瘦服務器架構,與圖表處理相關的好多代碼需在客戶端完成,Ajax技術的使用,使得不同的Ajxa請求在服務器端處理時間和客戶端處理時間上可能存在重疊部分,實現了服務器和瀏覽器并行工作[6],提升了網頁的加載渲染速度。隨著Adobe Flex技術在Web開發中應用,越來越多的B/S結構Web應用程序,都采用胖客戶端的形式,使這些Web應用程序的加載速度得到了明顯地提升。在服務器性能、處理數據量、查詢條件相同的條件下,其運行加載速度明顯快于服務器端生成技術。
1.3.3 瀏覽器支持情況
基于客戶端實現中,都會使用到圖形容器Canvas類庫,而對于低版本的瀏覽器一般都不支持該類庫,使得圖形的顯示效果受到明顯影響。例如,Echarts組件在360、IE8瀏覽器中不兼容,部分功能不能正常顯示。基于服務器端實現中,雖然圖表生成代碼都在業務邏輯層和數據庫訪問層完成,但該技術在部分瀏覽器中兼容性較差。例如,JFreeChart在低版本的IE瀏覽器中就不能正常顯示統計圖。
在使用Java語言進行企業級應用開發中,大多都采用Struts2.x、Spring4和Hibernate4(簡稱SSH2)框架集成[7]的方法來進行系統開發。這種系統結構成熟、性能良好、運行穩定,是目前許多企業級開發中首選的結構之一。選用框架集成的實施方案,可以更好地與采用框架集成技術系統的整合,降低開發的難度,具體實施方案如圖3所示。
方案采用面向接口編程的思想,DAO實現與數據庫的交互,完成對底層數據庫的持久化;Service為控制器提供服務,完成對DAO的封裝,使得控制器實現無需直接訪問DAO方法,而是調用業務邏輯的方法;Action實現用戶界面與業務邏輯的交互。在該方案中,Spring的IoC容器負責管理業務邏輯組件、控制層組件以及持久層組件,利用依賴注入的優勢,增強了系統的解耦,提高了系統擴展性,降低了系統重構的成本[8]。DAO編程模式的使用,使得數據訪問操作集中獨立在一層完成,在應用集成中,開發人員很容易在不同數據庫之間切換,獲取不同數據庫的數據,提高了系統的可維護性和可移植性。
為更好的與現有系統整合,可針對不同開發模式,選用不同的整合方法。當現有系統采用框架集成的方式,選用相同框架時可直接將該實施方案在系統中整合,以此完成不同數據源、統計圖顯示的設置;當現有系統采用其他開發模式時,將該實施方案發布為一個Web Service,通過Web服務方式完成與現有系統的集成。
在基于服務器端統計表生成技術中(見圖3),開發人員需將圖表開發所需的JAR文件導入到Web工程中(以JFreeChart為例),為有效管理生成動態圖表,在web.xml中配置JFreeChart組件,通過該組件中的org.jfree.chart.servlet.DisplayChart類管理生成的圖片。在完成配置后,對來自不同應用的同構或異構數據進行整合,使用DAO模式創建JFreeChart圖表的數據集。在Action中創建JFreeChart對象,修改圖片的顯示屬性,美化圖片的顯示樣式,并以輸出流的方式獲取圖片。如果想在JSP頁面調用圖片,把圖片的src請求路徑設置為產生輸出流的Action即可,實現了與系統中其他功能模塊的無縫整合。

圖3 框架集成的實施方案示意圖
在具體實現時,為方便集成到新系統,將連續不同數據源的基本信息(數據庫類型、用戶名、密碼等)存放在配置文件(.properties)中,使用Properties類完成數據源基礎信息的管理,驗證不同類數據庫連接是否正常。考慮到繪制統計圖時對數據庫的單表、多表操作,需要分析選擇數據庫表的數據是否滿足統計條件。對Excel格式數據的處理,則選用Java的POI組件對所選文件中單元格數據的隨機讀和寫。

圖4 通用統計圖表生成技術的應用
在通用統計圖表生成操作界面(見圖4)中,用戶可選擇不同數據源或導入Excel的數據,配置圖表參數后,程序開發人員需要分析所選擇的數據,判斷能否生成統計圖表。將該實施方案整合到現有系統中,開發人員無需進行數據庫訪問層代碼編寫,只要根據新系統的操作流程和客戶需求,完成業務邏輯層代碼二次開發,簡化了開發過程,提高了開發效率。
以直觀清晰的圖表展示企業生產過程中各個要素的數據,為管理者決策提供可靠的參考,是企業級應用開發中常用的功能模塊。基于客戶端統計圖表生成技術具有加載速度快、開發周期較短等優勢,在數據處理難度較低的應用開發中,很好地滿足了PC端和移動端的開發要求。而基于服務器端的統計圖表生成技術具有數據處理效率高、安全性較高的特點,在同構或異構數據集成的應用開發中,能夠很好地將不同應用的數據以圖表形式,直觀地將統計數據展現給用戶。在服務器端統計圖表生成技術中,使用SSH2框架集成技術和DAO編程模式設計的實施方案,具有開發難度低、維護效率高、系統可擴展性強的優勢,在系統集成開發中,具有推廣價值。