李香云,葛 華
(1.安徽科技學(xué)院計(jì)算機(jī)系,安徽 鳳陽233100;2.安徽科技學(xué)院計(jì)算中心,安徽 鳳陽233100)
數(shù)據(jù)窗口(DataWindow)是Sybase公司PowerBuiler數(shù)據(jù)庫前臺(tái)開發(fā)軟件的一項(xiàng)技術(shù),它以強(qiáng)大的數(shù)據(jù)窗口技術(shù)和數(shù)據(jù)庫訪問能力而倍受廣大程序員青睞,可以提高數(shù)據(jù)庫系統(tǒng)的開發(fā)效率,使用DataWindow技術(shù)開發(fā)軟件可以提高5~10倍的開發(fā)效率,但這一項(xiàng)技術(shù)主要運(yùn)用于用戶單機(jī)或C/S軟件開發(fā)系統(tǒng)中。隨著計(jì)算機(jī)技術(shù)和軟件開發(fā)技術(shù)的發(fā)展,越來越多的單機(jī)或C/S模式軟件系統(tǒng)會(huì)被B/S模式所代替,目前除了特殊要求的軟件使用的是C/S模式,其他都采用B/S模式結(jié)構(gòu)開發(fā)軟件產(chǎn)品,并且支持B/S開發(fā)的環(huán)境和工具較多,如ASP、ASP。NET、PHP、JSP/J2EE、Perl、Flex等,它們各自都有其相應(yīng)的優(yōu)點(diǎn)、缺點(diǎn)及應(yīng)用場合,但這些開發(fā)工具并沒有提供DataWindow技術(shù)實(shí)現(xiàn)B/S開發(fā)。為提高B/S模式軟件系統(tǒng)開發(fā)效率,需要一種界面快速生成工具實(shí)現(xiàn)網(wǎng)頁的動(dòng)態(tài)生成、動(dòng)態(tài)編輯、動(dòng)態(tài)修改的軟件開發(fā)平臺(tái)。
J2EE DataWindow(下稱JDW)技術(shù)是J2EE體系下的Web數(shù)據(jù)表現(xiàn)與處理的組件。JDW將Web數(shù)據(jù)處理封裝為:Model、Data、Events三個(gè)層面。其中, “Model”定義數(shù)據(jù)的來源和展現(xiàn)方式并以RDF文檔形式存放在服務(wù)器,可供任何Web頁面調(diào)用;“Data”是指按照Model中定義的數(shù)據(jù)來源從數(shù)據(jù)庫中獲取相關(guān)數(shù)據(jù);“Event”是指JDW的數(shù)據(jù)視圖以及與數(shù)據(jù)視圖相關(guān)的事件、屬性和方法。其JDW體系結(jié)構(gòu),如圖1所示,在該體系結(jié)構(gòu)基礎(chǔ)上構(gòu)建J2EE DataWindow應(yīng)用程序接口(API),JDW API包含服務(wù)器和客戶端兩種接口方式,在此體系結(jié)構(gòu)中采用服務(wù)器事件驅(qū)動(dòng)和客戶端事件驅(qū)動(dòng)實(shí)現(xiàn)服務(wù)器和客戶端之間的交互,事件驅(qū)動(dòng)方式可以提高系統(tǒng)的效率。
Java技術(shù)日益成熟,很容易對(duì)數(shù)據(jù)庫操縱及實(shí)現(xiàn)XML、DHtml、Ajax、Java反射機(jī)制及事件驅(qū)動(dòng)技術(shù)。JDW主要是利用目前主流的Java技術(shù)實(shí)現(xiàn)基于J2EE平臺(tái)的數(shù)據(jù)窗口。目前對(duì)于DatdaWindow技術(shù)在國內(nèi)有DJFocus、Web Datawindow ActiveX。DJFocus所開發(fā)的 Web項(xiàng)目封裝性更好、可維護(hù)性更高,代碼量減少80%以上,開發(fā)效率可提高5到10倍,但其會(huì)在客戶端產(chǎn)生大量的XML文件。Web Datawindow ActiveX需要在客戶端下載并安裝一個(gè)2MB控件才可以使用,對(duì)計(jì)算機(jī)操作人員的要求較高。在JDW中采用事件驅(qū)動(dòng)模式實(shí)現(xiàn)對(duì)客戶端數(shù)據(jù)和服務(wù)器端進(jìn)行信息數(shù)據(jù)動(dòng)態(tài)傳遞。
圖1 JDW體系結(jié)構(gòu)
在JDW中事件驅(qū)動(dòng)分為客戶端事件驅(qū)動(dòng)和服務(wù)器端事件驅(qū)動(dòng)。
客戶端事件驅(qū)動(dòng)指的是用戶使用瀏覽器時(shí)按下的鍵盤和點(diǎn)擊的鼠標(biāo)都是以事件消息形式發(fā)送給客戶端事件收集器,事件收集器收集這些事件消息,并將這些事件分發(fā)到目標(biāo)對(duì)象中。JDW客戶端事件驅(qū)動(dòng)主要是負(fù)責(zé)攔截客戶端中相關(guān)消息,并將消息進(jìn)行二次封裝發(fā)送給服務(wù)器端事件處理程序。
服務(wù)器端事件驅(qū)動(dòng)主要接受客戶端發(fā)送過來的事件消息,并將該消息分發(fā)到目標(biāo)對(duì)象中,目標(biāo)對(duì)象再對(duì)其進(jìn)行處理,最后返回一個(gè)結(jié)果以事件形式返還給客戶端,數(shù)據(jù)處理流程如圖2所示。
資 源 描 述 框 架[1-3](Resource Description Framework,RDF)是一種描述有關(guān) Web資源的格式化語句集合的模型。在World Wide Web Consortium(W3C)開發(fā)XML形式的下一代標(biāo)記技術(shù)的同時(shí),它同樣開發(fā)了下一代格式化描述Web資源的技術(shù)。RDF提供一種描述有關(guān)Web資源的語句集合的模型,這些語句在概念上分為三部分:每條語句包含一個(gè)主題(一個(gè)Uniform Resource Identifier(URI));一個(gè)謂詞(也是一個(gè)URI);還包含一個(gè)對(duì)象(一個(gè)URI或字母數(shù)值)。RDF作為一個(gè)建模系統(tǒng),該系統(tǒng)具有解決數(shù)據(jù)交換[4,5]的一些功能。本文中的資源平臺(tái)之間的資源共享主要應(yīng)用的就是 “資源描述框架”的這一特性。
RDF以如圖3所示的方式來描述一個(gè)特定的資源:
由圖2可知,一個(gè)資源描述過程可以看做一個(gè)基本的三元組,這個(gè)三元組由主語、謂詞和對(duì)象組成,將上述描述看做如下過程,即:資源subject具有一個(gè)值為object的屬性predicate。
圖2 JDW交互模型數(shù)據(jù)流程
圖3 資源描述方法
在JDW中采用主動(dòng)數(shù)據(jù)模型(active data model,ADM),其基本單元是實(shí)體或?qū)ο?。每個(gè)對(duì)象都有屬性,對(duì)象通過自身的屬性與其他對(duì)象產(chǎn)生關(guān)聯(lián),或?qū)ο蟊旧砼c其他對(duì)象關(guān)聯(lián)。訪問對(duì)象只能通過明確的事件來進(jìn)行,主動(dòng)數(shù)據(jù)模型通過事件響應(yīng)來體現(xiàn)主動(dòng)。事件也是一種對(duì)象,它是對(duì)象之間交互的紐帶。通過它,主動(dòng)數(shù)據(jù)模型可以動(dòng)態(tài)建模及數(shù)據(jù)的主動(dòng)更新,在實(shí)際系統(tǒng)中一般都是復(fù)合型事件。因此在ADM中采用層次結(jié)構(gòu),子類型中的成員關(guān)系用屬性上的謂詞來定義,屬性依賴于屬性類型的約束。形成過程層次和函數(shù)鏈。過程事件對(duì)應(yīng)應(yīng)用中的處理單元,函數(shù)鏈用于表示事件層次。該模型包括實(shí)體關(guān)聯(lián)模型和AFEM事件模型,期中語義實(shí)體關(guān)聯(lián)模型是一種圖模型,主要描述數(shù)據(jù)的組織及表達(dá)。對(duì)語義實(shí)體數(shù)據(jù)進(jìn)行任何操作,都會(huì)產(chǎn)生一些事件。對(duì)事件的響應(yīng)會(huì)引發(fā)在數(shù)據(jù)圖上進(jìn)行新的操作。
在該模型中,數(shù)據(jù)建模主要以事件作為載體,因此可以定義JDW數(shù)據(jù)模型事件E(Engine ID,E-vent ID,Source,Location,Times stamp,Group,Priority,Object,CS)九元組構(gòu)成,Engine ID為事件處理引擎ID,每個(gè)事件處理引擎都會(huì)有一個(gè)唯一的引擎標(biāo)志;EventID是事件唯一標(biāo)志;Source是事件源;Location是事件發(fā)生地;Timestamp是事件發(fā)生時(shí)間;Group為事件交互群元組,該屬性在客戶端有效;Priority為事件的優(yōu)先級(jí);Object為事件發(fā)生作用時(shí)的對(duì)象;CS為事件發(fā)生在服務(wù)器端還是在客戶端標(biāo)志。
采用本模型設(shè)計(jì)數(shù)據(jù)窗口能夠快速構(gòu)建和部署數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序,輕松地集成復(fù)雜的業(yè)務(wù)規(guī)程,簡化了企業(yè)級(jí)數(shù)據(jù)應(yīng)用系統(tǒng)的部署工作,降低了開發(fā)成本,縮短了開發(fā)周期,僅需極少的編碼工作,就可輕松構(gòu)建B/S架構(gòu)的數(shù)據(jù)庫應(yīng)用系統(tǒng),提高了基于B/S架構(gòu)的網(wǎng)絡(luò)系統(tǒng)的開發(fā)效率。在窗口模型中采用XML對(duì)模型進(jìn)行描述,簡化編碼設(shè)計(jì)和維護(hù)難度。并在模型中采用Ajax處理實(shí)現(xiàn)數(shù)據(jù)局部更新[6-8],并在測(cè)試系統(tǒng)中獲得較好的運(yùn)行響應(yīng)時(shí)間、同時(shí)編程效率也得到大大提高、頁面響應(yīng)速度將提高許多、性能比較穩(wěn)定。
[1]Klyne G,Carroll JJ.Resource Description Framework(RDF):Concepts and Abstract Syntax [EB/OL].http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/.
[2]Turney PD.Coherent Keyphrase Extraction via Web Mining[A].Gottlob G,Walsh T.Proceedings of International Joint Conference on Artificial Intelligence[C].Mexico:Acapulco,2002:434-439.
[3]Brickley D,Guha RV.RDF Vocabulary Description Language 1.0:RDF Schema [EB/OL].http://www.w3.org/TR/2004/REC-rdf-schema-20040210/.
[4]Turney PD.Learning algorithms for key phrase Extraction [J].Inform Retr,2000,2(04):303-336.
[5]de Laborda CP,Conrad S.Database to Semantic Web MappingUsing RDF Query Languages [A].Embley DW,OlivéA,Ram S.Proc.of the 25th International Conference on Conceptual Modeling [C].Heidelberg:Springer Verlag,2006:241-254.
[6]柯自聰.Ajax開發(fā)概念與案例 [M].北京:電子工業(yè)出版社,2006:1-29.
[7]王東,孫彬.基于Ajax的DataWindow框架分析 [J].計(jì)算機(jī)工程,2008:34-7.
[8]孫彬,王東.構(gòu)造異步Ajax DataWindow的技術(shù)探究 [J].電腦開發(fā)與應(yīng)用,2008:15-17,19.