摘 要: 研究了目前查詢系統(tǒng)以及查詢平臺的發(fā)展現(xiàn)狀,設計和實現(xiàn)了一種新型的通用查詢平臺,該平臺可以快速構建Web方式的通用查詢系統(tǒng)。在設計和實施過程中,充分采用了面向?qū)ο蟮乃枷牒头椒āMㄟ^綜合利用信息技術,保證了該平臺可以靈活快速地構建可定制、高推廣性、既友好又安全的Web分布式動態(tài)查詢系統(tǒng),較大地降低了Web查詢系統(tǒng)的開發(fā)成本和維護工作的難度。
關鍵詞: 面向?qū)ο螅籛eb通用查詢系統(tǒng);分布式
隨著Internet應用的不斷擴展,許多企業(yè)都在努力或已經(jīng)建造了自己的信息系統(tǒng)。每一個信息系統(tǒng)的開發(fā),都有大量的查詢需求。查詢功能是信息系統(tǒng)用戶使用頻率最高的功能,查詢功能設計的好壞,不但影響到項目的研發(fā)工作量和軟件質(zhì)量,而且關系到用戶的滿意指數(shù)。目前,實現(xiàn)查詢功能的方法有很多,最為普遍的設計方法是在管理信息系統(tǒng)中增加1個專用的查詢模塊,這種做法不僅大大增加了系統(tǒng)開發(fā)的難度、降低了開發(fā)效率,還給系統(tǒng)的維護帶來了難以估計的工作量。現(xiàn)有一些專用工具也為開發(fā)者實現(xiàn)查詢功能提供了便利,但對普通的操作人員來說,是難于學習和掌握的,無法隨心所欲地定制查詢。如何才能降低實現(xiàn)的技術難度,達到根據(jù)用戶的設置動態(tài)地改變頁面,滿足用戶的多樣性和多變性的查詢需求,是需要解決的問題。針對以上問題,本文基于ASP和FLEX技術,結合攀鋼ERP和MES以及檢化驗的歸檔系統(tǒng),提出了一種通用動態(tài)查詢系統(tǒng)平臺(PXQueryF)的設計和實現(xiàn)。
1 問題分析
目前攀鋼建設有1套面向整個集團的ERP系統(tǒng)、3套MES(近期還有2~3套準備建設)系統(tǒng)和9套檢化驗系統(tǒng),為了保證系統(tǒng)性能和數(shù)據(jù)的完整性,公司提出對這些系統(tǒng)進行集中歸檔并提供查詢,完成兩千余張數(shù)據(jù)表的簡單查詢和需求不確定的組合查詢。由此可見,查詢的工作量很大,而且可變性大。如果沿用傳統(tǒng)的方式是不能滿足需要的,因此,考慮設計一種通用的查詢平臺,通過簡單的勾選配置方式,動態(tài)生成查詢語句和查詢頁面,以滿足所有的查詢功能。
要實現(xiàn)動態(tài)生成查詢語句和查詢頁面,首先需要實現(xiàn)供用戶選擇的表、表的字段等配置功能;其次是根據(jù)配置生成查詢界面;再根據(jù)用戶的查詢選擇生成WHERE子句和排序子句,組織1條完整的SQL語句提交給數(shù)據(jù)庫,并將查詢結果展現(xiàn)給用戶;最后是對查詢頁面進行權限管理[1]。
2 系統(tǒng)平臺設計與實現(xiàn)
使用B/S模式的信息發(fā)布和檢索,由于它的簡單性、靈活性,越來越得到了廣泛的應用。眾多的開發(fā)工具如ASP、PHP、JSP等,簡單易學、功能強大,為各種信息的發(fā)布和檢索提供了強有力的幫助。在Web環(huán)境中實現(xiàn)通用查詢系統(tǒng)分為兩個方面:(1)前端查詢表單。這是一個可交互的主頁,用以構成查詢界面,用戶通過該界面提交查詢請求;(2)后端應用服務程序。它處理用戶的查詢請求,并將處理結果返回給瀏覽器。本文結合現(xiàn)有的信息技術完成了以下的設計和實現(xiàn)[1]。
2.1 設計目標
查詢系統(tǒng)平臺的設計目標如下:
(1)該平臺需滿足對多個項目、多個數(shù)據(jù)庫的管理。
(2)查詢方式可以為數(shù)據(jù)庫中的任意表、視圖、SQL語句和任意字段的組合,且表名和字段名必須為中文。
(3)用戶可以根據(jù)需求隨意創(chuàng)建查詢條件,沒有任何限制;系統(tǒng)根據(jù)配置項動態(tài)生成查詢頁面,并依據(jù)字段類型提供給用戶不同的查詢方式。
(4)用戶輸入的查詢條件能按語法規(guī)則正確地翻譯成程序,并返回正確的結果。
(5)對頁面進行授權管理。
(6)界面友好、操作方便、查詢快捷。
2.2 PXQueryF的體系結構
PXQueryF的體系結構如圖1所示,該平臺總體采用了3層體系架構:數(shù)據(jù)庫支持層、邏輯服務層、界面交互層。
(1)界面交互層
該層是CS、Html或JSP(ASPX)頁面的集合,對用戶屏蔽了數(shù)據(jù)存儲及維護。其中配置和權限是使用C#實現(xiàn)的,采用C/S模式,主要為程序員或用戶提供查詢系統(tǒng)的配置和權限管理;業(yè)務前臺使用FLEX實現(xiàn),采用B/S模式,便于系統(tǒng)部署和查詢。
(2)邏輯服務層
邏輯服務層實現(xiàn)的是應用服務器(中間層)的功能,自動化處理客戶端的請求,實現(xiàn)業(yè)務邏輯與提供服務接口的功能,通過數(shù)據(jù)訪問模型間接訪問數(shù)據(jù)庫以存儲和獲取數(shù)據(jù)。此層主要包括設計模型、Web動態(tài)查詢模型、接口服務等功能[2]。其中配置應用服務器使用.net實現(xiàn),采用remonting技術;業(yè)務應用服務器通過ASP.net實現(xiàn),采用Websevice技術。
(3)數(shù)據(jù)庫支持層
該層處理了所有定義的數(shù)據(jù)集的細節(jié)以及與數(shù)據(jù)庫的交互,保證對數(shù)據(jù)源透明訪問。數(shù)據(jù)庫采用2種方式:XML方式和關系型數(shù)據(jù)庫。通常將配置數(shù)據(jù)和權限數(shù)據(jù)保存在XML文件中,但也可單獨保存在關系型數(shù)據(jù)庫中(如ACESS數(shù)據(jù)庫)及保存在業(yè)務數(shù)據(jù)庫中。此外,對重要的數(shù)據(jù)如權限數(shù)據(jù)還需進行加密。
2.3 主要技術與實現(xiàn)
2.3.1 大數(shù)據(jù)訪問和導出
構建一種3層客戶端/服務器的體系結構,用戶可通過Internet瀏覽企業(yè)信息,但是當瀏覽大量數(shù)據(jù)庫數(shù)據(jù)時,網(wǎng)絡連接常因速度緩慢或因超時而中斷。因此,為了避免由于數(shù)據(jù)整體傳送時間過長而導致的斷連,為了滿足用戶瀏覽數(shù)據(jù)的局部性要求,將數(shù)據(jù)化整為零,采用分頁技術來加快數(shù)據(jù)的傳輸,解決1次訪問數(shù)據(jù)量大的問題。在訪問Web服務器時,有2個因素限制了網(wǎng)頁的連接時間:一是數(shù)據(jù)庫的查詢操作,另一個是網(wǎng)絡傳輸?shù)臄?shù)據(jù)量。在數(shù)據(jù)庫中的查詢,可以通過建立索引來解決,例如,書目表可按十大類字段進行索引,這樣可大大加快數(shù)據(jù)庫查詢速度。為了減少網(wǎng)絡傳輸數(shù)據(jù)量,采用分頁傳輸?shù)募夹g,例如,客戶端查詢出1萬條記錄可以1次僅傳輸50條記錄,這樣可加快網(wǎng)頁的連接時間而不會因超時而中斷。
對于大量數(shù)據(jù)導出,不能采取化整為零方式。可以利用EXCEL格式識別的靈活性,通過產(chǎn)生較快的帶有格式的網(wǎng)頁流(Html流)方式,輸出到EXCEL中,實現(xiàn)數(shù)據(jù)的導出功能。采用這種方式,對100萬行10列的數(shù)據(jù)導出,大約耗時30 s,可以滿足普遍的數(shù)據(jù)導出性能要求。其處理流程圖如圖2所示。
2.3.2 實現(xiàn)Web動態(tài)技術
靜態(tài)網(wǎng)頁是設計者做好的固定的網(wǎng)頁,不適合通用查詢系統(tǒng)要求。動態(tài)網(wǎng)頁以數(shù)據(jù)庫技術為基礎,它不是獨立存在于服務器上的網(wǎng)頁文件,只有當用戶請求時服務器才返回一個完整的網(wǎng)頁[3]。這樣可以大大降低網(wǎng)站維護的工作量并可以實現(xiàn)更多的功能。在本方案的實施中采用了FLEX開發(fā)工具,通過它可以實現(xiàn)表現(xiàn)層和內(nèi)容的真正分離,可以把數(shù)據(jù)巧妙地從任何地方(XML,數(shù)據(jù)庫等)取出并綁定到界面中的元素上[4]。通過讀取菜單配置、查詢配置、復雜表頭配置、數(shù)據(jù)展示區(qū)配置等數(shù)據(jù)動態(tài)生產(chǎn)網(wǎng)頁。
2.3.3 復雜表頭的配置
在查詢系統(tǒng)中,有許多表的表頭有多行且之間存在包含關系,在以往的設計中往往采用保存模板的方式,在展示時導入該模板。這種方式存在如性能、用戶體驗等的不足,在動態(tài)網(wǎng)頁中尤其明顯[5-6]。為克服這些問題且方便程序員或用戶使用,本平臺提供了模板導入功能。操作人員在EXCEL中做好模板,通過平臺提供的工具導入,將表頭的所有信息保存在數(shù)據(jù)庫中。在動態(tài)產(chǎn)生網(wǎng)頁時,可通過算法實現(xiàn)FLEX數(shù)據(jù)網(wǎng)格的重繪,實現(xiàn)用戶的多表頭數(shù)據(jù)查詢。
2.3.4 基于配置的定制查詢
為了滿足系統(tǒng)快速開發(fā),本設計實現(xiàn)了基于配置的查詢定制,主要從以下方面實現(xiàn):
(1)項目配置:該平臺實現(xiàn)1個或多個項目建立和集中管理。
(2)數(shù)據(jù)源配置:完成1個或多個數(shù)據(jù)源的配置、測試,如圖3所示。
(3)表配置:完成表連接、視圖、SQL語句的配置。
(4)字段配置:實現(xiàn)字段選擇,顯示類型,可設置字段的查詢條件、凍結、可見與否、只讀、排序等,如圖4所示。
3 PXQueryF的特點
(1)方便快速的操作:程序員或用戶幾乎不用培訓就可以使用該工具,不需要通過寫代碼就可實現(xiàn)生成一個功能強大的B/S結構的查詢系統(tǒng)。項目實施人員只需關注業(yè)務,不關心實現(xiàn)的細節(jié),開發(fā)效率高。
(2)采用FLEX實現(xiàn)的查詢前臺可跨平臺、對瀏覽器具有很好的兼容型、性能穩(wěn)定,動態(tài)生成的Web頁面統(tǒng)一、用戶體驗好,且方便維護等。
(3)可定制:可以靈活方便地配置完成多種形式的查詢,如:單表結構查詢、關聯(lián)查詢、自定義SQL查詢。
(4)平臺不足之處:該平臺目前還未實現(xiàn)不規(guī)則復雜報表方式的查詢和打印功能。
該通用查詢系統(tǒng)平臺實現(xiàn)了SQL語句大多數(shù)功能,如單個表的查詢和多表的連接查詢。而且很容易地實現(xiàn)分組求和功能。其通用查詢的設計思想,縮短了開發(fā)周期,提高了工作效率。視圖定義模塊與通用查詢模塊以及權限模塊的劃分,使得利用該平臺構建的查詢系統(tǒng)維護更加方便。本通用查詢平臺已經(jīng)在攀鋼ERP和MES系統(tǒng)歸檔應用工程中使用并取得較好效果。
參考文獻
[1] 劉軍,陽小華,楊星.基于B/S模式的通用型組合查詢組件的設計[J].微計算機信息,2006,22(3):256-258.
[2] 李鵬飛,朱洪龍.基于.NET和XML的動態(tài)通用查詢模塊的設計與實現(xiàn)[J].航空計算技術,2007,37(4).
[3] 王嘉禎,王紅霞,寧紅巖.基于Web的通用查詢系統(tǒng)的設計實現(xiàn)[J].電腦開發(fā)與應用,2000,13(9).
[4] 王軍鋒,賈建華,申志偉.通用查詢模塊設計和實現(xiàn)[J].山西電子技術,2006(3).
[5] 官全龍,姚國祥,林良超.一種快速構建Web動態(tài)查詢 系統(tǒng)新型平臺的設計與實現(xiàn)[J].計算機應用與軟件,2008,25(9).
[6] 朱小川,動態(tài)網(wǎng)頁制作技術[J].科技論壇,2005,12(2).