楊振東,何 宏,劉光霆
(后勤工程學(xué)院 基礎(chǔ)部,重慶 401311)
在管理信息系統(tǒng)(MIS)中,經(jīng)常涉及到對一些基本信息的管理。為了有效地組織、管理這些信息,開發(fā)者往往通過數(shù)據(jù)編碼來確保信息的檢索、分類、統(tǒng)計(jì)和便于控制,以提高信息的處理效率和利用價值[1]。編碼設(shè)計(jì)及其管理是信息系統(tǒng)中不可缺少的重要組成部分。在實(shí)際工作中,經(jīng)常遇到一些數(shù)據(jù)之間具有從屬或上下級關(guān)系的情況,例如機(jī)構(gòu)編制、物資分類信息等都具有明顯的上下級和從屬關(guān)系。這類數(shù)據(jù)的編碼就是一種層次編碼。相比較傳統(tǒng)的基于C/S的應(yīng)用系統(tǒng),基于B/S的Web應(yīng)用系統(tǒng)靈活、易維護(hù)、成本低、使用方便、容易被用戶接受,已成為企業(yè)應(yīng)用的首選[2]。本文以一種典型的層次編碼為例,設(shè)計(jì)并實(shí)現(xiàn)了一個基于Web的簡潔美觀、功能強(qiáng)大的單位編碼幫助模塊。該模塊界面如圖1所示。
如圖1所示界面,左邊顯示上級單位的編碼和名稱,并用分隔符分開,右邊顯示左邊單位的直供單位或下級單位的編碼和名稱。下部是 “返回上級”、“下級單位”、“確定”、“取消”按鈕。選中左邊某單位,然后單擊“下級單位”按鈕,界面顯示如圖2所示。
左邊自動顯示所選單位的下級單位,右邊則是左邊默認(rèn)選中單位的下級單位,這樣逐層展示每層的單位編碼和名稱,層次結(jié)構(gòu)清晰,便于用戶查找。
圖1 單位編碼幫助模塊一
用戶在操作某張頁面時,可能多個地方需調(diào)用幫助模塊,如果每次都提交后臺處理,則在服務(wù)器上的程序處理頁面并返回數(shù)據(jù)期間,用戶只能等待。這樣的Web應(yīng)用程序因用戶得不到立即的反應(yīng),操作習(xí)慣和思路都會在每一次提交-等待中被打斷,交互性比較差,達(dá)不到桌面應(yīng)用程序的效果。因而設(shè)計(jì)時主要考慮兩個問題:是利用Ajax技術(shù)異步調(diào)用數(shù)據(jù),還是直接把數(shù)據(jù)下載到客戶端進(jìn)行處理;如何按層次展示數(shù)據(jù)。Ajax使用XMLHttpRequest對象與Web服務(wù)器進(jìn)行異步數(shù)據(jù)交換[3]。但當(dāng)數(shù)據(jù)量比較大時,異步獲取數(shù)據(jù)需較長的等待時間,因此可以把數(shù)據(jù)一次性下載到客戶端再進(jìn)行分層處理。
圖2 單位編碼幫助模塊二
首先,在數(shù)據(jù)庫中建一個Dwxx表,用dwbm和dwmc兩個字段對應(yīng)存儲單位編碼與單位名稱,以Java平臺為例,首先可以新建一個POJO類Dwxx:
然后,定義一個DwxxService類來組裝數(shù)據(jù),以ArrayList的形式返回客戶端進(jìn)行處理:
客戶端處理代碼封裝成模塊且置入主界面 (如index.htm)中。用戶登錄系統(tǒng)進(jìn)入主界面后自動下載單位編碼并生成幫助系統(tǒng)隱藏在客戶端,載入其他需調(diào)用單位編碼幫助功能的頁面時就不必重復(fù)去后臺下載單位編碼,而是把已生成的模塊由隱藏變?yōu)榭梢姡@樣大大提高層次編碼的處理速度。代碼以通用的JavaScirpt代碼為主,再輔以少量服務(wù)器端腳本。核心代碼如下:
參照以上設(shè)計(jì)思路,可以實(shí)現(xiàn)如圖3所示的單位編碼維護(hù)模塊。由于篇幅所限,就不再給出處理代碼。
編碼處理是構(gòu)建優(yōu)秀、完善的管理信息系統(tǒng)的重要功能,其效率的高低直接關(guān)系到整個系統(tǒng)的性能。通過以上設(shè)計(jì),完成了一個高效的層次編碼處理模塊。該模塊結(jié)構(gòu)簡單,稍做修改就可以在.NET平臺下實(shí)現(xiàn),相對于大部分系統(tǒng)只列出一個層次編碼的下拉框來說,更符合用戶使用習(xí)慣,突出特點(diǎn)是對大數(shù)據(jù)量層次編碼的處理也非常迅速,目前已在多個大型管理信息系統(tǒng)中采用,受到用戶一致好評。此外,本文所提出的開發(fā)思路對處理其他各種復(fù)雜的層次編碼也起著良好的借鑒作用,完全可以運(yùn)用于供貨商編碼、地區(qū)編碼、油品編碼等處理。
圖3 單位編碼維護(hù)模塊
[1]康業(yè)娜,許勇,魏士偉.物流信息系統(tǒng)編碼模型研究[J].微計(jì)算機(jī)信息,2007,36(2):59-60.
[2]郭曉峰,姚世軍,尹祖?zhèn)?基于.NET的Web應(yīng)用框架的設(shè)計(jì)與應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(2):454-455.
[3]季強(qiáng),田薇,陳遠(yuǎn).基于 Ajax技術(shù)的 WebOS系統(tǒng) NixOS的構(gòu)建[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(5):1198-1199.