劉 暉,王迎春
(新疆伊犁河流域開(kāi)發(fā)建設(shè)管理局,830000,烏魯木齊)
系統(tǒng)設(shè)計(jì)的重點(diǎn)在于實(shí)現(xiàn)和構(gòu)造信息記錄項(xiàng)目的靈活性、方便性及通用性,按實(shí)際工作要求定義各種形式的信息記錄,開(kāi)發(fā)不受應(yīng)用平臺(tái)限制的瀏覽器/服務(wù)器(B/S)的Web應(yīng)用。系統(tǒng)使用者可根據(jù)實(shí)際工作要求,按照系統(tǒng)設(shè)計(jì)的相應(yīng)格式提出一段文字內(nèi)容,就可以快捷地完成信息記錄項(xiàng)目的定義,并在數(shù)據(jù)提交頁(yè)面自動(dòng)生成提交數(shù)據(jù)項(xiàng)。系統(tǒng)的通用性表現(xiàn)在無(wú)論信息記錄項(xiàng)目中有多少變量,表達(dá)文字有多少,都不需要對(duì)程序代碼或數(shù)據(jù)結(jié)構(gòu)作出調(diào)整。
系統(tǒng)由信息記錄項(xiàng)目定義模塊、數(shù)據(jù)提交模塊和信息記錄顯示模塊構(gòu)成,各模塊按系統(tǒng)設(shè)計(jì)規(guī)則對(duì)數(shù)據(jù)庫(kù)中的信息記錄數(shù)據(jù)進(jìn)行插入、更新或提取操作,系統(tǒng)結(jié)構(gòu)見(jiàn)圖1。
圖1 系統(tǒng)結(jié)構(gòu)圖
項(xiàng)目定義模塊是用戶(hù)根據(jù)水利工程管理任務(wù)(工程施工、工程建設(shè)監(jiān)理、工程建設(shè)管理、工程運(yùn)行管理)或某一特定工程項(xiàng)目的信息類(lèi)別定義信息記錄項(xiàng)目、變量項(xiàng)的模塊,是水利工程建設(shè)與管理通用信息記錄系統(tǒng)的核心模塊。用戶(hù)可根據(jù)模塊提供的功能,自行完成適于各類(lèi)信息記錄需求的記錄模板設(shè)計(jì)。項(xiàng)目定義模塊適用于信息記錄設(shè)計(jì)人員,一般在新建或更改信息記錄項(xiàng)目時(shí)使用。完成項(xiàng)目定義共需兩個(gè)步驟,第一步:根據(jù)信息記錄項(xiàng)目的內(nèi)容,分析并提取相關(guān)變量信息,對(duì)變量進(jìn)行分類(lèi)后編碼,給出變量名稱(chēng)描述和單位,變量編碼作為引用變量的依據(jù);第二步:根據(jù)信息啟示項(xiàng)目需要表達(dá)的內(nèi)容,定制信息記錄表述內(nèi)容,用變量編碼表示相關(guān)變量項(xiàng)目。項(xiàng)目定義完成后,將在數(shù)據(jù)庫(kù)中形成對(duì)項(xiàng)目完整的數(shù)據(jù)描述。
信息記錄項(xiàng)目定義完成后系統(tǒng)可根據(jù)項(xiàng)目變量的層次,應(yīng)用ASP.net中的GridView控件自動(dòng)列表,在Grid View控件中填加模板列,在模板列中加入TextBox控件,數(shù)據(jù)提交頁(yè)面根據(jù)信息記錄項(xiàng)目數(shù)據(jù)描述表中的信息,自動(dòng)生成數(shù)據(jù)提交列表。數(shù)據(jù)提交模塊可以同時(shí)處理多個(gè)信息記錄項(xiàng)目,根據(jù)選擇的項(xiàng)目展現(xiàn)相對(duì)應(yīng)的數(shù)據(jù)提交列表。數(shù)據(jù)提交模塊是水利工程建設(shè)與管理通用信息記錄系統(tǒng)的數(shù)據(jù)基礎(chǔ),一般適用于信息數(shù)據(jù)維護(hù)人員,是信息數(shù)據(jù)維護(hù)人員最常用的模塊。
信息記錄顯示模塊是水利工程建設(shè)與管理通用信息記錄系統(tǒng)的最終表現(xiàn)形式,是各類(lèi)信息經(jīng)系統(tǒng)統(tǒng)計(jì)、分析后的結(jié)果表現(xiàn),供水利工程管理人員及決策人員檢索、查詢(xún)。開(kāi)發(fā)設(shè)計(jì)中應(yīng)用正則表達(dá)式技術(shù),由程序分析信息記錄項(xiàng)目變量的組成,根據(jù)項(xiàng)目定義時(shí)確定的變量提取方法(忽略空值、空值填空、空值填零),對(duì)項(xiàng)目表述文本進(jìn)行再構(gòu)造,模塊中放置了 2個(gè) MsChart控件,Visible屬性默認(rèn)為false,如果信息記錄項(xiàng)目需要用圖表進(jìn)一步表述,只要將相關(guān)表述變量與MsChart的Serial屬性進(jìn)行關(guān)聯(lián),并將Visible屬性更改為true,即可得到直觀(guān)的圖表顯示。
水利工程建設(shè)與管理通用信息記錄系統(tǒng)的開(kāi)發(fā)過(guò)程中應(yīng)用Web服務(wù)技術(shù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,實(shí)現(xiàn)了將系統(tǒng)開(kāi)發(fā)成B/S結(jié)構(gòu)的Web應(yīng)用。根據(jù)各模塊的設(shè)計(jì)目標(biāo),用正則表達(dá)式實(shí)現(xiàn)文本內(nèi)容檢索匹配,用GridView模板實(shí)現(xiàn)自動(dòng)生成提交數(shù)據(jù)列表,用MsChart實(shí)現(xiàn)圖表顯示,用數(shù)據(jù)分級(jí)描述方式使系統(tǒng)適應(yīng)多種形式信息記錄的要求,最終實(shí)現(xiàn)了信息定義、數(shù)據(jù)提交、信息內(nèi)容顯示、信息檢索的功能。
考慮到系統(tǒng)需處理多種形式(施工、監(jiān)理、建設(shè)管理、運(yùn)行管理)的信息記錄,直接對(duì)具體描述對(duì)象定義數(shù)據(jù)字段很難做到靈活性、通用性,因此采用數(shù)據(jù)描述的方式來(lái)實(shí)現(xiàn)應(yīng)用需求。系統(tǒng)共創(chuàng)建4個(gè)數(shù)據(jù)表,分別為信息項(xiàng)目登記表(LOG_INDEX)、信息項(xiàng)目描述表(LOG_STRUCTURE)、信息記錄登記表(LOG_ITEM)、信息記錄數(shù)據(jù)表 (LOG_ITEM_INDEX),在提交信息記錄數(shù)據(jù)時(shí),項(xiàng)目下的每一變量生成一行記錄,數(shù)據(jù)表結(jié)構(gòu)見(jiàn)圖2。
數(shù)據(jù)表中關(guān)聯(lián)字段“PROJECT”表示項(xiàng)目分組代碼,是總分類(lèi)標(biāo)識(shí);“LOG_NO”表示項(xiàng)目代碼,作為信息記錄細(xì)項(xiàng)的分類(lèi)碼;LOG_CODE為3級(jí)(1級(jí)表示信息類(lèi)別,2級(jí)表示變量類(lèi)別或變量本身,3級(jí)表示變量本身)6位編碼,前2位引用父編碼LOG_NO,LOG_STRUCTURE 表 中 的ITEM_DESC字段為記錄細(xì)項(xiàng)的描述;LOG_SERIAL組成LOG_NO+4位序列碼。通過(guò)此編碼規(guī)則可以明確區(qū)分信息記錄項(xiàng)目及該項(xiàng)目下所有需要記錄的信息細(xì)項(xiàng),可以方便地根據(jù)編碼進(jìn)行信息記錄檢索。
(1)項(xiàng)目定義模塊程序設(shè)計(jì)
項(xiàng)目定義模塊程序流程見(jiàn)圖3。
(2)數(shù)據(jù)提交模塊程序設(shè)計(jì)
根據(jù)選擇的信息記錄項(xiàng)目從數(shù)據(jù)表“LOG_STRUCTURE”、 “LOG_ITEM_INDEX”中提取信息記錄數(shù)據(jù)更新項(xiàng)信息,構(gòu)建包含 LOG_CODE、LOG_NAME、LOG_VALUE、LOG_UNIT 列的 DataSet類(lèi)型數(shù)據(jù)集,把從數(shù)據(jù)庫(kù)中提取的信息裝載進(jìn)該DataSet數(shù)據(jù)集,并與GridView控件綁定,自動(dòng)生成不同信息記錄項(xiàng)目數(shù)據(jù)更新項(xiàng)目列表;MODIFY_ITEM(STRING OP,STRING LOG_NO)方法根據(jù)調(diào)用參數(shù)“insert”或“update”執(zhí)行向數(shù)據(jù)庫(kù)插入記錄或更新記錄操作,依據(jù)信息記錄定義中確定的空值處理方式對(duì)未填入數(shù)據(jù)的數(shù)據(jù)更新項(xiàng)進(jìn)行處理。系統(tǒng)掃描列表中所有行中的細(xì)項(xiàng)編碼,在數(shù)據(jù)表“LOG_ITEM_INDEX”中插入或更新數(shù)據(jù)。數(shù)據(jù)提交模塊程序流程見(jiàn)圖4。
(3)信息記錄顯示模塊程序設(shè)計(jì)
將指定日期轉(zhuǎn)換成信息記錄序列號(hào),在數(shù)據(jù)庫(kù)中提取所需數(shù)據(jù),在信息記錄信息顯示頁(yè)面中使用Label控件顯示信息記錄文字表述,使用MsChart控件顯示信息記錄圖表,使用如下正則表達(dá)式處理信息記錄表述內(nèi)容:
STRING INEDX_CODE="[@][0-9]{1,}";//已提交信息記錄數(shù)據(jù)項(xiàng)編碼
STRING EMPTY-CODE="\w{1,}[A-Z,\-]\w{1,}[@][0-9]{1,}[,]";//忽略空值情況下信息記錄表達(dá)式中多余的數(shù)據(jù)項(xiàng)
圖2 數(shù)據(jù)表結(jié)構(gòu)
圖3 項(xiàng)目定義模塊程序流程
圖4 數(shù)據(jù)提交模塊程序流程
MATCHCOLLECTIONmc=TEGEX.MATCHES(信息記錄文字表達(dá)語(yǔ)句(LOG_SYNTAX),INDEX_CODE)。
用上述正則表達(dá)式對(duì)信息記錄表述語(yǔ)句中已提交的數(shù)據(jù)項(xiàng)進(jìn)行文字替換,完成第一次匹配,在第二次匹配中把信息記錄表述語(yǔ)句中未提交的數(shù)據(jù)項(xiàng)的語(yǔ)句移除,如果仍存在已提交信息記錄數(shù)據(jù)項(xiàng)編碼,則為空值填空的情況,進(jìn)行第三次匹配,消除與空值相關(guān)的表述語(yǔ)句。完成信息記錄文字表述內(nèi)容處理后,把需要進(jìn)行圖表顯示的數(shù)據(jù)綁定到相應(yīng)的MsChart控件上,信息記錄顯示頁(yè)面即可按項(xiàng)目定義要求顯示相關(guān)記錄信息。
[1]Wei-Meng Lee著,薛瑩 譯.C#2008編程參考手冊(cè)[M].北京:清華大學(xué)出版社,2009.
[2]Paul Kimmel.Advanced C#Programming[M].McGraw-Hill/Osborne,2003.
[3]Sanuabh Nandu.C#.NET Web Developer’s Guide [M].Global Knowledge,2003.
[4]Rick Greenwald,Robert Stackowiak.Professional Oracle Programming[M].Wiley Publishing,Inc,2005.