專利名稱:一種基于ria的客戶端框架結(jié)構(gòu)及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種客戶端框架結(jié)構(gòu)及其實(shí)現(xiàn)方法,更具體地說(shuō)是指一種基于RIA的客戶端框架結(jié)構(gòu)及其實(shí)現(xiàn)方法。
背景技術(shù):
富互聯(lián)網(wǎng)應(yīng)用程序(RIA)技術(shù)能夠?qū)鹘y(tǒng)桌面應(yīng)用的強(qiáng)大功能特性和Web應(yīng)用的部署靈活性和低成本性結(jié)合起來(lái),具有良好的表現(xiàn)能力和交互能力,更能夠滿足用戶直觀和具交互性的在線體驗(yàn)。RIA主流技術(shù)基于Adobe Flash、Microsoft SilverLight等解決方案,在服務(wù)器端提供相應(yīng)的開發(fā)框架(如FLEX等)、在客戶端以插件或播放器方式實(shí)現(xiàn)RIA支持?,F(xiàn)有RIA技術(shù)沒有提供客戶端框架,現(xiàn)有基于JavaScript的客戶端框架(如ExtJS)又和RIA技術(shù)沒 有關(guān)聯(lián),因而RIA客戶端框架是ー個(gè)空白。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺陷,提供一種基于RIA的客戶端框架結(jié)構(gòu)及其實(shí)現(xiàn)方法。為實(shí)現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案一種基于RIA的客戶端框架結(jié)構(gòu),該框架包括動(dòng)態(tài)腳本和程序構(gòu)件,所述的動(dòng)態(tài)腳本用于存儲(chǔ)業(yè)務(wù)邏輯模塊返回的結(jié)果,同時(shí)為程序構(gòu)件提供相關(guān)數(shù)據(jù),是業(yè)務(wù)邏輯模塊和程序構(gòu)件之間的接ロ ;所述的程序構(gòu)件包括實(shí)體應(yīng)用模塊、內(nèi)容加載器、腳本解析器、對(duì)象發(fā)生器、渲染引擎模塊、命令執(zhí)行器和對(duì)象庫(kù);程序構(gòu)件根據(jù)動(dòng)態(tài)腳本動(dòng)態(tài)生成圖形界面。其中的業(yè)務(wù)邏輯模塊指的是系統(tǒng)架構(gòu)中的業(yè)務(wù)邏輯層(系統(tǒng)架構(gòu)包括三層,分別為表示層,業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層)。其進(jìn)ー步技術(shù)方案為所述動(dòng)態(tài)腳本自定義的內(nèi)容包括基本語(yǔ)法、程序界面布局、控件、命令和圖標(biāo);所述的命令執(zhí)行器用于響應(yīng)用戶相應(yīng)的操作,并執(zhí)行相關(guān)的命令;所述的對(duì)象庫(kù)是根據(jù)RIA技術(shù)預(yù)制的Π集。其進(jìn)ー步技術(shù)方案為所述的實(shí)體應(yīng)用模塊是根據(jù)用戶需求開發(fā)的應(yīng)用模塊;所述的渲染引擎模塊包括布局管理器和界面渲染器。其進(jìn)ー步技術(shù)方案為所述的內(nèi)容加載器用于加載動(dòng)態(tài)腳本;所述的腳本解析器用于解析動(dòng)態(tài)腳本,并將相關(guān)數(shù)據(jù)發(fā)給對(duì)象發(fā)生器。其進(jìn)ー步技術(shù)方案為所述的對(duì)象發(fā)生器是根據(jù)腳本解析器發(fā)來(lái)的數(shù)據(jù)動(dòng)態(tài)生成相應(yīng)的Web UI部件,并將該部件傳送給渲染引擎。其進(jìn)ー步技術(shù)方案為所述的渲染引擎模塊將對(duì)象發(fā)生器傳送過來(lái)的Web UI部件和對(duì)象庫(kù)的對(duì)象渲染成圖形化界面。一種基于RIA的客戶端框架結(jié)構(gòu)的實(shí)現(xiàn)方法,包括以下步驟I)初始化實(shí)體應(yīng)用模塊在初始化過程中,框架根據(jù)配置文件對(duì)實(shí)體應(yīng)用模塊進(jìn)行初始化;2)內(nèi)容加載實(shí)體應(yīng)用模塊會(huì)調(diào)用內(nèi)容加載器加載動(dòng)態(tài)腳本,如果該命令有URL請(qǐng)求,則加載URL請(qǐng)求并傳給接ロ ;實(shí)體應(yīng)用模塊初始化時(shí),內(nèi)容加載器會(huì)從動(dòng)態(tài)腳本上加載引導(dǎo)頁(yè);3)腳本解析腳本解析器解析動(dòng)態(tài)腳本的樹形結(jié)構(gòu),根據(jù)具體需要調(diào)用內(nèi)容加載器加載動(dòng)態(tài)腳本,同時(shí)將解析的數(shù)據(jù)傳給對(duì)象發(fā)生器;實(shí)體應(yīng)用模塊初始化時(shí),腳本解析器主要用于解析引導(dǎo)頁(yè);4)對(duì)象創(chuàng)建對(duì)象發(fā)生器根據(jù)腳本解析器傳過來(lái)的數(shù)據(jù)創(chuàng)建對(duì)應(yīng)的對(duì)象,在實(shí)體應(yīng)用模塊初始化吋,對(duì)象發(fā)生器根據(jù)相關(guān)數(shù)據(jù)生成界面框架、窗體、自動(dòng)導(dǎo)航和頁(yè)面控件等內(nèi)容;5)布局管理渲染引擎模塊將對(duì)相關(guān)的對(duì)象進(jìn)行自動(dòng)排版; 6)界面渲染渲染引擎模塊加載資源文件和對(duì)象庫(kù)的對(duì)象并對(duì)相關(guān)數(shù)據(jù)進(jìn)行渲染;7)動(dòng)作和事件監(jiān)聽在完成實(shí)體應(yīng)用模塊初始化之后,會(huì)不斷對(duì)應(yīng)用實(shí)體進(jìn)行監(jiān)聽,以至能及時(shí)響應(yīng)用戶的操作;8)動(dòng)作響應(yīng)用戶對(duì)實(shí)體應(yīng)用模塊進(jìn)行操作時(shí),對(duì)該操作進(jìn)行合法性判斷;如果該操作不合法,將錯(cuò)誤信息返回給實(shí)體應(yīng)用模塊,否則調(diào)用相應(yīng)的處理函數(shù)進(jìn)行處理;9)命令執(zhí)行在執(zhí)行命令過程中,先判斷該命令的類型,判斷其參數(shù)是否有URL請(qǐng)求,如果該命令沒有URL請(qǐng)求,則調(diào)用腳本解析器對(duì)其進(jìn)行處理;如果有則通過接ロ將該請(qǐng)求傳給Web應(yīng)用進(jìn)行邏輯處理;當(dāng)Web應(yīng)用完成URL請(qǐng)求的處理后,將會(huì)動(dòng)態(tài)生成XML腳本并將其傳給框架,框架將調(diào)用內(nèi)容加載器、腳本解析器、對(duì)象發(fā)生器、渲染引擎模塊對(duì)處理結(jié)果進(jìn)行加載、解析、生成、渲染并顯示出來(lái);10)結(jié)束不斷重復(fù)執(zhí)行步驟2)到9),直至用戶退出為止。本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是本發(fā)明框架結(jié)構(gòu)以自定義的動(dòng)態(tài)腳本為接ロ,動(dòng)態(tài)生成各種UI控件(例如窗ロ、表格、滑標(biāo)、日期選擇器、選項(xiàng)卡、微調(diào)控制器和標(biāo)尺等),井根據(jù)系統(tǒng)的需求將UI控件輸出成文HTML、WML、swf文件,提高本框架的通用性和可重用性,從而提高企業(yè)的開發(fā)效率,減少企業(yè)開發(fā)成本。具體表現(xiàn)為I)本發(fā)明客戶端框架結(jié)構(gòu)通過XML腳本的解析實(shí)現(xiàn)應(yīng)用程序加載,使用戶可以以文本編程方式實(shí)現(xiàn)RIA應(yīng)用,而不是通過RIA工具一個(gè)ー個(gè)地設(shè)計(jì)制作;2)本發(fā)明客戶端框架結(jié)構(gòu)通過動(dòng)態(tài)加載自定義的RIA對(duì)象庫(kù),為用戶提供更個(gè)性化、更具適應(yīng)性的用戶界面;3)本發(fā)明客戶端框架結(jié)構(gòu)運(yùn)行于客戶端,不需要服務(wù)器端框架的支持,就能獲得動(dòng)態(tài)的應(yīng)用支持能力,可廣泛應(yīng)用于智能手機(jī)、平板電腦、嵌入式設(shè)備等客戶端;4)本發(fā)明客戶端框架結(jié)構(gòu)的可重用性,能夠提高軟件開發(fā)在表現(xiàn)層的開發(fā)效率;5)本發(fā)明客戶端框架結(jié)構(gòu)在RIA標(biāo)準(zhǔn)解決方案的基礎(chǔ)上,進(jìn)ー步提高了交互能力,滿足用戶的體驗(yàn)要求。下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)ー步描述。
圖I為本發(fā)明一種基于RIA的客戶端框架結(jié)構(gòu)具體實(shí)施例的方框結(jié)構(gòu)示意圖;圖2為本發(fā)明一種基于RIA的客戶端框架結(jié)構(gòu)的實(shí)現(xiàn)方法的具體實(shí)施例的方框流程不意圖;圖3為本發(fā)明另一具體實(shí)施例中的應(yīng)用A的方框示意圖ー;圖4為本發(fā)明另一具體實(shí)施例中的應(yīng)用A的方框示意圖ニ ;圖5為本發(fā)明具體實(shí)施例中的腳本解析器的方框結(jié)構(gòu)示意圖;圖6為本發(fā)明具體實(shí)施例中的腳本解析器對(duì)某一具體控件進(jìn)行解析之后的應(yīng)用空間的顯示示意圖。
具體實(shí)施方式
為了更充分理解本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)一歩介紹和說(shuō)明,但不局限于此。如圖I所示,本發(fā)明提供一種客戶端RIA應(yīng)用程序框架,該框架包括自定義的動(dòng)態(tài)腳本和程序構(gòu)件兩大部分,其中動(dòng)態(tài)腳本主要用于存儲(chǔ)業(yè)務(wù)邏輯模塊返回的結(jié)果,同時(shí)為程序構(gòu)件提供相關(guān)數(shù)據(jù),是業(yè)務(wù)邏輯模塊和程序構(gòu)件之間的接ロ。本框架中動(dòng)態(tài)腳本定義了動(dòng)態(tài)腳本的基本語(yǔ)法、程序界面布局、控件、命令和圖標(biāo)等內(nèi)容。程序構(gòu)件包括實(shí)體應(yīng)用模塊、內(nèi)容加載器、腳本解析器、對(duì)象發(fā)生器、渲染引擎模塊、命令執(zhí)行器和對(duì)象庫(kù),在本框架中程序構(gòu)件主要是根據(jù)動(dòng)態(tài)腳本動(dòng)態(tài)生成圖形界面。實(shí)體應(yīng)用模塊是根據(jù)用戶需求開發(fā)的應(yīng)用。 內(nèi)容加載器是主要用于加載動(dòng)態(tài)腳本。腳本解析器主要用于解析動(dòng)態(tài)腳本,并將相關(guān)數(shù)據(jù)發(fā)給對(duì)象發(fā)生器。對(duì)象發(fā)生器主要是根據(jù)腳本解析器發(fā)來(lái)的數(shù)據(jù)動(dòng)態(tài)生成相應(yīng)的Web UI部件,并將該部件傳送給渲染引擎模塊。渲染引擎模塊主要是將對(duì)象發(fā)生器傳送過來(lái)的Π部件和對(duì)象庫(kù)的對(duì)象渲染成圖形化界面。命令執(zhí)行器主要是響應(yīng)用戶相應(yīng)的操作,并執(zhí)行相關(guān)的命令。對(duì)象庫(kù)是根據(jù)RIA技術(shù)預(yù)制的UI集,提供了自定義的動(dòng)態(tài)腳本語(yǔ)法支持。本框架以自定義的動(dòng)態(tài)腳本為接ロ,動(dòng)態(tài)生成各種Π控件(例如窗ロ、表格、滑標(biāo)、日期選擇器、選項(xiàng)卡、微調(diào)控制器和標(biāo)尺等),井根據(jù)系統(tǒng)的需求將UI控件輸出成文HTML,WML,swf文件,提高本框架的通用性和可重用性,從而提高企業(yè)的開發(fā)效率,減少企業(yè)開發(fā)成本。本框架可以通過瀏覽器對(duì)其進(jìn)行訪問,也可以作為桌面應(yīng)用軟件的插件。如圖2所示,本發(fā)明框架結(jié)構(gòu)的實(shí)現(xiàn)方法的流程圖,其流程分為以下幾個(gè)部分I)初始化應(yīng)用實(shí)體在初始化過程中,框架根據(jù)配置文件對(duì)應(yīng)用實(shí)體進(jìn)行初始化。2)內(nèi)容加載應(yīng)用實(shí)體會(huì)調(diào)用內(nèi)容加載器加載動(dòng)態(tài)腳本,如果該命令有URL請(qǐng)求,則加載URL請(qǐng)求并傳給接ロ。應(yīng)用實(shí)體初始化時(shí),內(nèi)容加載器會(huì)從動(dòng)態(tài)腳本上加載引導(dǎo)頁(yè)。3)腳本解析腳本解析器解析動(dòng)態(tài)腳本的樹形結(jié)構(gòu),根據(jù)具體需要調(diào)用內(nèi)容加載器加載動(dòng)態(tài)腳本,同時(shí)將解析的數(shù)據(jù)傳給對(duì)象發(fā)生器。應(yīng)用實(shí)體初始化時(shí),腳本解析器主要用于解析引導(dǎo)頁(yè)。4)對(duì)象創(chuàng)建對(duì)象發(fā)生器主要是根據(jù)腳本解析器傳過來(lái)的數(shù)據(jù)創(chuàng)建對(duì)應(yīng)的對(duì)象,在應(yīng)用實(shí)體初始化時(shí),對(duì)象發(fā)生器根據(jù)相關(guān)數(shù)據(jù)生成界面框架、窗體、自動(dòng)導(dǎo)航和頁(yè)面控件等內(nèi)容。5)布局管理渲染引擎將對(duì)相關(guān)的對(duì)象進(jìn)行自動(dòng)排版。6)界面渲染渲染引擎加載資源文件和對(duì)象庫(kù)的對(duì)象并對(duì)相關(guān)數(shù)據(jù)進(jìn)行渲染。7)動(dòng)作和事件監(jiān)聽框架在完成應(yīng)用實(shí)體初始化之后,會(huì)不斷對(duì)應(yīng)用實(shí)體進(jìn)行監(jiān)聽,以至能及時(shí)響應(yīng)用戶的操作。
8)動(dòng)作響應(yīng)如果用戶對(duì)應(yīng)用實(shí)體進(jìn)行操作,框架就會(huì)對(duì)該操作進(jìn)行合法性判斷。如果該操作不合法,框架將錯(cuò)誤信息返回給應(yīng)用實(shí)體,否則調(diào)用相應(yīng)的處理函數(shù)進(jìn)行處理。9)命令執(zhí)行在執(zhí)行命令過程中,框架先判斷該命令的類型,判斷其參數(shù)是否有URL請(qǐng)求,如果該命令沒有URL請(qǐng)求,則調(diào)用腳本解析器對(duì)其進(jìn)行處理。如果有則通過接ロ將該請(qǐng)求傳給Web應(yīng)用進(jìn)行邏輯處理。當(dāng)Web應(yīng)用完成URL請(qǐng)求的處理后,將會(huì)動(dòng)態(tài)生成XML腳本并將其傳給框架,框架將調(diào)用內(nèi)容加載器、腳本解析器、對(duì)象發(fā)生器、渲染引擎對(duì)處理結(jié)果進(jìn)行加載、解析、生成、渲染并顯示出來(lái)。10)結(jié)束程序會(huì)不斷重復(fù)執(zhí)行步驟2)到9),直至用戶退出程序?yàn)橹?。下面以ー個(gè)更具體的實(shí)施例來(lái)說(shuō)明本實(shí)施例以ー個(gè)簡(jiǎn)單的應(yīng)用A來(lái)解析本框架的原理,以便于讀者理解。config.xml為本框架的配置文件(配置文件即為文中的動(dòng)態(tài)腳本),APP_A. xml為應(yīng)用A的配置文件,其中,config. xml內(nèi)容為<HD0S><ui type="APP"img="img/btn 001. png"caption="應(yīng)用 A"cmd="0PEN:B, gui/APPA. xmlV><ui type="SBG"img="bgs/screen_bg9. jpg"cmd="V></HD0S>而ΑΡΡ_Α· xml 的內(nèi)容為< H D O S title = "應(yīng)用 A "ico = " man" action = "gui/save.jsp"width="200"height="200"><tr><td w="l. 5">〈ui type="TEXT"CLR="00AA22"value="主題名稱"/〉</td><td w=//5. 5"><ui type="EDIT"name="uname"value=〃 " /><ui type="BUTTON"value="確定"cmd="CHECK FORM"/〉<ui type^BUTTON'alue="取消"cmd^CLOSE"/〉</td></tr></HD0S>其步驟如下I)框架初始化過程中,該框架會(huì)調(diào)用內(nèi)容加載器加載配置文件config. xml內(nèi)容傳給腳本解析器;
2)腳本解析器對(duì)config. xml內(nèi)容逐行解析。根據(jù)預(yù)先定義好的規(guī)則(規(guī)則可根據(jù)具體需求做相應(yīng)的改變,這里為了便于理解,以簡(jiǎn)單例子說(shuō)明,并不局限于本實(shí)施例),type為APP的控件為應(yīng)用控件,該應(yīng)用的圖標(biāo)為btn_001. png,標(biāo)題為應(yīng)用A,響應(yīng)的命令為OPENiB, gui/APP_A. xml ;而type為SBG的控件是指框架的背景圖片;3)腳本解析器在解析完config. xml文件之后,將相應(yīng)的數(shù)據(jù)發(fā)給對(duì)象發(fā)生器,對(duì)象發(fā)生器根據(jù)接收到的數(shù)據(jù)生成框架和應(yīng)用A ;4)同吋,因?yàn)樵撆渲梦募]有設(shè)置框架和應(yīng)用A的布局,所以布局管理器根據(jù)默認(rèn)的布局對(duì)框架和應(yīng)用A進(jìn)行排版;
5)在布局管理器完成排版之后,其將框架和應(yīng)用A發(fā)給界面渲染器,界面渲染器就會(huì)將screen_bg9. jpg渲染為框架背景,將btn_001. png渲染為應(yīng)用A的圖標(biāo)顯示出來(lái),從而完成框架的初始化過程,如圖3所示;6)框架在完成初始化之后,會(huì)不斷地對(duì)應(yīng)用A進(jìn)行監(jiān)控,如果有用戶點(diǎn)擊應(yīng)用A,則觸發(fā)命令執(zhí)行器執(zhí)行命令OPEN:B,gui/APP_A. xml ;7)命令執(zhí)行器在執(zhí)行命令OPEN:B,gui/APP_A. xml過程中,會(huì)調(diào)用內(nèi)容加載器加載應(yīng)用A的配置文件APP_A. xml ;8)命令解析器將type是TEXT解析為文本控件,type是EDIT為可編輯文本控件,type是BUTTON為按鈕控件,并將相關(guān)數(shù)據(jù)傳給對(duì)象發(fā)生器;9)對(duì)象發(fā)生器根據(jù)接收到的數(shù)據(jù)生成一個(gè)標(biāo)題為主題名稱的文本控件、一個(gè)可編輯文本控件和兩個(gè)按鈕控件;10)布局管理器根據(jù)接收到的樣式數(shù)據(jù)將應(yīng)用A的高度和寬度設(shè)為200,文本控件的寬度為I. 5,背景顏色為00AA22,可編輯文本控件的寬度為5. 5 ;11)同時(shí),界面渲染器根據(jù)布局管理器傳過來(lái)的數(shù)據(jù)渲染出應(yīng)用A的界面,如圖4所示12)用戶填寫好主題名稱之后,點(diǎn)擊確認(rèn)將觸發(fā)命令執(zhí)行器執(zhí)行命令CHECK_FORM,該命令將調(diào)用save, jsp通過接ロ向服務(wù)器發(fā)送請(qǐng)求;13)服務(wù)器在接收到客戶端發(fā)來(lái)請(qǐng)求之后,將調(diào)用WEB應(yīng)用進(jìn)行處理,并將處理結(jié)果按照規(guī)則寫入動(dòng)態(tài)腳本,并觸發(fā)內(nèi)容加載器加載新的動(dòng)態(tài)腳本,其執(zhí)行過程與初始化過程相類似,具體可參考步驟I至5 ;14)在這過程中,本框架會(huì)不斷地對(duì)應(yīng)用實(shí)體進(jìn)行監(jiān)控,以便能及時(shí)響應(yīng)用戶響應(yīng),直至程序關(guān)閉。如圖5至圖6所示,則為本發(fā)明中的腳本解析器的詳細(xì)說(shuō)明。腳本解析器包括外部資源和程序構(gòu)件兩大部分,所述的外部資源包括、AS基類、對(duì)象庫(kù)、指令集、布局規(guī)則、外部組件、資源文件和容器接ロ,其中=XML腳本主要是為腳本引擎提供數(shù)據(jù),同時(shí)作為腳本引擎和后臺(tái)的接ロ。AS基類是指AS提供的基礎(chǔ)類。對(duì)象庫(kù)是指根據(jù)富互聯(lián)網(wǎng)應(yīng)用程序技術(shù)預(yù)制的UI集,提供了自定義的XML腳本語(yǔ)法支持。指令集是根據(jù)系統(tǒng)的需求自定義的命令集。布局規(guī)則主要是規(guī)定了應(yīng)用布局的方式。外部組件是根據(jù)富互聯(lián)網(wǎng)應(yīng)用程序技術(shù)預(yù)制的組件集。資源文件是指引擎使用的任意非可執(zhí)行的數(shù)據(jù)文件,如圖像、音頻和視頻文件。容器接ロ是指引擎跟裝載引擎容器的通信接ロ,例如引擎與瀏覽器的接ロ、引擎與桌面程序的接ロ。程序構(gòu)件包括初始化器、XML解析器、腳本加載器、解釋器、執(zhí)行器、事件管理器和對(duì)象實(shí)體,在本引擎中程序構(gòu)件主要是根據(jù)XML腳本動(dòng)態(tài)生成最終顯示需要的信息。初始化器主要是根據(jù)配置文件對(duì)應(yīng)用程序進(jìn)行初始化。腳本加載器是主要用于加載XML腳本。XML解析器是指AS內(nèi)置的XML解析器。在本引擎中,其主要用于解析XML腳本,并生成解釋器所需的對(duì)象。解釋器主要是以XML解析器所生成的對(duì)象為輸入負(fù)責(zé)對(duì)語(yǔ)句解釋執(zhí)行控制,是整個(gè)腳本引擎的中心模塊。執(zhí)行器主要是用于根據(jù)對(duì)象或命令的類型調(diào)用相應(yīng)的處理模塊。事件管理器主要是負(fù)責(zé)對(duì)應(yīng)用空間的事件或動(dòng)作進(jìn)行監(jiān)聽、響應(yīng),并觸發(fā)執(zhí)行器執(zhí)行相應(yīng)的命令。應(yīng)用空間是指由引擎根據(jù)XML腳本生成的應(yīng)用集。本解析器可以作為瀏覽器的插件,也可以作為桌面應(yīng)用軟件的插件。本解析器的解析方法包括以下幾個(gè)步驟I)初始化根據(jù)配置文件對(duì)應(yīng)用進(jìn)行初始化,在初始化完成之后,不斷對(duì)該應(yīng)用進(jìn)行監(jiān)聽,以至能及時(shí)響應(yīng)用戶的操作。2)事件響應(yīng)用戶通過圖形界面對(duì)應(yīng)用進(jìn)行操作,并觸發(fā)相應(yīng)的事件。事件管理器在捕捉到該事件后對(duì)其進(jìn)行響應(yīng),并觸發(fā)執(zhí)行器執(zhí)行相應(yīng)的命令。3)命令解釋解釋器會(huì)根據(jù)預(yù)制的對(duì)象庫(kù)、指令集和布局規(guī)則判斷該命令的類型,然后觸發(fā)執(zhí)行器執(zhí)行相應(yīng)的處理模塊。在此過程中,解釋器負(fù)責(zé)對(duì)命令解釋執(zhí)行控制。4)命令執(zhí)行執(zhí)行器會(huì)根據(jù)解釋器傳過來(lái)的信息調(diào)用相應(yīng)的模塊進(jìn)行處理。例如如果是以APP開頭的命令,執(zhí)行器執(zhí)行對(duì)象處理模塊;如果以O(shè)PEN、CLOSE、URL:等開頭的命令,執(zhí)行器調(diào)用命令處理模塊進(jìn)行處理。在執(zhí)行器執(zhí)行命令過程中,該命令可能會(huì)需要加載XML腳本或調(diào)用其他的命令。如果是需要加載XML腳本,執(zhí)行器會(huì)觸發(fā)腳本加載器加載相應(yīng)的XML腳本;如果是調(diào)用其他的命令,執(zhí)行器會(huì)觸發(fā)解釋器對(duì)該命令進(jìn)行解釋,從而形成循環(huán)調(diào)用。同時(shí),命令執(zhí)行器會(huì)根據(jù)解釋器傳過來(lái)的信息,結(jié)合外部組件和資源文件生成相應(yīng)的應(yīng)用存儲(chǔ)到應(yīng)用空間里。5)腳本加載根據(jù)執(zhí)行器發(fā)過來(lái)的請(qǐng)求,腳本加載器加載相應(yīng)的腳本傳給XML解析器。6)XML解析XML解析器對(duì)腳本加載器傳過來(lái)的腳本進(jìn)行解析,并根據(jù)XML語(yǔ)言的語(yǔ)法規(guī)則生成相應(yīng)的對(duì)象。7)結(jié)束本引擎會(huì)不斷執(zhí)行步驟2)到6),直到遇到結(jié)束符為止。下述為ー個(gè)具體控件的解析實(shí)施例DataGrid. xml 為 DataGrid 控件的配置文件;
權(quán)利要求
1.一種基于RIA的客戶端框架結(jié)構(gòu),其特征在于該框架包括動(dòng)態(tài)腳本和程序構(gòu)件,所述的動(dòng)態(tài)腳本用于存儲(chǔ)業(yè)務(wù)邏輯模塊返回的結(jié)果,同時(shí)為程序構(gòu)件提供相關(guān)數(shù)據(jù),是業(yè)務(wù)邏輯模塊和程序構(gòu)件之間的接口 ;所述的程序構(gòu)件包括實(shí)體應(yīng)用模塊、內(nèi)容加載器、腳本解析器、對(duì)象發(fā)生器、渲染引擎模塊、命令執(zhí)行器和對(duì)象庫(kù);程序構(gòu)件根據(jù)動(dòng)態(tài)腳本動(dòng)態(tài)生成圖形界面。
2.根據(jù)權(quán)利要求I所述的一種基于RIA的客戶端框架結(jié)構(gòu),其特征在于所述動(dòng)態(tài)腳本自定義的內(nèi)容包括基本語(yǔ)法、程序界面布局、控件、命令和圖標(biāo);所述的命令執(zhí)行器用于響應(yīng)用戶相應(yīng)的操作,并執(zhí)行相關(guān)的命令;所述的對(duì)象庫(kù)是根據(jù)RIA技術(shù)預(yù)制的UI集。
3.根據(jù)權(quán)利要求2所述的一種基于RIA的客戶端框架結(jié)構(gòu),其特征在于所述的實(shí)體應(yīng)用模塊是根據(jù)用戶需求開發(fā)的應(yīng)用模塊;所述的渲染引擎模塊包括布局管理器和界面渲染器。
4.根據(jù)權(quán)利要求3所述的一種基于RIA的客戶端框架結(jié)構(gòu),其特征在于所述的內(nèi)容加載器用于加載動(dòng)態(tài)腳本;所述的腳本解析器用于解析動(dòng)態(tài)腳本,并將相關(guān)數(shù)據(jù)發(fā)給對(duì)象發(fā)生器。
5.根據(jù)權(quán)利要求4所述的一種基于RIA的客戶端框架結(jié)構(gòu),其特征在于所述的對(duì)象發(fā)生器是根據(jù)腳本解析器發(fā)來(lái)的數(shù)據(jù)動(dòng)態(tài)生成相應(yīng)的Web UI部件,并將該部件傳送給渲染引擎。
6.根據(jù)權(quán)利要求5所述的一種基于RIA的客戶端框架結(jié)構(gòu),其特征在于所述的渲染引擎模塊將對(duì)象發(fā)生器傳送過來(lái)的Web UI部件和對(duì)象庫(kù)的對(duì)象渲染成圖形化界面。
7.一種基于RIA的客戶端框架結(jié)構(gòu)的實(shí)現(xiàn)方法,其特征在于包括以下步驟 1)初始化實(shí)體應(yīng)用模塊在初始化過程中,框架根據(jù)配置文件對(duì)實(shí)體應(yīng)用模塊進(jìn)行初始化; 2)內(nèi)容加載實(shí)體應(yīng)用模塊會(huì)調(diào)用內(nèi)容加載器加載動(dòng)態(tài)腳本,如果該命令有URL請(qǐng)求,則加載URL請(qǐng)求并傳給接口 ;實(shí)體應(yīng)用模塊初始化時(shí),內(nèi)容加載器會(huì)從動(dòng)態(tài)腳本上加載引導(dǎo)頁(yè); 3)腳本解析腳本解析器解析動(dòng)態(tài)腳本的樹形結(jié)構(gòu),根據(jù)具體需要調(diào)用內(nèi)容加載器加載動(dòng)態(tài)腳本,同時(shí)將解析的數(shù)據(jù)傳給對(duì)象發(fā)生器;實(shí)體應(yīng)用模塊初始化時(shí),腳本解析器主要用于解析引導(dǎo)頁(yè); 4)對(duì)象創(chuàng)建對(duì)象發(fā)生器根據(jù)腳本解析器傳過來(lái)的數(shù)據(jù)創(chuàng)建對(duì)應(yīng)的對(duì)象,在實(shí)體應(yīng)用模塊初始化時(shí),對(duì)象發(fā)生器根據(jù)相關(guān)數(shù)據(jù)生成界面框架、窗體、自動(dòng)導(dǎo)航和頁(yè)面控件等內(nèi)容; 5)布局管理渲染引擎模塊將對(duì)相關(guān)的對(duì)象進(jìn)行自動(dòng)排版; 6)界面渲染渲染引擎模塊加載資源文件和對(duì)象庫(kù)的對(duì)象并對(duì)相關(guān)數(shù)據(jù)進(jìn)行渲染; 7)動(dòng)作和事件監(jiān)聽在完成實(shí)體應(yīng)用模塊初始化之后,會(huì)不斷對(duì)應(yīng)用實(shí)體進(jìn)行監(jiān)聽,以至能及時(shí)響應(yīng)用戶的操作; 8)動(dòng)作響應(yīng)用戶對(duì)實(shí)體應(yīng)用模塊進(jìn)行操作時(shí),對(duì)該操作進(jìn)行合法性判斷;如果該操作不合法,將錯(cuò)誤信息返回給實(shí)體應(yīng)用模塊,否則調(diào)用相應(yīng)的處理函數(shù)進(jìn)行處理; 9)命令執(zhí)行在執(zhí)行命令過程中,先判斷該命令的類型,判斷其參數(shù)是否有URL請(qǐng)求,如果該命令沒有URL請(qǐng)求,則調(diào)用腳本解析器對(duì)其進(jìn)行處理;如果有則通過接口將該請(qǐng)求傳給Web應(yīng)用進(jìn)行邏輯處理;當(dāng)Web應(yīng)用完成URL請(qǐng)求的處理后,將會(huì)動(dòng)態(tài)生成XML腳本并將其傳給本框架結(jié)構(gòu),本框架結(jié)構(gòu)將調(diào)用內(nèi)容加載器、腳本解析器、對(duì)象發(fā)生器、渲染引擎模塊對(duì)處理結(jié)果進(jìn)行加載、解析、生成、渲染并顯示出來(lái); 10)結(jié)束不斷重復(fù)執(zhí)行步驟2)到9),直至用戶退出為止。
8.根據(jù)權(quán)利要求7所述的一種基于RIA的客戶端框架結(jié)構(gòu)的實(shí)現(xiàn)方法,其特征在于所述的動(dòng)態(tài)腳本均為XML腳本。
全文摘要
本發(fā)明公開了一種基于RIA的客戶端框架結(jié)構(gòu)及其實(shí)現(xiàn)方法,該框架包括動(dòng)態(tài)腳本和程序構(gòu)件,所述的動(dòng)態(tài)腳本用于存儲(chǔ)業(yè)務(wù)邏輯模塊返回的結(jié)果,同時(shí)為程序構(gòu)件提供相關(guān)數(shù)據(jù),是業(yè)務(wù)邏輯模塊和程序構(gòu)件之間的接口;所述的程序構(gòu)件包括實(shí)體應(yīng)用模塊、內(nèi)容加載器、腳本解析器、對(duì)象發(fā)生器、渲染引擎模塊、命令執(zhí)行器和對(duì)象庫(kù);程序構(gòu)件根據(jù)動(dòng)態(tài)腳本動(dòng)態(tài)生成圖形界面。本發(fā)明框架結(jié)構(gòu)以自定義的動(dòng)態(tài)腳本為接口,動(dòng)態(tài)生成各種UI控件(例如窗口、表格、滑標(biāo)、日期選擇器、選項(xiàng)卡、微調(diào)控制器和標(biāo)尺等),并根據(jù)系統(tǒng)的需求將UI控件輸出成文HTML、WML、swf文件,提高本框架的通用性和可重用性,從而提高企業(yè)的開發(fā)效率,減少企業(yè)開發(fā)成本。
文檔編號(hào)G06F9/44GK102855142SQ201210356680
公開日2013年1月2日 申請(qǐng)日期2012年9月24日 優(yōu)先權(quán)日2012年9月24日
發(fā)明者楊博宇, 杜恩寬, 鄧俊仕 申請(qǐng)人:廣東華大集成技術(shù)有限責(zé)任公司