付 冉,楊 燕,王 帥,徐 罡,盧 彬
(1.中國科學院 軟件研究所 軟件工程技術研發(fā)中心,北京100190;2.中國科學院大學,北京100190;3.蘇州飛訊動力信息科技有限公司,江蘇 蘇州215600)
為了提高資源的利用率,降低生產(chǎn)成本,企業(yè)門戶需要無縫整合外部資源,為用戶提供訪問內、外部資源的統(tǒng)一入口。整合外部資源主要有3 種方式,從表示層集成、從數(shù)據(jù)層集成、從應用功能層集成 (Web service)。其中,從表示層集成 (即頁面集成),可以根據(jù)用戶需求,按需集成Web資源,在以上3種方式中應用范圍最廣,其典型代表包 括Oracle WebCenter Portal、IBM WebSphere Portal等。然而,目前的頁面集成工具大都局限于對Web應用中單個頁面資源的集成,無法針對Web應用中頁面之間復雜的交互邏輯關系進行深度集成,因此簡單的頁面集成機制無法深度整合Web應用。
為解決上述問題,本文針對網(wǎng)絡應用環(huán)境的多樣性和高質量的集成需求,尤其是Web應用中特定頁面集合以及Web頁面上特定應用區(qū)域的集成需求,以交互界面作為處理主體的集成思想,借鑒傳統(tǒng)的頁面集成技術,提出了支持交互邏輯復用的頁面集成框架,重點從資源的集成深度和資源定制的自適應性角度,探索頁面集成在門戶環(huán)境中遇到的問題。
企業(yè)門戶可以提供對Portlet運行環(huán)境的支持,通過Portlet的形式將頁面集成框架整合到門戶系統(tǒng)中,因此,頁面集成在主流的門戶產(chǎn)品中得到廣泛的應用。
Oracle WebCenter Portal[1]和IBM WebSphere Portal[2]利用頁面裁剪 (Web clipping)技術,可以支持用戶按需裁剪和集成單個Web 頁面的片段,結合XPath[3]可以支持HTML標簽級粒度的裁剪,另外,通過頁面配置控制裁剪片段的表示層。盡管頁面裁剪技術比較成熟,但是它停留在對于單頁面的集成,面對Web應用的多樣性和復雜性,僅依靠頁面裁剪無法完成對Web應用的深度無縫集成。
文獻 [4,5]提出了一種基于首頁集成 (即頁面裁剪)的方法,對Web應用的深度集成模型,可以將已有應用的業(yè)務邏輯和界面樣式同時集成到OncePortal[6]門戶系統(tǒng)中,重點研究了頁面集成在門戶中的地址改寫和流程控制,通過記錄用戶瀏覽的歷史路徑找到并集成目標頁面。其中提出深度集成是指將應用以黑盒的方式封裝成Portlet,并僅使用URL請求進行訪問,其深度主要強調對于應用中目標頁面的直接集成和訪問,本質仍然是對單個頁面的集成。
文獻 [7,8]介紹了一種結合單點登錄 (SSO)技術和遠程門戶網(wǎng)站W(wǎng)eb服務 (WSRP)技術的深度集成方案,使用單點登錄作為集成認證系統(tǒng)的入口,通過WSRP[9]技術可以在門戶中顯示遠程的Portlet應用,有效解決了集成深度上的局限性問題。但由于需要資源的提供方和接受方符合WSRP規(guī)范,在應用范圍上存在很大的局限性。
本文在頁面裁剪的基礎上,抽取頁面交互邏輯關系,將其應用到門戶系統(tǒng)中,從而將單一頁面關聯(lián)起來,完成資源復用范圍從頁面級到應用級的提升,保證用戶訪問集成框架定制的Web應用與直接訪問Web應用得到等價的體驗效果,使頁面集成框架既具備應用范圍廣的優(yōu)點,又彌補了資源集成深度上的不足。
基于交互邏輯復用的頁面集成框架支持用戶按需裁剪Web應用中具有交互邏輯關系的頁面集合,并提供與訪問源應用等價的用戶體驗效果。系統(tǒng)整體采用分層的設計框架,如圖1所示。
圖1 頁面集成的系統(tǒng)框架
系統(tǒng)的核心模塊包括單頁面集成模塊,交互邏輯控制模塊和緩存管理模塊。其中,單頁面集成模塊和交互邏輯控制模塊相互協(xié)作,并借助門戶平臺上的單點登錄和頁面組裝等基礎服務,共同完成深度頁面集成系統(tǒng)的主要功能。
本文提出的頁面集成框架針對傳統(tǒng)頁面集成的重要突破在于對頁面間交互邏輯關系的復用,因此,交互邏輯控制模塊是整個框架得以實現(xiàn)的關鍵。交互邏輯控制模塊主要包含兩個階段:交互邏輯定制階段和交互邏輯應用階段。交互邏輯應用階段通過交互邏輯定制階段產(chǎn)生的頁面關系元數(shù)據(jù)獲取定制階段集成的頁面內容,從而將集成頁面按邏輯順序進行展示。
首先,本文提出了一個可定制的交互邏輯關系映射模型來描述系統(tǒng)集成定制的頁面關系元數(shù)據(jù)。其次,在交互邏輯定制階段,系統(tǒng)提出了一個頁面分類定制算法來減少人工干預,提高定制階段的自適應性。分類定制階段獲取的頁面內容和頁面關系元數(shù)據(jù)將分別存入緩存和交互邏輯關系映射模型中,供頁面關系應用階段使用。最后,闡述了交互邏輯關系如何通過頁面交互邏輯模型在集成系統(tǒng)中應用執(zhí)行。
單頁面集成模塊主要借鑒傳統(tǒng)頁面集成的技術,緩存管理模塊主要負責系統(tǒng)性能優(yōu)化,在本文不做重點討論。
可定制的交互邏輯關系模型主要用于描述系統(tǒng)按需集成的一組存在交互邏輯關系的頁面集合以及集合中的頁面邏輯關系。該模型作為頁面交互邏輯定制和頁面交互邏輯應用的中間媒介,是頁面交互邏輯控制模塊的核心。
由于頁面間交互邏輯關系的多樣性和復雜性,系統(tǒng)集成所有情況下的交互邏輯關系將給定制過程帶來嚴重的工作負擔,結合資源復用在門戶中的應用需求,門戶并非要求所有復用資源的可控性。在此基礎上,該模型提出了交互邏輯關系的可定制條件。
首先,本文對集成系統(tǒng)中的交互邏輯關系、可定制的交互邏輯關系以及可定制的頁面集合進行了形式化描述,并針對交互邏輯關系在集成系統(tǒng)中應用的特點,提出了頁面交 互 邏 輯 關 系 映 射 模 型PILM (page interactive logic model)。其次,該模型除了作為交互邏輯定制和應用模塊的中間媒介外,使用該模型的集成系統(tǒng)之間可以對元數(shù)據(jù)進行復用和熱部署。
2.1.1 形式化定義
定義1 交互邏輯關系:交互邏輯關系是指兩個頁面之間通過超鏈接或者表單提交的方式所產(chǎn)生的具有先后順序的邏輯關系。用二元組表示,R= (H,F(xiàn)),其中,H 為超鏈接產(chǎn)生的交互邏輯,F(xiàn)為表單提交產(chǎn)生的交互邏輯。
定義2 可定制的交互邏輯關系:指可以通過人工或自動的方式復用到集成系統(tǒng)中的交互邏輯關系,用P(R)表示。
定義3 可定制的條件:系統(tǒng)可以定制的交互邏輯關系滿足以下條件:
(1)P(R∧O)
(2)P(H∧C)→P (R∧N)
(3)P(F∧C)→P (F∧N)
(4)P(F∧C)→P (H∧N∧B)
其中,P表示可定制;交互邏輯關系R=H∨F,H 為超鏈接產(chǎn)生的交互邏輯,F(xiàn) 為表單提交產(chǎn)生的交互邏輯;頁面邏輯順序S=C∨N,C 表示當前定制頁面,N 表示邏輯后續(xù)頁面;O 表示初始定制頁面;B表示當前站點。
定義4 可定制的頁面集合:指從一個特定URL 出發(fā),所觸發(fā)的與原始頁面具有直接或間接可定制交互邏輯關系的頁面集合,根據(jù)定義3可知,該集合至少包含一個頁面。
2.1.2 交互邏輯關系映射模型PILM
在本文提出的頁面集成系統(tǒng)中,一次定制的最小單位為一個可定制的頁面集合,對應門戶平臺上的一個Portlet。本文提出了一個頁面交互邏輯關系映射模型,用于存儲Portlet對應的頁面關系元數(shù)據(jù),具體描述信息如下:
圖2 基礎元素的關系
交互邏輯關系映射模型的schema定義如圖3所示。
圖3 交互邏輯關系映射模型的schema定義
2.1.3 PILM 的加載與執(zhí)行
由上文知,PILM 主要作用于交互邏輯控制模塊,該模塊由交互邏輯定制和交互邏輯應用兩個階段完成。PILM在頁面集成系統(tǒng)中的加載執(zhí)行過程如圖4所示。
頁面交互邏輯定制在門戶平臺上對應一個Portlet,該Portlet處理所有對頁面內容和邏輯關系的改寫和定制,改寫后的頁面內容將寫入緩存,定制所產(chǎn)生的交互邏輯關系和裁剪模板將寫入PILM,交互邏輯關系在PILM 中表現(xiàn)為schema的嵌套層次結構,裁剪模板在PILM 中表現(xiàn)為XPath。繼而,交互邏輯應用階段中的Portlet處理器可以根據(jù)用戶視圖Portlet的ID,讀取PILM 中對應Portlet的交互邏輯關系元數(shù)據(jù)和裁剪模板,完成后續(xù)工作。
另外,由于定制交互邏輯關系的人工成本較高,PILM Handler針對import關鍵字,根據(jù)引入的外部PILM 元數(shù)據(jù),自動從Web中抓取和定制Portlet對應的頁面內容和交互邏輯關系,以支持PILM 元數(shù)據(jù)文件在門戶系統(tǒng)間自由移植和熱部署。
基于交互邏輯復用的頁面集成框架需要對Web應用中的一組具有交互邏輯關系的頁面集合進行按需定制和集成,所有定制需要人工完成,為了減少人工干預,本文按頁面結構進行分類定制,使得具有相同結構的頁面至多只需干預定制一次,從而實現(xiàn)一種自適應的頁面交互邏輯定制過程。例如,人工定制的初始頁面包含3個鏈接,系統(tǒng)可以根據(jù)用戶對集成深度上的層次要求,選擇自動集成3個鏈接的后續(xù)頁面,并按需裁剪,依次類推。
首先,交互邏輯定制模塊在單頁面集成的基礎上,抽取當前頁面包含的超鏈接和表單,并對其進行改寫補全,訪問網(wǎng)絡抓取對應的后續(xù)頁面,然后將完整的超鏈接和表單參數(shù)傳遞給頁面分類定制算法,以獲取頁面裁剪模板。
頁面分類定制算法對以上兩種情況分別處理。對于超鏈接,主要根據(jù)超鏈接之間的相似性與對應頁面內容和結構之間相似性的關系[10],提取模板庫中與對應超鏈接前綴相似的模板集合,選取權重最大的模板作為裁剪模板。權重的計算公式如下:Weight= (1-r)+r*log (similarLink*count),r=0.5;其中similarLink為超鏈接的前綴相似度,用編輯距離計算,count為用戶校驗的命中次數(shù)。對于表單請求,該算法主要通過選取各類別的隨機參數(shù)進行提交的方式來判斷表單的通配性,所謂通配性是指后續(xù)頁面結構與請求參數(shù)值無關,例如百度搜索的表單提交具備通配性。否則,需要用戶干預輸入各類后續(xù)頁面結構對應的特定參數(shù)類別和匹配范圍。頁面分類定制算法如圖5所示。
由于裁剪模板的準確性對深度頁面集成系統(tǒng)的友好性影響較大,系統(tǒng)在自適應的分類基礎上,支持用戶校驗剪裁模板,將校驗模板存入模板庫,并且將用戶反饋計入count(template,URL)中,以調節(jié)模板權重,使定制算法的準確度隨著時間增長越來越好。
最后,交互邏輯定制模塊將新增裁剪模板存入模板庫,并將剪裁模板和對應的頁面交互邏輯關系存入PILM。
在交互邏輯關系的定制階段,將可定制的頁面集合定制成為Portlet,交互邏輯關系的應用模塊針對超鏈接和表單請求觸發(fā)的交互邏輯關系分別進行處理,獲取邏輯后續(xù)頁面的內容,進而協(xié)助已定制Portlet中的頁面片段進行邏輯有序的展示。具體執(zhí)行過程如圖6和圖7所示。
Viewer Handler是該模塊的核心,在系統(tǒng)實現(xiàn)中,主要包括HTTPViewerPortlet類和HTTPViewer類,前者繼承自符合JSR Portlet規(guī)范[11]的基礎類GenericPortlet,主要負責處理流程1~3和8,通過doView()方法進行邏輯處理,并展示Portlet組件;后者主要負責處理流程4~7,將通過邏輯處理獲取的頁面內容注入Portlet組件的iFrame中,完成內容顯示。
圖4 PILM 的加載執(zhí)行過程
圖5 頁面分類定制算法
圖6 超鏈接觸發(fā)的交互邏輯關系的應用
圖7 表單請求觸發(fā)的交互邏輯關系的應用
HTTPViewer類包含兩個重要的重載方法,getHTTPContent(portletID,hyperlinkID)方法和getHTTPContent(portletID,formID,params)方法,分別用于獲取以上兩種交互邏輯關系對應的后續(xù)頁面內容。
首先,在處理超鏈接時,流程4和5主要通過getHTTPContent方法在PILM 中獲取hyperlinkID 對應的后續(xù)頁面的URL 和裁剪模板XPath,繼而通過流程6 和7 在Cache中獲取對應的頁面片段,若頁面過期或沒有命中,則通過網(wǎng)絡獲取頁面并根據(jù)模板對頁面進行裁剪。
其次,在處理表單請求時,流程4 和5 通過getHTTPContent方法在PILM 中獲取formID 對應源站點的base URL,并根據(jù)請求參數(shù)params的不同,在對應form元素下,由上到下依次匹配參數(shù)組列表,最后一組參數(shù)為通配符,對應默認模板,獲取最先命中的參數(shù)組對應的模板。流程6和7通過base URL和參數(shù)列表封裝并轉發(fā)HTTP Request,并對返回的頁面內容按模板進行裁剪。
OncePortal是中科院軟件研究所自主研發(fā)的企業(yè)門戶中間件,本文基于OncePortal平臺進行開發(fā)實現(xiàn)。根據(jù)系統(tǒng)設計可知,系統(tǒng)實現(xiàn)分3個主要模塊。
單頁面集成模塊實現(xiàn)PageCustomization類,通過頁面抓取、頁面解析、頁面裁剪和頁面配置,對單個頁面的頁面內容和界面樣式進行集成,其中,頁面裁剪借助HTMLCleaner類解析的頁面結果,分別對HTML、CSS和JavaScript代碼進行裁剪,僅保留對用戶裁剪部分產(chǎn)生影響的代碼片段,以減輕系統(tǒng)的內存負擔。
交互邏輯控制模塊包含兩個階段:定制階段和應用階段,分別對應HTMLCustomizePortlet類和HTMLViewer-Portlet類。其中,定制階段通過借助PageCustomization類和LogicCustomization類實現(xiàn)對頁面內容和交互邏輯的定制,LogicCustomization類通過頁面分類器和PILM 處理器實現(xiàn)對頁面邏輯的自適應定制和存儲。應用階段通過HTMLViewer類協(xié)助實現(xiàn)邏輯功能,在2.3中已詳細描述。
緩存管理模塊實現(xiàn)CacheManagement類,主要分為頁面緩存和緩存刷新兩個部分,頁面緩存主要負責對于定制頁面和頁面裁剪片段的存儲和獲取,緩存刷新主要負責對過期頁面進行更新,并根據(jù)裁剪模板獲取新的頁面片段。
系統(tǒng)實現(xiàn)的核心類圖如圖8所示。下面通過一個簡單案例來展示基于交互邏輯復用的深度集成效果,如圖9所示。
圖8 系統(tǒng)實現(xiàn)的核心類
傳統(tǒng)的頁面集成系統(tǒng)普遍存在資源集成深度上的局限性問題,影響了資源在門戶中的利用率。本文基于傳統(tǒng)的頁面集成技術,通過建立可定制的交互邏輯關系模型,對交互邏輯關系進行分類定制和應用,實現(xiàn)了一種自適應的深度頁面集成框架,提高了資源利用率和復用深度。但是這種自適應的分類定制方法需要部分人工干預,下一步的研究工作將針對這個問題進行深入研究,通過學習算法訓練人工定制部分的頁面集合,來預測每個類別的頁面結構下用戶所需要的裁剪模板。
圖9 豆瓣在OncePortal上的集成案例
[1]Oracle WebCenter portal[EB/OL].https://www.oracle.com/us/products/middleware/webcenter/overview/index.html,2011.
[2]IBM WebSphere portal[EB/OL].http://www.ibm.com/developerworks/websphere/,2013.
[3]W3C.XML path language (XPath),version 3.0 [EB/OL].http://www.w3.org/TR/xpath-30/,2013.
[4]ZHANG Liping,SONG Jingyu,WEI Jun.Deep integration model of Web applications towards portal middleware[J].Application Research of Computers,2007,24 (5):20-23 (in Chinese).[張立平,宋靖宇,魏峻.一種面向門戶中間件的Web應用深度集成模型 [J].計算機應用研究,2007,24(5):20-23.]
[5]Song J,Wei J,Wan S,et al.An interaction instance oriented approach for Web application integration in portals[C]//Computer Software and Applications Conference,2007:353-360.
[6]ONCE portal [EB/OL].http://www.once.com.cn/Once-Portal/portal,2011.
[7]Abu-Taleb S,Mustafa H.Improving Web services security models[J].Int Arab J Inf Technol,2010,7 (4):428-434.
[8]Díaz O,Trujillo S,Pérez S.Turning portlets into services:The consumer profile [C]//Proceedings of the 16th International Conference on World Wide Web.ACM,2007:913-922.
[9]Apache Software Foundation.WSRP4Java [OL].http://portals.apache.org/wsrp4j/,2010.
[10]Qi X,Davison B D.Web page classification:Features and algorithms[J].ACM Computing Surveys(CSUR),2009,41(2):12.
[11]JCP.JSR 268 Portlet API Specification 2.0 [EB/OL].https://www.jcp.org/en/jsr/detail?id=286,2008.