王德廣,張軍卒,王超
一個 MIS軟件的生命周期可以分為軟件定義、軟件開發(fā)和軟件維護3個時期。MIS系統(tǒng)傳統(tǒng)開發(fā)方法,往往將窗口程序與數(shù)據(jù)表結(jié)構(gòu)緊緊綁定在一起,而一旦表結(jié)構(gòu)發(fā)生了改變,與之對應(yīng)的窗口界面也需改變,程序員就必須不厭其煩地更改代碼;同時,由于 MIS系統(tǒng)自身比較復雜,表的數(shù)量繁多,如果需要編寫大量的重復代碼,即使一個高級程序員,也需要花費很長的時間完成界面的開發(fā)再者,在軟件維護過程中,由于軟件自適應(yīng)性差,無形中增加了軟件開發(fā)的成本[1]。
在不斷地生產(chǎn)實踐中,人們發(fā)現(xiàn)了在 MIS系統(tǒng)開發(fā)中功能存在共性的特點,系統(tǒng)的業(yè)務(wù)在數(shù)據(jù)庫層面上,表現(xiàn)為最基本的操作:增加、刪除、修改、查詢。查詢操作使用最為頻繁,也最難處理。如果有一種通用的查詢模塊,在MIS系統(tǒng)開發(fā)時可以直接應(yīng)用,而無需重新編寫,那么問題就解決了。于是有了最早的一類通用綜合查詢模式的提出,這是通用開發(fā)平臺的雛形,標志著通用平臺技術(shù)的開端。
根據(jù)對 MIS系統(tǒng)共性的分析,創(chuàng)建一個普遍適用的用戶數(shù)據(jù)字典,由通用平臺進行管理和維護,使通用平臺具有部分DBMS的功能。通用平臺將用戶數(shù)據(jù)字典從數(shù)據(jù)層中提出來,作為高于數(shù)據(jù)層的單獨一層。通過對數(shù)據(jù)字典的設(shè)計對用戶數(shù)據(jù)表進行管理和控制,實現(xiàn)應(yīng)用程序和表結(jié)構(gòu)的分離,以此來實現(xiàn)動態(tài)通用查詢,構(gòu)建通用開發(fā)平臺[2]。
基于數(shù)據(jù)字典的動態(tài)查詢方法實現(xiàn)SQL的動態(tài)生成,使開發(fā)人員便可通過平臺界面配置查詢語句,而無需編寫代碼,平臺將動態(tài)生成SQL語句和界面顯示。無法通過平臺實現(xiàn)的查詢,需要單獨編寫[3]。圖1為基于用戶字典的通用動態(tài)查詢結(jié)構(gòu)圖。
圖1 基于用戶字典的通用動態(tài)查詢結(jié)構(gòu)圖
目前,通用平臺技術(shù)在C/S模式下的應(yīng)用已經(jīng)很成熟,可以較好的實現(xiàn)系統(tǒng)間的通用,基于數(shù)據(jù)字典的復用動態(tài)查詢構(gòu)件方面的研究成績尤為突出,基本達到了通用平臺預(yù)期的設(shè)想,但B/S模式下的研究仍處在初級階段,主要研究工作仍集中在通用動態(tài)查詢功能上,忽視其他重要功能的實現(xiàn)。通用平臺技術(shù)在B/S模式下的研究還面臨很多問題,同時也存在廣闊的發(fā)展空間。
存在的兩個有待解決的重要問題:
1. B/S模式下,仍局限于系統(tǒng)內(nèi)的通用,還沒有實現(xiàn)系統(tǒng)間的通用,平臺還不具有單獨開發(fā)MIS系統(tǒng)的能力。
2. 實現(xiàn)功能單一。目前,通用查詢的功能已經(jīng)很完善,但增加、刪除、修改以及DDL語言的功能都沒有實現(xiàn)[4]。
針對有現(xiàn)有平臺的不足,本文提出一種基于數(shù)據(jù)字典的MIS系統(tǒng)通用開發(fā)平臺(Universal Development Platform Based on Data Dictionary,即UDPDD平臺),該平臺針對在B/S模式下的應(yīng)用,重點研究平臺通用開發(fā) MIS系統(tǒng)的能力。
UDPDD平臺以用戶數(shù)據(jù)字典為核心,根據(jù)對MIS系統(tǒng)業(yè)務(wù)需求的分析,發(fā)現(xiàn)其功能的共性并以此為基礎(chǔ),創(chuàng)建一個普遍適用的用戶數(shù)據(jù)字典,該用戶數(shù)據(jù)字典由UDPDD平臺自身進行管理和維護,用戶數(shù)據(jù)字典作為高于數(shù)據(jù)層的單獨一層。UDPDD平臺保留了基于數(shù)據(jù)字典的動態(tài)查詢方法,并實現(xiàn)了DBMS中數(shù)據(jù)定義語言(DDL)部分的功能,即CREATE、DROP、ALTER等操作。UDPDD平臺通過通過對用戶數(shù)據(jù)字典的設(shè)計和控制,實現(xiàn)SQL的動態(tài)生成,并結(jié)合了界面的動態(tài)自動生成技術(shù),在使用平臺開發(fā) MIS系統(tǒng)時,開發(fā)人員只需了解業(yè)務(wù)邏輯,并把數(shù)據(jù)信息通過平臺界面輸入到數(shù)據(jù)字典中,平臺將根據(jù)數(shù)據(jù)字典的設(shè)計和開發(fā)人員輸入的配置信息自動生成表結(jié)構(gòu),完成建表。然后開發(fā)人員便可通過平臺界面配置SQL語句,而無需編寫代碼,平臺將動態(tài)生成SQL語句和界面顯示。
UDPDD平臺以C/S模式下通用平臺的研究為基礎(chǔ),將應(yīng)用擴展到B/S模式下,UDPDD平臺定位成一種供MIS系統(tǒng)開發(fā)人員使用的二次開發(fā)平臺,開發(fā)人員使用本平臺可以高效地開發(fā)出MIS系統(tǒng),MIS系統(tǒng)中有些特殊功能,無法通過平臺實現(xiàn),UDPDD平臺為此預(yù)留了接口,開發(fā)人員需要單獨編寫程序,并通過平臺接入到MIS系統(tǒng)中。
UDPDD平臺的開發(fā)模式是以通用的用戶數(shù)據(jù)字典為基礎(chǔ),UDPDD平臺已設(shè)計好用戶數(shù)據(jù)字典,開發(fā)人員通用平臺輸入表信息,平臺將自動生成表結(jié)構(gòu),創(chuàng)建用戶數(shù)據(jù)表,并將用戶數(shù)據(jù)填充到用戶數(shù)據(jù)字典中,然后通過平臺動態(tài)生成SQL以及Web界面,完成MIS系統(tǒng)的開發(fā)。UDPDD平臺的開發(fā)模式實現(xiàn)了系統(tǒng)間的通用,突破了現(xiàn)有平臺的局限,大大地提升了通用性,它的開發(fā)模式如圖2所示。
1.支持用戶自定義動態(tài)查詢,查詢內(nèi)容可以是任意表、任意字段的組合。查詢條件完全取決于用戶的需求,可以隨意創(chuàng)建。涉及到多表的查詢,平臺自動實現(xiàn)表的連接。
2.能按語法規(guī)則動態(tài)正確地組合、生成SQL查詢語句,并動態(tài)返回查詢結(jié)果。
3.基于B/S模式,引入MVC思想,以J2EE技術(shù)實現(xiàn)。
4.實現(xiàn) DDL語言功能,能夠根據(jù)開發(fā)人員的設(shè)置自動建表,開發(fā)人員可以通過平臺建表、刪除表、以及修改表結(jié)構(gòu)。
5.動態(tài)生成Web界面。
6.基于B/S模式,引入MVC思想,以J2EE技術(shù)實現(xiàn)。
圖2 UDPDD平臺開發(fā)模式示意圖
UDPDD平臺在B/S模式下實現(xiàn),基于輕量級J2EE規(guī)范,采用經(jīng)典的3層架構(gòu),系統(tǒng)按功能共分為兩大模塊:1.系統(tǒng)設(shè)計模塊:這個模塊完成 MIS系統(tǒng)的設(shè)計工作,它由菜單設(shè)計、表設(shè)計、字段設(shè)計3個模塊組成2. 系統(tǒng)管理模塊:對平臺的使用進行管理,它由包括開發(fā)者賬號管理、用戶權(quán)限管理、登錄用戶口令、用戶日志管理4個模塊組成。如圖3所示。
圖3 系統(tǒng)模塊圖
3.2.1 數(shù)據(jù)字典的總體結(jié)構(gòu)設(shè)計
系統(tǒng)的數(shù)據(jù)字典共由12個字典表組成它們分別為:
1.數(shù)據(jù)庫信息表(DD_DATABASE)。
2.數(shù)據(jù)表信息表(DD_TABLES)。
3.字段信息表(DD_COLUMNS)。
4.登錄信息表(DD_LOGIN)。
5.模塊信息表(DD_MODULE)。
6.權(quán)限信息表(DD_PURVIEW)。
7.用戶信息表(DD_USER)。
8.菜單信息表(DD_MENU)。
9.風格選擇信息(DD_STYLESELECT)。
10.存儲結(jié)構(gòu)信息表(DD_PROCEDURE)。
11.觸發(fā)器信息表(DD_TRIGGER)。
12. DBMS信息表(DD_DBMS)。
其中DBMS信息表是為了實現(xiàn)系統(tǒng)與平臺無關(guān)而建立的,使UDPDD平臺能夠支持多種主流的DBMS,它不參與到數(shù)據(jù)字典的總體結(jié)構(gòu)中,數(shù)據(jù)字典的總體結(jié)構(gòu)如圖4所示。
圖4 數(shù)據(jù)字典表關(guān)系圖
3.2.2 數(shù)據(jù)字典表的設(shè)計
數(shù)據(jù)字典表較多,限于篇幅,這里只詳細介紹其中比較重要的3張DD_TABLES、DD_MENU 、DD_COLUMNS,見表1至表3所示。表中一些字段的判定,如果不另加說明,默認取值為0,1,如表1中Is_view字段,1代表是,0代表不是。為了清晰地說明字段的屬性與取值含義,突出UDPDD平臺設(shè)計的思想,本文將在后面的章節(jié)中配合實例詳細說明。
表1 數(shù)據(jù)表信息表
表2 菜單信息表
表3 字段信息表
3.2.3 動態(tài)SQL語句生成器的設(shè)計
SQL語句生成器的實現(xiàn)按照MVC設(shè)計模式將程序劃分為模型(Model)、視圖(View)、控制器(Controller)3個部分,這3部分分別應(yīng)用不同的J2EE組件技術(shù)實現(xiàn),在構(gòu)建動態(tài)SQL時,首先根據(jù)用戶要執(zhí)行的操作類型,然后調(diào)用相應(yīng)的JavaBean進行業(yè)務(wù)處理,根據(jù)SQL語句的4個基本操作,分別編寫了 selectBean、insertBean、deleteBean、updateBean 4個JavaBean進行處理。然后對標準的SQL語句進行語義分析,將語句按語義分解成多個部分,在每個JavaBean中編寫不同的類來處理相應(yīng)的SQL部分。最后再按照用戶自定義的要求動態(tài)地把分解的部分組合起來,形成一條完整的SQL語句。圖5以查詢?yōu)槔f明了動態(tài)SQL的生產(chǎn)過程。
圖5 動態(tài)生成SQL語句示意圖
該通用查詢平臺已經(jīng)成功地應(yīng)用到大眾一汽發(fā)動機(大連)有限公司的設(shè)備故障維修系統(tǒng)的開發(fā)中,該系統(tǒng)以通用開發(fā)平臺為開發(fā)工具,用戶自定義頁面使用JSP技術(shù),數(shù)據(jù)庫采用SQL Server 2005。圖6為系統(tǒng)主界面。
圖6 系統(tǒng)主界面
下面結(jié)合實例簡要說明下創(chuàng)建表的過程,用戶點擊表設(shè)計菜單項,顯示出目前用戶數(shù)據(jù)表的信息,然后再點擊表添加按鈕,顯示建表頁面,如圖8所示,在字典表DD_TABLES中對表的屬性進行了設(shè)計,用戶自定義這些屬性,然后進入字段設(shè)計頁面為表添加字段,如圖8所示。
圖7 表添加頁面
圖8 字段添加頁面
本文著眼于以往研究的不足,并引入一些創(chuàng)新設(shè)計,提出了一種基于數(shù)據(jù)字典的通用平臺,即UDPDD平臺。該平臺已通過測試,成功地應(yīng)用于大眾一汽發(fā)動機(大連)有限公司的設(shè)備故障維修系統(tǒng)的開發(fā)中,滿足了通用開發(fā)的需求,實現(xiàn)了縮短軟件周期、降低成本的目的。MIS系統(tǒng)的開發(fā)擁有廣泛的市場需求,簡單易行的特性和實際應(yīng)用中的強大功能使得通用查詢平臺有著廣闊的生存空間。
[1] 王獻勇,劉樹惠.基于數(shù)據(jù)字典的界面動態(tài)生成方法探討[J] .軟件導刊,2008,7(1):54-56.
[2] 郭勝輝,孫玉芳.基于數(shù)據(jù)字典庫的信息系統(tǒng)的設(shè)計[J] .計算機學報.2000,23(4):414-417.
[3] 李磊,李一凡,郝明國.基于用戶數(shù)據(jù)字典的通用動態(tài)查詢組件的研究與實現(xiàn)[J] .微電子學與計算機,2005,22(3):17-19.
[4] 王德廣,張軍卒,李文.基于數(shù)據(jù)字典的通用查詢平臺的設(shè)計[J] .科學技術(shù)與工程,2008,9(19):5849-5851.