本發(fā)明涉及計(jì)算機(jī)系統(tǒng)的信息管理,尤指一種可以輕易實(shí)現(xiàn)在用戶管理的過程中對(duì)自定義邏輯的植入的基于腳本引擎的表單自定義、邏輯定義及處理方法。
背景技術(shù):
:數(shù)據(jù)的管理始終是計(jì)算機(jī)信息系統(tǒng)管理的核心,計(jì)算機(jī)信息系統(tǒng)的開發(fā)也圍繞著數(shù)據(jù)管理的核心來(lái)進(jìn)行的,根據(jù)不同的領(lǐng)域及業(yè)務(wù)特點(diǎn),抽象出要管理的數(shù)據(jù),以及數(shù)據(jù)處理的流程,在各個(gè)流程環(huán)節(jié)提供用戶操作界面,使用人員通過操作界面與程序交互從而完成整個(gè)數(shù)據(jù)處理的過程,最終將處理的結(jié)果或存儲(chǔ)或呈現(xiàn)給用戶。在信息系統(tǒng)中提供自定義表單功能,可以簡(jiǎn)化程序開發(fā)過程,并且可以提高系統(tǒng)的靈活性,自定義表單系統(tǒng)在信息系統(tǒng)中有很廣泛的應(yīng)用。現(xiàn)行的自定義表單系統(tǒng)實(shí)現(xiàn)相對(duì)簡(jiǎn)單,一般通行的辦法是,通過用戶配置得到表單界面元素的描述數(shù)據(jù),以及表單對(duì)應(yīng)的數(shù)據(jù)庫(kù)表結(jié)構(gòu),程序根據(jù)描述數(shù)據(jù)自動(dòng)生成表單管理界面和以及數(shù)據(jù)存儲(chǔ)邏輯?,F(xiàn)有技術(shù)方案示意圖如圖1所示一、用戶通過系統(tǒng)提供的工具完成對(duì)表單定義,得到表單描述數(shù)據(jù),表單描述數(shù)據(jù)大致可以分為三點(diǎn):1.表單錄入界面的描述,基本信息包括錄入界面的樣式,都有哪些控件,控件對(duì)應(yīng)表單的那個(gè)字段,默認(rèn)值是多少,字段的合法性校驗(yàn)規(guī)則等。2.表單數(shù)據(jù)查詢界面描述,數(shù)據(jù)包括,用哪些字段檢索,查詢字段條件數(shù)據(jù)采用的輸入控件,查詢結(jié)果返回哪些字段的數(shù)據(jù),以及列表頁(yè)的樣式等。3.表單存儲(chǔ)方式描述,包括表單都有那些字段,字段的類型、長(zhǎng)度,表單的存儲(chǔ)數(shù)據(jù)表名稱二、通過步驟一的數(shù)據(jù)系統(tǒng)自動(dòng)生成表單的管理以及查詢界面,用戶通過管理界面完成數(shù)據(jù)的管理,自動(dòng)完成用戶管理數(shù)據(jù)的存儲(chǔ)工作。現(xiàn)行的表單系統(tǒng)雖然極大提高了信息系統(tǒng)的靈活行,但是也有很明顯的缺點(diǎn)1.現(xiàn)有自定義表單系統(tǒng),通常邏輯比較固定,僅能實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)與查詢,一旦數(shù)據(jù)的處理邏輯再局限于表單的查詢和存儲(chǔ)需求,則需要額外引入業(yè)務(wù)邏輯對(duì)數(shù)據(jù)進(jìn)行再加工,現(xiàn)有模式無(wú)法適應(yīng),一般需要對(duì)表單系統(tǒng)進(jìn)行定制開發(fā)來(lái)擴(kuò)充現(xiàn)有的系統(tǒng),需要對(duì)現(xiàn)有系統(tǒng)做版本升級(jí),成本較高。2.現(xiàn)有表單系統(tǒng)存儲(chǔ)結(jié)構(gòu)比較單一,通常是將數(shù)據(jù)全部存儲(chǔ)在數(shù)據(jù)庫(kù),這種方式雖然方便管理與查詢,但是也有不可忽視的缺點(diǎn),對(duì)于不適合放在數(shù)據(jù)庫(kù)的數(shù)據(jù)如大文本等類型的數(shù)據(jù)也放必須在數(shù)據(jù)庫(kù),從而影響數(shù)據(jù)庫(kù)的效率,對(duì)數(shù)據(jù)庫(kù)效率敏感的系統(tǒng)危害較大。技術(shù)實(shí)現(xiàn)要素:為解決現(xiàn)有技術(shù)中的問題,本發(fā)明主要目的在于:提供一種可以輕易實(shí)現(xiàn)在用戶管理的過程中對(duì)自定義邏輯的植入的基于腳本引擎的表單自定義、邏輯定義及處理方法。本發(fā)明提供一種基于腳本引擎的表單自定義、邏輯定義及處理方法,步驟為:一、通過表單描述信息配置模塊錄入管理表單的描述信息,描述信息中增加:數(shù)據(jù)索引方式、字段的存儲(chǔ)方式及表單控件對(duì)應(yīng)表單存儲(chǔ)字段的描述;二、服務(wù)器解析獲取表單配置并保存;三、通過管理和查詢界面管理查詢數(shù)據(jù),在用戶管理數(shù)據(jù)過程中,保存數(shù)據(jù)時(shí),將需要保存的數(shù)據(jù)以上下文環(huán)境變量的方式傳遞到邏輯腳本執(zhí)行引擎,輯腳本執(zhí)行引擎加載用戶自定義的數(shù)據(jù)保存前腳本,對(duì)傳遞的數(shù)據(jù)進(jìn)行加工,加工后的數(shù)據(jù)通過腳本引擎上下文變量的方式回傳,完成自定義保存前腳本的處理過程,接收回傳數(shù)據(jù)后調(diào)用數(shù)據(jù)代理保存數(shù)據(jù),保存數(shù)據(jù)后將保存數(shù)據(jù)的結(jié)果,以及數(shù)據(jù)本身傳遞給輯腳本執(zhí)行引擎,腳本加載保存后腳本,運(yùn)行保存后腳本邏輯代碼,將結(jié)果返回給程序,然后同理調(diào)用發(fā)布腳本,完成發(fā)布邏輯的執(zhí)行;四、利用數(shù)據(jù)訪問代理層以數(shù)據(jù)代理方式,根據(jù)表單配置模塊所保存在服務(wù)器端的表單配置數(shù)據(jù)在表單運(yùn)行環(huán)節(jié)加載配置。前述表單描述信息包括:表單的字段定義:字段類型、字段長(zhǎng)度、字段名稱、默認(rèn)值、索引方式及字段的存儲(chǔ)方式;表單管理界面的定義:表單管理界面模板、表單采用的控件、表單控件的描述信息、表單控件對(duì)應(yīng)表單存儲(chǔ)字段、表單控件的樣式、表單控件的高度及寬度、默認(rèn)值及數(shù)據(jù)合法性校驗(yàn)的正則表達(dá)式、表單控件的數(shù)據(jù)源及表單控件的擴(kuò)展配置;表單數(shù)據(jù)查詢界面描述,數(shù)據(jù)包括:用哪些字段檢索、查詢字段條件數(shù)據(jù)采用的輸入控件、查詢結(jié)果返回哪些字段的數(shù)據(jù)、及表單查詢列表模板以及列表頁(yè)的樣式;表單腳本邏輯介入點(diǎn)腳本配置,邏輯腳本介入點(diǎn)包括:數(shù)據(jù)保存前、數(shù)據(jù)保存后及數(shù)據(jù)發(fā)布腳本。前述數(shù)據(jù)代理方式為:將表單數(shù)據(jù)傳遞給代理接口,同時(shí)傳遞表單ID;然后,代理接口根據(jù)ID加載對(duì)應(yīng)的表單配置,根據(jù)存儲(chǔ)方式的將數(shù)據(jù)存儲(chǔ)到對(duì)應(yīng)的位置;之后,根據(jù)表單配置分別從不同的存儲(chǔ)介質(zhì)查詢表單數(shù)據(jù),然后將數(shù)據(jù)合并,并返回表單數(shù)據(jù)。前述方法中:表單數(shù)據(jù)以類實(shí)現(xiàn)的哈希表的方式傳遞給代理接口;然后,代理接口解析表單配置,并掃描哈希表的特定鍵key,根據(jù)特定鍵key查找表單配置中表單的存儲(chǔ)方式;之后,并以哈希表的方式返回表單數(shù)據(jù)。前述步驟三的具體方法為:步驟1:通過系統(tǒng)提供的表單視圖頁(yè)面,同時(shí)將所要請(qǐng)求的表單ID以及要請(qǐng)求的表單數(shù)據(jù)ID以參數(shù)的方式提交到服務(wù)器,服務(wù)器端接受表單ID參數(shù),并根據(jù)表單ID加載表單配置數(shù)據(jù);步驟2:系統(tǒng)根據(jù)步驟1加載的數(shù)據(jù),獲取表單視圖的模板;步驟3:系統(tǒng)根據(jù)提交的表單數(shù)據(jù)ID參數(shù),如果數(shù)據(jù)ID等于零,則為新增數(shù)據(jù)直接轉(zhuǎn)到步驟5,反之則為修改數(shù)據(jù)轉(zhuǎn)到步驟4;步驟:4:根據(jù)步驟1中加載的表單數(shù)據(jù),獲取表單的默認(rèn)值配置,并將默認(rèn)值傳遞給表單視圖模板;步驟5:根據(jù)數(shù)據(jù)ID,加載表單數(shù)據(jù)并將表單數(shù)據(jù)傳遞給表單視圖模板;步驟6:通過模板引擎解析表單模板,得到表單的HTML內(nèi)容;步驟7:將步驟6中所產(chǎn)生的HTML內(nèi)容輸入到web頁(yè)面上完成表單視圖的渲染工作。前述步驟2采用的是FreeMarker模板。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn):1、本發(fā)明自定義表單系統(tǒng)通過自定義腳本邏輯模塊,可以輕易實(shí)現(xiàn)在用戶管理的過程中對(duì)自定義邏輯的植入,以滿足復(fù)雜多變的業(yè)務(wù)邏輯定制。2、本發(fā)明自定義表單系統(tǒng)通過數(shù)據(jù)代理模塊實(shí)現(xiàn)數(shù)據(jù)儲(chǔ)存結(jié)構(gòu)的自定義,可以輕易實(shí)現(xiàn)數(shù)據(jù)的分散存儲(chǔ),而不增加數(shù)據(jù)查詢存儲(chǔ)的復(fù)雜度,可以很容易的解決系統(tǒng)的數(shù)據(jù)訪問瓶頸問題。附圖說明圖1現(xiàn)有技術(shù)表單的描述及解析方案示意圖。圖2本發(fā)明系統(tǒng)結(jié)構(gòu)劃分示意圖。圖3本發(fā)明表單管理界面渲染流程圖。圖4本發(fā)明表單查詢渲染過程流程圖。圖5為自定義擴(kuò)展邏輯腳本執(zhí)行流程圖。圖6本發(fā)明數(shù)據(jù)代理層實(shí)現(xiàn)修改數(shù)據(jù)的查詢的流程圖。圖7本發(fā)明數(shù)據(jù)代理層實(shí)現(xiàn)表單數(shù)據(jù)的查詢的流程圖。具體實(shí)施方式針對(duì)現(xiàn)有狀況本發(fā)明在表單處理的過程中通過自定義的腳本來(lái)完成表單系統(tǒng)的邏輯擴(kuò)展,從而提高表單的靈活性,而不需要對(duì)系統(tǒng)進(jìn)行擴(kuò)展,來(lái)完成表單的定制開發(fā),減少開發(fā)成本,通過擴(kuò)展表單描述定義,增加數(shù)據(jù)訪問代理層,完成數(shù)據(jù)多元化存儲(chǔ)需求,數(shù)據(jù)可以根據(jù)需求存儲(chǔ)到數(shù)據(jù)庫(kù),nosql,磁盤文件,以及上述三種方式的混合,通過數(shù)據(jù)訪問代理,擴(kuò)展邏輯腳本可以透明訪問數(shù)據(jù)而不需要關(guān)心數(shù)據(jù)存儲(chǔ)方式差異。本發(fā)明中方法中將系統(tǒng)結(jié)構(gòu)劃分如圖2所示,包含:1、表單描述信息配置模塊;2、表單解析渲染模塊;3、執(zhí)行中要用到的自定義邏輯腳本執(zhí)行引擎;4、數(shù)據(jù)訪問代理模塊。主要改進(jìn)是在現(xiàn)有表單描述信息配置模塊基礎(chǔ)上增加數(shù)據(jù)存儲(chǔ)方式的自定義部分,利用本領(lǐng)域其它技術(shù)中的數(shù)據(jù)訪問代理模塊來(lái)完成這個(gè)自定義部分。一、表單描述信息配置模塊表單系統(tǒng)通過提供給用戶的表單定制向?qū)Чぞ?,表單向?qū)Чぞ咛峁﹚eb表單視圖,用戶通過web界面錄入管理表單的描述信息。用戶填寫完web表單后,提交表單到服務(wù)器,服務(wù)器解析獲取表單配置并保存。具體可以將html中的表單提交給統(tǒng)一的Action,Action收集表單數(shù)據(jù)傳遞數(shù)據(jù)給數(shù)據(jù)代理,數(shù)據(jù)代理加載表單配置根據(jù)配置存儲(chǔ)數(shù)據(jù)。表單描述信息包括:1、表單的字段定義,字段類型,字段長(zhǎng)度,字段名稱,默認(rèn)值,索引方式,字段的存儲(chǔ)方式。2、表單管理界面的定義,表單管理界面模板,表單采用的控件,表單控件的描述信息,表單控件對(duì)應(yīng)表單存儲(chǔ)字段,表單控件的樣式,表單控件的高度,寬度,默認(rèn)值,及數(shù)據(jù)合法性校驗(yàn)的正則表達(dá)式,表單控件的數(shù)據(jù)源,及表單控件的擴(kuò)展配置。3.表單數(shù)據(jù)查詢界面描述,數(shù)據(jù)包括,用哪些字段檢索,查詢字段條件數(shù)據(jù)采用的輸入控件,查詢結(jié)果返回哪些字段的數(shù)據(jù),及表單查詢列表模板,以及列表頁(yè)的樣式等。4.表單腳本邏輯介入點(diǎn)腳本配置,邏輯腳本介入點(diǎn)包括,數(shù)據(jù)保存前,數(shù)據(jù)保存后,數(shù)據(jù)發(fā)布腳本。即:在現(xiàn)有表單描述信息中增加:數(shù)據(jù)索引方式、字段的存儲(chǔ)方式及表單控件對(duì)應(yīng)表單存儲(chǔ)字段的描述,以實(shí)現(xiàn)透明訪問數(shù)據(jù)而不需要關(guān)心數(shù)據(jù)存儲(chǔ)方式差異的效果。二、表單解析渲染模塊系統(tǒng)根據(jù)表單配置模塊所保存在服務(wù)器端的表單配置數(shù)據(jù)在表單運(yùn)行環(huán)節(jié)加載配置,根據(jù)配置生成提供給用戶的數(shù)據(jù)管理和查詢界面,表單管理界面渲染流程圖如圖3所示。步驟1:用戶通過系統(tǒng)提供的表單視圖頁(yè)面,同時(shí)將所要請(qǐng)求的表單ID以及要請(qǐng)求的表單數(shù)據(jù)ID以參數(shù)的方式提交到服務(wù)器,服務(wù)器端接受表單ID參數(shù),并根據(jù)表單ID加載模塊1所產(chǎn)生數(shù)據(jù)。步驟2:系統(tǒng)根據(jù)步驟1加載的數(shù)據(jù),獲取表單視圖的模板,該模板通常使用已有的模板技術(shù)的模板文件來(lái)處理,本方案采用的是FreeMarker模板來(lái)解決問題,以此類推技術(shù)人員可以使用其他模板方式來(lái)完成模板的解析工作。步驟3:系統(tǒng)根據(jù)提交的表單數(shù)據(jù)ID參數(shù),如果數(shù)據(jù)ID等于零則為新增數(shù)據(jù)直接轉(zhuǎn)到步驟5,反之則為修改數(shù)據(jù)轉(zhuǎn)到步驟4。步驟:4:根據(jù)步驟1中加載的表單數(shù)據(jù),獲取表單的默認(rèn)值配置,并將默認(rèn)值傳遞給表單視圖模板。步驟5:根據(jù)數(shù)據(jù)ID,加載表單數(shù)據(jù)并將表單數(shù)據(jù)傳遞給表單視圖模板。步驟6:通過FreeMarker模板引擎解析表單模板,得到表單的HTML內(nèi)容。步驟7:將步驟6中所產(chǎn)生的HTML內(nèi)容輸入到web頁(yè)面上完成表單視圖的渲染工作。圖4為本發(fā)明表單查詢渲染過程流程圖。腳本引擎:腳本是使用一種特定的描述性語(yǔ)言,依據(jù)一定的格式編寫的可執(zhí)行文件,又稱作宏或批處理文件。腳本引擎對(duì)腳本進(jìn)行編譯和執(zhí)行。腳本引擎通常用于嵌入到編譯型應(yīng)用程序中,用于執(zhí)行擴(kuò)展的邏輯腳本,來(lái)擴(kuò)充程序的功能,例如EXCEL軟件中的VBA腳本是由EXCEL中嵌入的VBA腳本引擎來(lái)執(zhí)行的。三、自定義邏輯腳本執(zhí)行引擎模塊用戶通過管理和查詢界面管理查詢數(shù)據(jù),在用戶管理數(shù)據(jù)過程中,保存數(shù)據(jù)時(shí)系統(tǒng)會(huì)將需要保存的數(shù)據(jù)以上下文環(huán)境變量的方式傳遞到腳本引擎,腳本引擎加載用戶自定義的數(shù)據(jù)保存前腳本,對(duì)傳遞的數(shù)據(jù)進(jìn)行加工,加工后的數(shù)據(jù)通過腳本引擎上下文變量的方式回傳,完成自定義保存前腳本的處理過程,系統(tǒng)接收回傳數(shù)據(jù)后調(diào)用數(shù)據(jù)代理保存數(shù)據(jù),保存數(shù)據(jù)后將保存數(shù)據(jù)的結(jié)果,以及數(shù)據(jù)本身傳遞給腳本引擎,腳本加載保存后腳本,運(yùn)行保存后腳本邏輯代碼,將結(jié)果返回給程序,然后同理調(diào)用發(fā)布腳本,完成發(fā)布邏輯的執(zhí)行。步驟1:表單渲染模塊渲染的表單管理界面,系統(tǒng)用戶對(duì)表單數(shù)據(jù)輸入或修改,完畢后提交表單。步驟2:由步驟1用戶提交的數(shù)據(jù)以POST的方式提交到服務(wù)器,服務(wù)器端獲取POST數(shù)據(jù),將post過來(lái)的數(shù)據(jù)放在HashMap中以鍵值對(duì)的方式傳遞給腳本引擎。步驟3:加載表單定義配置里的保存前腳本,腳本引擎執(zhí)行保存前腳本,步驟2中的數(shù)據(jù)以環(huán)境變量的方式傳遞給保存前腳本。步驟4:從腳本引擎獲取保存前腳本執(zhí)行后的環(huán)境變量集合,獲取腳本變量集合中特定鍵key為verify的變量值(VERIFY()宏,這個(gè)宏允許將程序代碼放在布爾表達(dá)式里。這個(gè)宏通常用來(lái)檢查WindowsAPI的返回值)。步驟5:檢查verify變量的值,如果為TRUE轉(zhuǎn)到步驟7如果為FASLE轉(zhuǎn)到步驟6(True在編程語(yǔ)言中代表邏輯值:真,與邏輯值False“假”意義相反)。步驟6:從步驟4中獲取的腳本變量集合中,獲取key為msg的變量值,并將該變量值作為信息輸出到用戶頁(yè)面,然后完成整個(gè)過程。步驟7:從步驟4中獲取的腳本變量集合中,獲取key為data的變量數(shù)據(jù),該數(shù)據(jù)為鍵值對(duì)集合數(shù)據(jù),從data數(shù)據(jù)中獲取key為id的變量。步驟8:檢查id值是否為0,是0則執(zhí)行步驟9,否則執(zhí)行步驟10。步驟9:將post數(shù)據(jù)插入到存儲(chǔ)設(shè)備獲取id的自增長(zhǎng)值,將值改寫到data中key為id的變量中。步驟10:修改數(shù)據(jù),修改該id的存儲(chǔ)記錄。步驟11:加載表單定義配置里的保存后腳本,腳本引擎執(zhí)行保存后腳本,將步驟4中獲取的環(huán)境變量傳遞給保存后前腳本。步驟12:獲取步驟11腳本運(yùn)行后腳本環(huán)境變量集合,加載發(fā)布腳本,腳本引擎執(zhí)行發(fā)布腳本,將獲取的環(huán)境變量傳遞給發(fā)布前腳本。步驟13:獲取步驟12腳本執(zhí)行后腳本引擎的環(huán)境變量,獲取環(huán)境變量中key為msg的值,將msg的信息輸出到用戶頁(yè)面,整個(gè)過程完成。HashMap:基于哈希表的Map接口的實(shí)現(xiàn)。此實(shí)現(xiàn)提供所有可選的映射操作,并允許使用null值和null鍵。(除了非同步和允許使用null之外,HashMap類與Hashtable大致相同。)此類不保證映射的順序,特別是它不保證該順序恒久不變。此實(shí)現(xiàn)假定哈希函數(shù)將元素適當(dāng)?shù)胤植荚诟魍爸g,可為基本操作(get和put)提供穩(wěn)定的性能。迭代collection視圖所需的時(shí)間與HashMap實(shí)例的“容量”(桶的數(shù)量)及其大?。ㄦI-值映射關(guān)系數(shù))成比例。所以,如果迭代性能很重要,則不要將初始容量設(shè)置得太高(或?qū)⒓虞d因子設(shè)置得太低)。四、數(shù)據(jù)訪問代理模塊數(shù)據(jù)代理實(shí)現(xiàn)了表單數(shù)據(jù)的查詢和增加修改的接口,如圖6、7:1.用戶提交數(shù)據(jù)調(diào)用數(shù)據(jù)添加接口,用戶將表單數(shù)據(jù)hashtable方式傳遞給代理接口,同時(shí)傳遞表單ID。2.代理接口根據(jù)ID加載對(duì)應(yīng)的表單配置,代理接口解析表單配置,并掃描hashtable的key,根據(jù)key查找表單配置中表單的存儲(chǔ)方式,根據(jù)存儲(chǔ)方式的將數(shù)據(jù)存儲(chǔ)到對(duì)應(yīng)的位置。3.數(shù)據(jù)查詢的方式和數(shù)據(jù)添加修改類似,根據(jù)表單配置分別從不同的存儲(chǔ)介質(zhì)查詢表單數(shù)據(jù),然后將數(shù)據(jù)合并,以hashtable的方式返回表單數(shù)據(jù)。代理的概念是:假定文件位于文件服務(wù)器上,想讀、寫而整個(gè)或部分地運(yùn)輸這些文件,支持大多數(shù)現(xiàn)代文件服務(wù)器的關(guān)鍵技術(shù)是虛擬文件存儲(chǔ)器,這是一個(gè)抽象的文件服務(wù)器。虛擬文件存儲(chǔ)給訪問端提供一個(gè)標(biāo)準(zhǔn)化的接口和一套可執(zhí)行的標(biāo)準(zhǔn)化操作。隱去了實(shí)際文件服務(wù)器的不同內(nèi)部接口,使訪問端只看到虛擬文件存儲(chǔ)器的標(biāo)準(zhǔn)接口,訪問和運(yùn)輸遠(yuǎn)地文件的應(yīng)用程序,有可能不必知道各種各樣不兼容的文件服務(wù)器的所有細(xì)節(jié)。具體本發(fā)明的該方式通過統(tǒng)一的訪問接口實(shí)現(xiàn)數(shù)據(jù)訪問,數(shù)據(jù)的存儲(chǔ)差異有數(shù)據(jù)代理完成,屏蔽了數(shù)據(jù)存儲(chǔ)組合位置的復(fù)雜性。1.同類系統(tǒng)中,大多采取單一方式的數(shù)據(jù)存儲(chǔ)方式,只將數(shù)據(jù)存儲(chǔ)在nosql,磁盤文件,數(shù)據(jù)庫(kù)三者其中一種。2.同類系統(tǒng)中一般也會(huì)抽象出一個(gè)數(shù)據(jù)訪問層,該訪問層也可以稱為數(shù)據(jù)代理層,不過該方式和我們的方式有著顯著地不同。a.該方式的數(shù)據(jù)訪問層是硬編碼的方式,也就是說只要程序發(fā)布該訪問層是固定的不會(huì)隨著數(shù)據(jù)結(jié)構(gòu)的變化而調(diào)整,需要重新修改程序代碼,而這種方式是比較低效且危險(xiǎn)的。b.該方式的數(shù)據(jù)存儲(chǔ)位置也是相當(dāng)單一的,對(duì)于同一個(gè)表單或者一個(gè)抽象模型對(duì)象的數(shù)據(jù)只存儲(chǔ)在一種存儲(chǔ)介質(zhì)中。該系統(tǒng)需要克服的難點(diǎn)1.需要有一個(gè)能夠描述表單的配置,該配置能夠清楚的描述表單各元素的數(shù)據(jù)類型,存儲(chǔ)方式,長(zhǎng)度,以及校驗(yàn)規(guī)則2.在訪問和存儲(chǔ)表單數(shù)據(jù)過程中需要加載并解析表單描述文件,根據(jù)表單描述文件從不同的存儲(chǔ)介質(zhì)查詢或修改數(shù)據(jù)。代理設(shè)置的具體實(shí)例:將html中的表單提交給數(shù)據(jù)處理Action,用html中form的Action表示html的表單這樣寫:<formname=form1action="xform!saveData.jhtml"method=post><INPUTid=text1name="field1"value="1"><INPUTid=text2name="field2"value="2"><!--可以在加若干個(gè)input!--><INPUTid=submit1type=submitvalue=Submitname=submit1></form>表單基礎(chǔ)配置信息:表單基礎(chǔ)信息中描述各對(duì)應(yīng)字段的存儲(chǔ)方式,表單存儲(chǔ)方式描述如下(只列出了便于理解的表單的存儲(chǔ)方式信息)<formid=1name=”frm_1”><fields><field><name>field1</name><type>int</type><saveType>db</saveType></field><field><name>field2</name><type>int</type><saveType>nosql</saveType></field></fields></form>代理存儲(chǔ)數(shù)據(jù)的處理方式1.接收表單數(shù)據(jù)2.根據(jù)表單id加載表單配置3.根據(jù)配置采取不同的存儲(chǔ)方式,偽代碼如下FormConfigconf=FormConfig.loadConfig(1)for(Stringkey:data.keySet()){//根據(jù)表單的類型來(lái)采取對(duì)應(yīng)的存儲(chǔ)方式switch(conf.get(key).getSaveType())casesaveType.DB:Proxy.saveToDb(data.get(key))Break;casesaveType.NOSQL:Proxy.saveToDb(data.get(key))…..}與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn):1、本發(fā)明自定義表單系統(tǒng)通過自定義腳本邏輯模塊,可以輕易實(shí)現(xiàn)在用戶管理的過程中對(duì)自定義邏輯的植入,以滿足復(fù)雜多變的業(yè)務(wù)邏輯定制。2、本發(fā)明自定義表單系統(tǒng)通過數(shù)據(jù)代理模塊實(shí)現(xiàn)數(shù)據(jù)儲(chǔ)存結(jié)構(gòu)的自定義,可以輕易實(shí)現(xiàn)數(shù)據(jù)的分散存儲(chǔ),而不增加數(shù)據(jù)查詢存儲(chǔ)的復(fù)雜度,可以很容易的解決系統(tǒng)的數(shù)據(jù)訪問瓶頸問題。當(dāng)前第1頁(yè)1 2 3