專利名稱:頁(yè)面導(dǎo)航方法和裝置及應(yīng)用服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及動(dòng)態(tài)頁(yè)面技術(shù)領(lǐng)域,具體涉及一種頁(yè)面導(dǎo)航方法和裝置及應(yīng)用服務(wù)器。
背景技術(shù):
隨著互聯(lián)網(wǎng)應(yīng)用的日益深化和拓展,在很多應(yīng)用場(chǎng)合,例如大規(guī)模企業(yè)級(jí)應(yīng)用等情況,普遍從桌面應(yīng)用轉(zhuǎn)變?yōu)榭蛻魴C(jī)/服務(wù)器(C/SClient/Service)應(yīng)用,并已逐漸開(kāi)始從C/S應(yīng)用轉(zhuǎn)變?yōu)闉g覽器/服務(wù)器(B/SBrowser/Server)應(yīng)用。在B/S應(yīng)用中用戶通過(guò)超鏈接導(dǎo)航到不同的頁(yè)面,得到服務(wù)器提供的各種服務(wù)。
B/S應(yīng)用中用戶從服務(wù)器得到的最小完整單位是頁(yè)面,用戶向服務(wù)器發(fā)送請(qǐng)求,并從服務(wù)器得到一個(gè)可供瀏覽器展示的響應(yīng)頁(yè)面。隨著應(yīng)用復(fù)雜性的日益增加,互聯(lián)網(wǎng)應(yīng)用頁(yè)面逐漸由靜態(tài)的頁(yè)面展示發(fā)展出基于導(dǎo)航邏輯的動(dòng)態(tài)頁(yè)面技術(shù)。目前業(yè)界主要有如下兩種實(shí)現(xiàn)導(dǎo)航邏輯的方式一、以頁(yè)面為中心的導(dǎo)航該方式以動(dòng)態(tài)服務(wù)器頁(yè)面(ASPActive Server Pages)技術(shù)為代表。ASP的一種導(dǎo)航運(yùn)行如圖1所示導(dǎo)航邏輯11被直接硬編碼在服務(wù)器頁(yè)面1中,用戶通過(guò)瀏覽器2向服務(wù)器頁(yè)面1請(qǐng)求導(dǎo)航,服務(wù)器頁(yè)面1中導(dǎo)航邏輯11的代碼接受請(qǐng)求并根據(jù)用戶的請(qǐng)求信息進(jìn)行導(dǎo)航,展示邏輯12的代碼則提供內(nèi)容格式、編排等處理,將導(dǎo)航獲得的響應(yīng)頁(yè)面內(nèi)容展示到用戶瀏覽器2;導(dǎo)航邏輯11也可根據(jù)對(duì)用戶請(qǐng)求的處理結(jié)果在彼此之間轉(zhuǎn)發(fā)請(qǐng)求。
此方案的缺陷在于雖然結(jié)構(gòu)簡(jiǎn)單,但是導(dǎo)航邏輯與頁(yè)面展示邏輯混淆在服務(wù)器頁(yè)面中,隨著項(xiàng)目復(fù)雜性的增加,展示邏輯代碼與導(dǎo)航邏輯代碼相互纏繞,導(dǎo)致服務(wù)器頁(yè)面代碼的可維護(hù)性下降;并且,由于導(dǎo)航邏輯以代碼的形式存在,存在比較高的定制門檻,使客戶難以使用。
二、使用前端控制器導(dǎo)航該方式以Java服務(wù)器頁(yè)面(JSPJava Server Pages)技術(shù)為代表。JSP的一種導(dǎo)航運(yùn)行如圖2所示通過(guò)一個(gè)前端控制器3接受用戶瀏覽器4的請(qǐng)求,前端控制器3根據(jù)導(dǎo)航配置文件5中的導(dǎo)航邏輯配置51的定義以及請(qǐng)求信息進(jìn)行匹配,查找到對(duì)應(yīng)的導(dǎo)航邏輯,然后調(diào)用導(dǎo)航邏輯命令6中真正的導(dǎo)航邏輯進(jìn)行運(yùn)算,獲得導(dǎo)航結(jié)果,結(jié)果可能是相應(yīng)的服務(wù)器頁(yè)面7,也可能是請(qǐng)求的轉(zhuǎn)發(fā)。
在這種方式下,導(dǎo)航過(guò)程被劃分在前端控制器3、導(dǎo)航邏輯命令6的命令對(duì)象、導(dǎo)航配置文件5中。其中真正的導(dǎo)航邏輯封裝于導(dǎo)航邏輯命令6的命令對(duì)象中,導(dǎo)航配置文件5為前端控制器3提供了導(dǎo)航邏輯命令對(duì)象的查找表;服務(wù)器頁(yè)面7中僅需要包含展示邏輯71。
此方案實(shí)現(xiàn)了導(dǎo)航邏輯與展示邏輯的分離,但缺陷在于導(dǎo)航配置文件實(shí)際上充當(dāng)?shù)闹皇亲?cè)表或查找表的作用,真正的導(dǎo)航邏輯存在于導(dǎo)航邏輯命令對(duì)象中,導(dǎo)航邏輯命令對(duì)象的修改需要經(jīng)過(guò)開(kāi)發(fā)、編譯、打包、部署等過(guò)程,不能或者很難在運(yùn)行期定制;并且由于導(dǎo)航邏輯配置文件中并沒(méi)有真正的導(dǎo)航邏輯,因此無(wú)法做到很好的導(dǎo)航邏輯配置。
發(fā)明內(nèi)容
有鑒于此,一方面,提供一種易于進(jìn)行運(yùn)行期導(dǎo)航邏輯定制的頁(yè)面導(dǎo)航方法,包括步驟接收頁(yè)面請(qǐng)求;根據(jù)所述頁(yè)面請(qǐng)求進(jìn)行規(guī)則匹配;按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面。
同時(shí),還提供相應(yīng)的幾種頁(yè)面導(dǎo)航裝置其一包括前端控制器和規(guī)則引擎;所述前端控制器,用于接收頁(yè)面請(qǐng)求;解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息;所述規(guī)則引擎,用于根據(jù)所述前端控制器解析獲得的請(qǐng)求信息進(jìn)行規(guī)則匹配;按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面。
另一包括前端控制器和規(guī)則引擎;所述前端控制器,用于接收頁(yè)面請(qǐng)求;解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息,所述請(qǐng)求信息中包括被請(qǐng)求頁(yè)面的統(tǒng)一資源地址;根據(jù)所述統(tǒng)一資源地址在地址規(guī)則包中進(jìn)行匹配,選擇相應(yīng)的導(dǎo)航邏輯規(guī)則包;所述規(guī)則引擎,用于在所述前端控制器選定的導(dǎo)航邏輯規(guī)則包中根據(jù)所述請(qǐng)求信息進(jìn)行規(guī)則匹配;按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面。
再一包括前端控制器、導(dǎo)航配置模塊、通用命令模塊和規(guī)則引擎;所述前端控制器,用于接收頁(yè)面請(qǐng)求;解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息;根據(jù)所述請(qǐng)求信息向所述導(dǎo)航配置模塊查找導(dǎo)航配置文件;根據(jù)所述導(dǎo)航配置文件從所述通用命令模塊中選擇與所述請(qǐng)求信息相應(yīng)的通用導(dǎo)航命令;所述導(dǎo)航配置模塊,用于提供導(dǎo)航配置文件;所述通用命令模塊,用于提供通用導(dǎo)航命令;根據(jù)所述前端控制器選擇的通用導(dǎo)航命令調(diào)用所述規(guī)則引擎;執(zhí)行所述規(guī)則引擎返回的規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面;所述規(guī)則引擎,用于根據(jù)所述通用命令模塊的調(diào)用進(jìn)行規(guī)則匹配,將匹配到的規(guī)則的結(jié)果返回給所述通用命令模塊。
以及,一種應(yīng)用服務(wù)器,包括頁(yè)面導(dǎo)航單元和頁(yè)面展示單元;所述頁(yè)面導(dǎo)航單元,用于接收頁(yè)面請(qǐng)求;根據(jù)所述頁(yè)面請(qǐng)求進(jìn)行規(guī)則匹配;按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降剿鲰?yè)面展示單元;所述頁(yè)面展示單元,用于根據(jù)所述頁(yè)面導(dǎo)航單元導(dǎo)航的信息,按照展示邏輯向用戶返回頁(yè)面響應(yīng)。
采用上述技術(shù)方案,本發(fā)明實(shí)施例通過(guò)規(guī)則匹配來(lái)生成和執(zhí)行導(dǎo)航邏輯,避免了直接將真實(shí)導(dǎo)航邏輯代碼化,基于規(guī)則配置形式的規(guī)范性,能夠提供可視化工具支持的能力,用戶可通過(guò)對(duì)規(guī)則配置的修改,方便地進(jìn)行導(dǎo)航邏輯的運(yùn)行期定制;同時(shí),由于規(guī)則配置直接影響匹配得到的導(dǎo)航邏輯,因此用戶能夠?qū)?dǎo)航邏輯進(jìn)行很好的維護(hù)。
圖1是現(xiàn)有ASP技術(shù)頁(yè)面導(dǎo)航運(yùn)行示意圖;圖2是現(xiàn)有JSP技術(shù)頁(yè)面導(dǎo)航運(yùn)行示意圖;圖3是本發(fā)明實(shí)施例頁(yè)面導(dǎo)航方法基本流程示意圖;圖4是本發(fā)明實(shí)施例一頁(yè)面導(dǎo)航方法流程示意圖;圖5是本發(fā)明實(shí)施例二頁(yè)面導(dǎo)航方法流程示意圖;圖6是本發(fā)明實(shí)施例三頁(yè)面導(dǎo)航方法流程示意圖;圖7是本發(fā)明實(shí)施例四頁(yè)面導(dǎo)航裝置示意圖;圖8是本發(fā)明實(shí)施例一方法由實(shí)施例四裝置運(yùn)行的示意圖;
圖9是本發(fā)明實(shí)施例六頁(yè)面導(dǎo)航裝置示意圖;圖10是本發(fā)明實(shí)施例三方法由實(shí)施例六裝置運(yùn)行的示意圖;圖11是本發(fā)明實(shí)施例七應(yīng)用服務(wù)器示意圖。
下面通過(guò)具體實(shí)施方式
并結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。
具體實(shí)施例方式
本發(fā)明實(shí)施例提供了一種頁(yè)面導(dǎo)航方法,采用規(guī)則匹配來(lái)生成和執(zhí)行導(dǎo)航邏輯,基本步驟如圖3所示,包括A1、接收頁(yè)面請(qǐng)求;頁(yè)面請(qǐng)求可以直接來(lái)自用戶,也可以來(lái)自之前導(dǎo)航的結(jié)果;A2、根據(jù)所述頁(yè)面請(qǐng)求進(jìn)行規(guī)則匹配;在本發(fā)明實(shí)施例中,代碼式的導(dǎo)航邏輯被規(guī)則化描述的導(dǎo)航規(guī)則所取代,執(zhí)行頁(yè)面導(dǎo)航的過(guò)程成為根據(jù)規(guī)則配置進(jìn)行規(guī)則匹配的過(guò)程;A3、按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面;規(guī)則的結(jié)果即需要執(zhí)行的導(dǎo)航邏輯,具體結(jié)果可分為兩類,一類是導(dǎo)航到某個(gè)頁(yè)面,則導(dǎo)航過(guò)程結(jié)束;另一類是轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求,則繼續(xù)重復(fù)上述過(guò)程直到導(dǎo)航結(jié)束。當(dāng)然,在規(guī)則匹配的過(guò)程中,也可能因?yàn)檎?qǐng)求本身的原因,例如參數(shù)錯(cuò)誤或用戶權(quán)限不足等,導(dǎo)致無(wú)法匹配或匹配不成功,這些情況可視為匹配到展示相應(yīng)錯(cuò)誤頁(yè)面的導(dǎo)航邏輯,同樣導(dǎo)致導(dǎo)航結(jié)束,所響應(yīng)的頁(yè)面為特定的錯(cuò)誤頁(yè)面。
本發(fā)明實(shí)施例還提供相應(yīng)的頁(yè)面導(dǎo)航裝置及應(yīng)用服務(wù)器。下面以具體的例子分別對(duì)本發(fā)明實(shí)施例方法和設(shè)備進(jìn)行詳細(xì)說(shuō)明。
實(shí)施例一、一種頁(yè)面導(dǎo)航方法,流程如圖4所示,包括B1、接收頁(yè)面請(qǐng)求;B2、解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息;頁(yè)面請(qǐng)求中包含的請(qǐng)求信息可包括被請(qǐng)求頁(yè)面的統(tǒng)一資源地址(URLUniversal Resource Locator)、請(qǐng)求參數(shù)、Cookie、瀏覽器環(huán)境變量以及請(qǐng)求的內(nèi)容等;這些信息為后續(xù)進(jìn)行的規(guī)則匹配提供條件;
B3、根據(jù)所述請(qǐng)求信息調(diào)用規(guī)則引擎進(jìn)行規(guī)則匹配;通常,規(guī)則包含四個(gè)主要組成部分名稱、條件、限定和結(jié)果,名稱表明了規(guī)則的友好的名字,可以通過(guò)名字記住這個(gè)規(guī)則,便于用戶的使用;規(guī)則的條件是一組布爾表達(dá)式,用于使用規(guī)則因子來(lái)匹配傳入的事實(shí),進(jìn)行規(guī)則運(yùn)算;規(guī)則的限定表示了規(guī)則的權(quán)重,分組等信息;規(guī)則的結(jié)果即為期望獲得的內(nèi)容,可以是賦值,表達(dá)式,也可以是動(dòng)作。進(jìn)行規(guī)則匹配通常包括1、加載規(guī)則包;規(guī)則包中包含了對(duì)規(guī)則的配置,通常由一組相關(guān)的規(guī)則形成,所加載的規(guī)則包可以是默認(rèn)的也可以是指定的,本實(shí)施例中不對(duì)規(guī)則進(jìn)行具體分類,因此只需加載默認(rèn)的規(guī)則包;2、生成規(guī)則工作上下文;上下文(Working Context)是規(guī)則的運(yùn)行環(huán)境;通常,規(guī)則在運(yùn)算過(guò)程中需要申請(qǐng)內(nèi)存,建立、存儲(chǔ)和銷毀臨時(shí)變量,都在該運(yùn)行環(huán)境中進(jìn)行;規(guī)則運(yùn)算中傳入的事實(shí)可傳遞給規(guī)則上下文,規(guī)則在運(yùn)算的時(shí)候從上下文中獲取事實(shí)信息;此外,一次規(guī)則匹配還可能會(huì)涉及到多個(gè)規(guī)則的運(yùn)算,上下文可以保證在多個(gè)規(guī)則的運(yùn)算過(guò)程中共享數(shù)據(jù);3、根據(jù)所述請(qǐng)求信息的內(nèi)容,通過(guò)規(guī)則的條件表達(dá)式進(jìn)行匹配;B4、按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面;若結(jié)果為導(dǎo)航到某個(gè)頁(yè)面,則導(dǎo)航過(guò)程結(jié)束;若結(jié)果為轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求,則繼續(xù)重復(fù)上述過(guò)程直到導(dǎo)航結(jié)束。
實(shí)施例二、一種頁(yè)面導(dǎo)航方法,流程如圖5所示,本實(shí)施例的特點(diǎn)在于對(duì)規(guī)則按照URL進(jìn)行分類,方法包括C1、接收頁(yè)面請(qǐng)求;C2、解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息,其中包括被請(qǐng)求頁(yè)面的URL;C3、根據(jù)被請(qǐng)求頁(yè)面的URL在地址規(guī)則包中進(jìn)行匹配,選擇相應(yīng)的導(dǎo)航邏輯規(guī)則包;在本實(shí)施例中相關(guān)的規(guī)則采用URL劃分成不同的導(dǎo)航邏輯規(guī)則包。URL與導(dǎo)航邏輯規(guī)則包的對(duì)應(yīng)關(guān)系構(gòu)成地址規(guī)則包。在執(zhí)行導(dǎo)航的時(shí)候,先根據(jù)URL信息匹配相應(yīng)的導(dǎo)航邏輯規(guī)則包,再進(jìn)行導(dǎo)航邏輯的規(guī)則匹配,從而達(dá)到模塊化的效果。
C4、調(diào)用規(guī)則引擎在選定的導(dǎo)航邏輯規(guī)則包中根據(jù)所述請(qǐng)求信息進(jìn)行規(guī)則匹配;規(guī)則匹配的過(guò)程與實(shí)施例一中步驟B3的過(guò)程類似,只是本實(shí)施例中進(jìn)行規(guī)則匹配時(shí)所加載的規(guī)則包即為指定的導(dǎo)航邏輯規(guī)則包;C5、按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面;若結(jié)果為導(dǎo)航到某個(gè)頁(yè)面,則導(dǎo)航過(guò)程結(jié)束;若結(jié)果為轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求,則繼續(xù)重復(fù)上述過(guò)程直到導(dǎo)航結(jié)束。
實(shí)施例三、一種頁(yè)面導(dǎo)航方法,流程如圖6所示,本實(shí)施例的特點(diǎn)在于基于現(xiàn)有“查找導(dǎo)航配置文件,調(diào)用導(dǎo)航邏輯命令對(duì)象”的方法,通過(guò)將導(dǎo)航邏輯命令對(duì)象中的導(dǎo)航邏輯提取為規(guī)則,增加對(duì)導(dǎo)航邏輯的定制能力,方法包括D1、接收頁(yè)面請(qǐng)求;D2、解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息;D3、根據(jù)所述請(qǐng)求信息查找導(dǎo)航配置文件,選擇相應(yīng)的通用導(dǎo)航命令;D4、由選定的通用導(dǎo)航命令調(diào)用規(guī)則引擎根據(jù)所述請(qǐng)求信息進(jìn)行規(guī)則匹配;在本實(shí)施例中,導(dǎo)航配置文件所對(duì)應(yīng)的導(dǎo)航命令中不再包含實(shí)際的導(dǎo)航邏輯,因此稱為通用導(dǎo)航命令;導(dǎo)航邏輯被提取成規(guī)則,通過(guò)通用導(dǎo)航命令調(diào)用規(guī)則引擎來(lái)生成完整的導(dǎo)航邏輯;規(guī)則匹配的過(guò)程與實(shí)施例一中步驟B3的過(guò)程類似,本實(shí)施例中進(jìn)行規(guī)則匹配時(shí)所加載的規(guī)則包可以選擇默認(rèn)的規(guī)則包,即不對(duì)規(guī)則進(jìn)行分類;也可以根據(jù)選擇的通用導(dǎo)航命令指定加載對(duì)應(yīng)的規(guī)則包;D5、按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面;若結(jié)果為導(dǎo)航到某個(gè)頁(yè)面,則導(dǎo)航過(guò)程結(jié)束;若結(jié)果為轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求,則繼續(xù)重復(fù)上述過(guò)程直到導(dǎo)航結(jié)束。
本實(shí)施例的好處在于可直接應(yīng)用于現(xiàn)有采用前端控制器架構(gòu)的動(dòng)態(tài)頁(yè)面提供方案中,而不需要進(jìn)行太大的改動(dòng),有利于本發(fā)明實(shí)施例方案的推廣。
下面對(duì)本發(fā)明實(shí)施例提供的幾種頁(yè)面導(dǎo)航裝置實(shí)施例進(jìn)行詳細(xì)說(shuō)明。
實(shí)施例四、一種頁(yè)面導(dǎo)航裝置,如圖7所示,包括前端控制器101和規(guī)則引擎102;前端控制器101,用于接收頁(yè)面請(qǐng)求;解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息;規(guī)則引擎102,用于根據(jù)前端控制器101解析獲得的請(qǐng)求信息進(jìn)行規(guī)則匹配;按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面。
本實(shí)施例頁(yè)面導(dǎo)航裝置可采用實(shí)施例一中的頁(yè)面導(dǎo)航方法,運(yùn)行示意如圖8所示,通過(guò)前端控制器101接受用戶瀏覽器a1的請(qǐng)求,前端控制器101將請(qǐng)求信息傳入規(guī)則引擎102,規(guī)則引擎102按照規(guī)則配置1021進(jìn)行規(guī)則匹配,執(zhí)行匹配到的規(guī)則的結(jié)果,結(jié)果可能是導(dǎo)航到相應(yīng)的服務(wù)器頁(yè)面a2,也可能是請(qǐng)求的轉(zhuǎn)發(fā)。
實(shí)施例五、一種頁(yè)面導(dǎo)航裝置,結(jié)構(gòu)與實(shí)施例四類似,包括前端控制器和規(guī)則引擎;前端控制器,用于接收頁(yè)面請(qǐng)求;解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息,所述請(qǐng)求信息中包括被請(qǐng)求頁(yè)面的統(tǒng)一資源地址;根據(jù)所述統(tǒng)一資源地址在地址規(guī)則包中進(jìn)行匹配,選擇相應(yīng)的導(dǎo)航邏輯規(guī)則包;規(guī)則引擎,用于在前端控制器選定的導(dǎo)航邏輯規(guī)則包中根據(jù)所述請(qǐng)求信息進(jìn)行規(guī)則匹配;按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面。
本實(shí)施例頁(yè)面導(dǎo)航裝置可采用實(shí)施例二中的頁(yè)面導(dǎo)航方法,運(yùn)行示意與圖8相仿,只是前端控制器是先經(jīng)過(guò)地址匹配確定加載的導(dǎo)航邏輯規(guī)則包后再調(diào)用規(guī)則引擎進(jìn)行規(guī)則匹配。為更好的理解上述實(shí)施例,以下給出一個(gè)具體的運(yùn)行過(guò)程,包括c1、用戶通過(guò)瀏覽器向頁(yè)面導(dǎo)航裝置所在的應(yīng)用服務(wù)器發(fā)送頁(yè)面請(qǐng)求,請(qǐng)求某種服務(wù);c2、前端控制器收到用戶請(qǐng)求,解析請(qǐng)求,得到URL、請(qǐng)求參數(shù)、Cookie和瀏覽器環(huán)境變量等信息;c3、前端控制器創(chuàng)建工作流引擎執(zhí)行環(huán)境,從規(guī)則庫(kù)或者緩存中加載URL匹配規(guī)則進(jìn)行URL匹配;c4、如果匹配規(guī)則無(wú)法找到,請(qǐng)求結(jié)束,給瀏覽器返回業(yè)務(wù)無(wú)法找到錯(cuò)誤的頁(yè)面;c5、如果匹配規(guī)則找到,進(jìn)入導(dǎo)航邏輯規(guī)則匹配處理過(guò)程中,根據(jù)URL規(guī)則匹配的結(jié)果調(diào)用規(guī)則引擎加載相應(yīng)的導(dǎo)航邏輯匹配規(guī)則包;c6、規(guī)則引擎進(jìn)行導(dǎo)航邏輯規(guī)則匹配,如無(wú)法找到匹配,請(qǐng)求結(jié)束,返回用戶服務(wù)無(wú)法使用錯(cuò)誤頁(yè)面;c7、如找到匹配規(guī)則,執(zhí)行規(guī)則結(jié)果動(dòng)作,規(guī)則結(jié)果動(dòng)作將會(huì)導(dǎo)致導(dǎo)航到某個(gè)頁(yè)面進(jìn)行顯示,或者進(jìn)行請(qǐng)求轉(zhuǎn)發(fā);c8、導(dǎo)航到某個(gè)頁(yè)面后,整個(gè)請(qǐng)求處理過(guò)程結(jié)束;c9、當(dāng)規(guī)則結(jié)果為轉(zhuǎn)發(fā)時(shí),重新進(jìn)入步驟c2。
以下舉例說(shuō)明URL規(guī)則與導(dǎo)航邏輯規(guī)則的匹配,引號(hào)中的字段表示規(guī)則中可配置的對(duì)象假定規(guī)則配置中已設(shè)置URL規(guī)則如下一、規(guī)則名稱“客戶信息功能”規(guī)則條件如果“請(qǐng)求”的“URL”“等于”“客戶信息”規(guī)則結(jié)果那么“應(yīng)用顯示客戶信息規(guī)則包”二、規(guī)則名稱“列舉客戶功能”規(guī)則條件如果“請(qǐng)求”的“URL”“等于”“客戶列表”規(guī)則結(jié)果那么“應(yīng)用顯示客戶信息列表的規(guī)則包”前端控制器收到請(qǐng)求后,假定解析出的URL為“客戶信息”,則在URL規(guī)則包中進(jìn)行匹配時(shí),“客戶信息功能”這條規(guī)則就會(huì)被匹配到,結(jié)果指向“應(yīng)用顯示客戶信息規(guī)則包”。
假定規(guī)則配置中已設(shè)置“顯示客戶信息規(guī)則包”中規(guī)則如下一、規(guī)則名稱“大客戶詳細(xì)信息列表”規(guī)則條件如果“客戶”的“類型”“等于”“大客戶”規(guī)則結(jié)果那么“導(dǎo)航”(“大客戶信息列表頁(yè)面”)二、規(guī)則名稱“客戶詳細(xì)信息列表”
規(guī)則條件如果“客戶”的“類型”“等于”“一般客戶”規(guī)則結(jié)果那么“導(dǎo)航”(“客戶信息列表頁(yè)面”)規(guī)則引擎根據(jù)前端控制器URL匹配的結(jié)果加載“顯示客戶信息規(guī)則包”,假定請(qǐng)求信息中傳入的數(shù)據(jù)顯示用戶類型為“大客戶”,則“大客戶詳細(xì)信息列表”這條規(guī)則就會(huì)被匹配到,規(guī)則引擎執(zhí)行規(guī)則結(jié)果,用戶將會(huì)被導(dǎo)航到“大客戶信息列表頁(yè)面”。
實(shí)施例六、一種頁(yè)面導(dǎo)航裝置,如圖9所示,包括前端控制器201、導(dǎo)航配置模塊202、通用命令模塊203和規(guī)則引擎204;前端控制器201,用于接收頁(yè)面請(qǐng)求;解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息;根據(jù)所述請(qǐng)求信息向?qū)Ш脚渲媚K202查找導(dǎo)航配置文件;根據(jù)所述導(dǎo)航配置文件從通用命令模塊203中選擇與所述請(qǐng)求信息相應(yīng)的通用導(dǎo)航命令用于接收頁(yè)面請(qǐng)求;導(dǎo)航配置模塊202,用于提供導(dǎo)航配置文件;通用命令模塊203,用于提供通用導(dǎo)航命令;根據(jù)前端控制器201選擇的通用導(dǎo)航命令調(diào)用規(guī)則引擎204;執(zhí)行規(guī)則引擎204返回的規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面;規(guī)則引擎204,用于根據(jù)通用命令模塊203的調(diào)用進(jìn)行規(guī)則匹配,將匹配到的規(guī)則的結(jié)果返回給通用命令模塊203。
本實(shí)施例頁(yè)面導(dǎo)航裝置可采用實(shí)施例三中的頁(yè)面導(dǎo)航方法,運(yùn)行示意如圖10所示,通過(guò)前端控制器201接受用戶瀏覽器b1的請(qǐng)求,前端控制器201查找導(dǎo)航配置模塊202中的導(dǎo)航邏輯配置確定對(duì)應(yīng)的通用導(dǎo)航命令;然后調(diào)用通用命令模塊203中相應(yīng)的通用導(dǎo)航命令2031,通用導(dǎo)航命令2031再調(diào)用規(guī)則引擎204進(jìn)行規(guī)則匹配,執(zhí)行匹配到的規(guī)則的結(jié)果,結(jié)果可能是導(dǎo)航到相應(yīng)的服務(wù)器頁(yè)面b2,也可能是請(qǐng)求的轉(zhuǎn)發(fā)。
實(shí)施例七、一種應(yīng)用服務(wù)器,如圖11所示,包括頁(yè)面導(dǎo)航單元100和頁(yè)面展示單元200;頁(yè)面導(dǎo)航單元100,用于接收頁(yè)面請(qǐng)求;根據(jù)所述頁(yè)面請(qǐng)求進(jìn)行規(guī)則匹配;按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降巾?yè)面展示單元200;頁(yè)面展示單元200,用于根據(jù)頁(yè)面導(dǎo)航單元100導(dǎo)航的信息,按照展示邏輯向用戶返回頁(yè)面響應(yīng)。
本實(shí)施例中頁(yè)面導(dǎo)航單元100具體可采用實(shí)施例四~六中頁(yè)面導(dǎo)航裝置的結(jié)構(gòu)。
以上對(duì)本發(fā)明實(shí)施例所提供的頁(yè)面導(dǎo)航方法和裝置及應(yīng)用服務(wù)器進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種頁(yè)面導(dǎo)航方法,包括步驟接收頁(yè)面請(qǐng)求;根據(jù)所述頁(yè)面請(qǐng)求進(jìn)行規(guī)則匹配;按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面。
2.根據(jù)權(quán)利要求1所述的頁(yè)面導(dǎo)航方法,其特征在于,所述根據(jù)頁(yè)面請(qǐng)求進(jìn)行規(guī)則匹配包括解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息;根據(jù)所述請(qǐng)求信息調(diào)用規(guī)則引擎進(jìn)行規(guī)則匹配。
3.根據(jù)權(quán)利要求1所述的頁(yè)面導(dǎo)航方法,其特征在于,所述根據(jù)頁(yè)面請(qǐng)求進(jìn)行規(guī)則匹配包括解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息,所述請(qǐng)求信息中包括被請(qǐng)求頁(yè)面的統(tǒng)一資源地址;根據(jù)所述統(tǒng)一資源地址在地址規(guī)則包中進(jìn)行匹配,選擇相應(yīng)的導(dǎo)航邏輯規(guī)則包;調(diào)用規(guī)則引擎在選定的導(dǎo)航邏輯規(guī)則包中根據(jù)所述請(qǐng)求信息進(jìn)行規(guī)則匹配。
4.根據(jù)權(quán)利要求1所述的頁(yè)面導(dǎo)航方法,其特征在于,所述根據(jù)頁(yè)面請(qǐng)求進(jìn)行規(guī)則匹配包括解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息;根據(jù)所述請(qǐng)求信息查找導(dǎo)航配置文件,選擇相應(yīng)的通用導(dǎo)航命令;由選定的通用導(dǎo)航命令調(diào)用規(guī)則引擎根據(jù)所述請(qǐng)求信息進(jìn)行規(guī)則匹配。
5.根據(jù)權(quán)利要求2~4任意一項(xiàng)所述的頁(yè)面導(dǎo)航方法,其特征在于,所述規(guī)則匹配的過(guò)程包括加載規(guī)則包;生成規(guī)則工作上下文;根據(jù)所述請(qǐng)求信息的內(nèi)容,通過(guò)規(guī)則的條件表達(dá)式進(jìn)行匹配。
6.一種應(yīng)用服務(wù)器,其特征在于,包括頁(yè)面導(dǎo)航單元和頁(yè)面展示單元;所述頁(yè)面導(dǎo)航單元,用于接收頁(yè)面請(qǐng)求;根據(jù)所述頁(yè)面請(qǐng)求進(jìn)行規(guī)則匹配;按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降剿鲰?yè)面展示單元;所述頁(yè)面展示單元,用于根據(jù)所述頁(yè)面導(dǎo)航單元導(dǎo)航的信息,按照展示邏輯向用戶返回頁(yè)面響應(yīng)。
7.一種頁(yè)面導(dǎo)航裝置,其特征在于,包括前端控制器和規(guī)則引擎;所述前端控制器,用于接收頁(yè)面請(qǐng)求;解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息;所述規(guī)則引擎,用于根據(jù)所述前端控制器解析獲得的請(qǐng)求信息進(jìn)行規(guī)則匹配;按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面。
8.一種頁(yè)面導(dǎo)航裝置,其特征在于,包括前端控制器和規(guī)則引擎;所述前端控制器,用于接收頁(yè)面請(qǐng)求;解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息,所述請(qǐng)求信息中包括被請(qǐng)求頁(yè)面的統(tǒng)一資源地址;根據(jù)所述統(tǒng)一資源地址在地址規(guī)則包中進(jìn)行匹配,選擇相應(yīng)的導(dǎo)航邏輯規(guī)則包;所述規(guī)則引擎,用于在所述前端控制器選定的導(dǎo)航邏輯規(guī)則包中根據(jù)所述請(qǐng)求信息進(jìn)行規(guī)則匹配;按照匹配到的規(guī)則執(zhí)行規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面。
9.一種頁(yè)面導(dǎo)航裝置,其特征在于,包括前端控制器、導(dǎo)航配置模塊、通用命令模塊和規(guī)則引擎;所述前端控制器,用于接收頁(yè)面請(qǐng)求;解析所述頁(yè)面請(qǐng)求獲得請(qǐng)求信息;根據(jù)所述請(qǐng)求信息向所述導(dǎo)航配置模塊查找導(dǎo)航配置文件;根據(jù)所述導(dǎo)航配置文件從所述通用命令模塊中選擇與所述請(qǐng)求信息相應(yīng)的通用導(dǎo)航命令;所述導(dǎo)航配置模塊,用于提供導(dǎo)航配置文件;所述通用命令模塊,用于提供通用導(dǎo)航命令;根據(jù)所述前端控制器選擇的通用導(dǎo)航命令調(diào)用所述規(guī)則引擎;執(zhí)行所述規(guī)則引擎返回的規(guī)則的結(jié)果,轉(zhuǎn)發(fā)頁(yè)面請(qǐng)求或?qū)Ш降较鄳?yīng)的服務(wù)器頁(yè)面;所述規(guī)則引擎,用于根據(jù)所述通用命令模塊的調(diào)用進(jìn)行規(guī)則匹配,將匹配到的規(guī)則的結(jié)果返回給所述通用命令模塊。
全文摘要
本發(fā)明公開(kāi)了一種頁(yè)面導(dǎo)航方法,其基本內(nèi)容是通過(guò)規(guī)則匹配來(lái)生成和執(zhí)行導(dǎo)航邏輯。本發(fā)明還提供相應(yīng)的頁(yè)面導(dǎo)航裝置和應(yīng)用服務(wù)器。本發(fā)明避免了直接將真實(shí)導(dǎo)航邏輯代碼化,基于規(guī)則配置形式的規(guī)范性,能夠提供可視化工具支持的能力,用戶可通過(guò)對(duì)規(guī)則配置的修改,方便地進(jìn)行導(dǎo)航邏輯的運(yùn)行期定制;同時(shí),由于規(guī)則配置直接影響匹配得到的導(dǎo)航邏輯,因此用戶能夠?qū)?dǎo)航邏輯進(jìn)行很好的維護(hù)。
文檔編號(hào)G06F17/30GK101030228SQ20071008881
公開(kāi)日2007年9月5日 申請(qǐng)日期2007年3月28日 優(yōu)先權(quán)日2007年3月28日
發(fā)明者邵俊雄 申請(qǐng)人:華為技術(shù)有限公司