李志平
(長(zhǎng)春市測(cè)繪院,吉林長(zhǎng)春 130021)
城市測(cè)繪單位生產(chǎn)流程管理系統(tǒng)因?yàn)槠錁I(yè)務(wù)流程特殊性有別于一般的辦公系統(tǒng),它要求處理更為復(fù)雜的數(shù)據(jù)信息。長(zhǎng)春市測(cè)繪院根據(jù)自身生產(chǎn)經(jīng)營(yíng)特點(diǎn)自主設(shè)計(jì)研發(fā)了基于Java平臺(tái)的B/S模式的生產(chǎn)流程管理系統(tǒng)。
生產(chǎn)流程的主要信息的載體是表單,而且表單會(huì)隨著生產(chǎn)的需要不斷進(jìn)行調(diào)整,開發(fā)出簡(jiǎn)單易用的表單管理模塊顯得至關(guān)重要。本文主要討論如何設(shè)計(jì)開發(fā)可視化靈活定制的生產(chǎn)流程表單管理模塊,并給出該模塊的實(shí)現(xiàn)方法及部分源代碼。
圖1 表單定制功能模塊圖
表單模塊主要包含表單編輯、表單存儲(chǔ)、表單驗(yàn)證、表單調(diào)用及表單導(dǎo)入導(dǎo)出等功能,具體功能模塊如圖1所示。
表單在整個(gè)生產(chǎn)流程辦理過程中記錄全部相關(guān)的辦理信息,包括任務(wù)下達(dá)信息、技術(shù)設(shè)計(jì)信息、中間成果處理信息、成果檢查信息及成果入庫(kù)輸出信息等。當(dāng)流程辦理完畢時(shí),表單上會(huì)呈現(xiàn)整個(gè)流程辦理過程及相關(guān)辦理信息。為了更好地說明表單模塊在整個(gè)流程中的角色及作用,下面給出表單模塊的數(shù)據(jù)流程圖,如圖2所示。
圖2 表單模塊的數(shù)據(jù)流程圖
該系統(tǒng)開發(fā)平臺(tái)為Windows xp sp2,開發(fā)語言為Java 2.0,數(shù)據(jù)庫(kù)采用MySql 5.1,數(shù)據(jù)庫(kù)管理系統(tǒng)為phpMyAdmin 3.1,開發(fā)工具采用Eclips 8.0,編輯工具采用Dreamweaver 8.0。
系統(tǒng)開發(fā)流程嚴(yán)格遵循軟件工程的思想進(jìn)行實(shí)施,具體開發(fā)流程如圖3所示。
圖3 項(xiàng)目開發(fā)流程
表單維護(hù)與管理模塊主要實(shí)現(xiàn)表單的分類、創(chuàng)建、編輯、刪除、存儲(chǔ)等管理功能,同一個(gè)界面集成全部表單管理功能,操作簡(jiǎn)單易用,界面如圖4所示。界面列出了部分已經(jīng)定義好的生產(chǎn)流程表單模板。
圖4 表單管理界面
表單編輯界面完全是可視化編輯,所見即所得,具備基本的辦公軟件操作經(jīng)驗(yàn)的用戶可以很容易掌握表單的定制。表單編輯的主頁(yè)面如圖5所示,主要功能包括定義表單編碼、名稱、流程類型及表單預(yù)覽;表單定制主頁(yè)面如圖6所示,主要功能是編輯表單。
新建表單通過點(diǎn)擊圖4增加表單即可進(jìn)入圖5所示的編輯主頁(yè)面,進(jìn)一步點(diǎn)擊編輯按鈕進(jìn)入圖6所示的定制頁(yè)面開始編輯表單,分為可視化編輯和代碼編輯兩種界面,以適合不同類型用戶的需要。編輯好表單點(diǎn)擊圖6中的保存并退出返回到圖5的界面完成編輯,最后點(diǎn)擊提交將表單存儲(chǔ)到數(shù)據(jù)庫(kù)中。
圖5 表單編輯主頁(yè)面
圖6 表單編輯子頁(yè)面
系統(tǒng)采用B/S模式進(jìn)行架構(gòu),后臺(tái)數(shù)據(jù)庫(kù)采用MySql 5.1,數(shù)據(jù)表 Form、Form_field、Form_table_form-Code(formCode代表表單類別)存儲(chǔ)表單信息,其中:
Form表主要用于定義表單的類別、名稱、內(nèi)容等信息,表單的內(nèi)容以網(wǎng)頁(yè)代碼(代碼符合html4.01標(biāo)準(zhǔn),編輯的內(nèi)容如3.2節(jié)中圖5所示)的形式存儲(chǔ)于content字段中。
Form表數(shù)據(jù)字典 表1
Form_field表用于定義表單控件名稱、類別及初始數(shù)值等信息,當(dāng)辦理流程時(shí),表單加載模塊通過將Form_field表中控件(name)與Form表中表單網(wǎng)頁(yè)代碼(content)進(jìn)行匹配,如果名稱相同,則將控件的值賦給網(wǎng)頁(yè)代碼中的同名控件。
Form_field表數(shù)據(jù)字典 表2
Form_table_kongzhi(其中,formCode= “kongzhi”,代表控制測(cè)量的流程對(duì)應(yīng)的表單)表主要用于存儲(chǔ)流程辦理過程中表單填寫的具體內(nèi)容,當(dāng)開始流程辦理時(shí),表單加載模塊會(huì)自動(dòng)將該表字段與Form表中表單網(wǎng)頁(yè)控件進(jìn)行匹配,如果匹配成功則將該字段的值賦值給網(wǎng)頁(yè)控件的值,否則保持網(wǎng)頁(yè)控件默認(rèn)值。
Form_table_kongzhi表數(shù)據(jù)字典 表3
該系統(tǒng)表單模塊的驗(yàn)證子模塊采用了知識(shí)庫(kù)設(shè)計(jì),思路是將表單控件參數(shù)及驗(yàn)證規(guī)則存于配置文件中(當(dāng)然如果知識(shí)較多也可以存于數(shù)據(jù)庫(kù)中),通過Javascript腳本編程實(shí)現(xiàn)對(duì)驗(yàn)證規(guī)則與控件屬性參數(shù)的匹配,從而達(dá)到對(duì)表單控件的自動(dòng)驗(yàn)證,體現(xiàn)了智能化的特點(diǎn)。為了便于系統(tǒng)調(diào)用,將驗(yàn)證腳本存于腳本文件FormValid.js中,具體代碼片段如下:
下面以網(wǎng)頁(yè)文本控件為例說明如何配置參數(shù)及調(diào)用驗(yàn)證方法。假設(shè)表單模板包含控件為<INPUT title=”工程名稱”style="WIDTH:446px;HEIGHT:21px"size=”56”name=”gc_xm”>,只需在<INPUT>標(biāo)簽上添加valid和errmsg屬性即可完成參數(shù)配置,其中valid代表判定條件,值可以取"required"(必填項(xiàng))、"number"(數(shù)字)、"telephone"(電話號(hào))等,如果需要并列判定,比如要求“必填且為數(shù)字”,則valid的值可表示為”required|number”;errmsg代表沒有通過判定時(shí)的提示信息。本例中的<INPUT>標(biāo)簽的valid和errmsg屬性的值分別設(shè)為valid="required",errmsg="[計(jì)財(cái)科-工程名稱]不能為空,請(qǐng)檢查!",那么完整的控件代碼為:<INPUT title=”工程名稱”style="WIDTH:446px;HEIGHT:21px"size=”56”name=”gc_xm”valid="required"errmsg="[計(jì)財(cái)科-工程名稱]不能為空,請(qǐng)檢查!">。這樣,當(dāng)填寫完表單進(jìn)行提交時(shí),系統(tǒng)會(huì)驗(yàn)證“工程項(xiàng)目名稱”是否為空,如果為空,則提示“[計(jì)財(cái)科-工程名稱]不能為空,請(qǐng)檢查!”,不為空則繼續(xù)驗(yàn)證其他控件,直到所有控件驗(yàn)證完畢才確認(rèn)提交。
表單導(dǎo)入是指將已經(jīng)編輯好的表單導(dǎo)入到數(shù)據(jù)庫(kù)中,系統(tǒng)支持多種表單格式導(dǎo)入,其中包括word格式(*.doc)、文 本 格 式 (*.txt)、網(wǎng) 頁(yè) 格 式(* .html,* .mht)。
表單導(dǎo)出是指將數(shù)據(jù)庫(kù)中的表單導(dǎo)出其他文件格式,系統(tǒng)支持的導(dǎo)出的格式包括word格式(*.doc)、文本格式(* .txt)、網(wǎng)頁(yè)格式(* .html,* .mht)。
測(cè)繪數(shù)據(jù)資料經(jīng)常需要進(jìn)行存檔、歸檔,為此系統(tǒng)提供了表單打印功能,可以利用瀏覽器進(jìn)行選擇性打印或者利用系統(tǒng)提供的模板打印,也可以導(dǎo)出其他格式進(jìn)行打印。
本文主要討論是如何構(gòu)建可擴(kuò)展的,具有高度定制功能的可視化表單模塊,并采用Java語言進(jìn)行了編程實(shí)現(xiàn)。由于該模塊采用了宏控件的思想,使得系統(tǒng)很靈活,同時(shí)系統(tǒng)定義了一套表單定制的規(guī)則,使得定制表單更方便快捷。
由于該表單定制模塊是采用模塊化思想且基于Java語言開發(fā)的,因此具有一定的擴(kuò)展性和可移植性,可以很容易移植到其他操作系統(tǒng)下的辦公系統(tǒng)表單定制管理。
[1] 普雷斯曼(美)著,鄭人杰等譯.軟件工程:實(shí)踐者研究方法(原書第7版)[M].北京:機(jī)械工業(yè)出版社,2011.
[2] 耿祥義,張躍平.Java2實(shí)用教程(第三版)[M].北京:清華大學(xué)出版社,2006.
[3] 埃克爾(美)著,陳昊鵬譯.Java編程思想(第4版)[M].北京:電子工業(yè)出版社,2007.
[4]JavaResearch.org編.J2SE進(jìn)階[M].北京:機(jī)械工業(yè)出版社,2004.
[5]李剛.輕量級(jí)Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)—Struts 2+Spring+Hibernate整合開發(fā)[M].北京:電子工業(yè)出版社,2008.
[6] 劉偉,張利國(guó).Hibernate開發(fā)與實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2009.