施運梅 ,李 寧 ,劉旭紅
SHI Yunmei1,2,LI Ning1,2,LIU Xuhong1,2
1.北京信息科技大學 計算機學院,北京 100101
2.數(shù)字出版技術國家重點實驗室(籌),北京 100871
1.Computer School,Beijing Information Science&Technology University,Beijing 100101,China
2.State Key Laboratory of Digital Publishing Technology,Beijing 100871,China
傳統(tǒng)的辦公文檔只能夠按照靜態(tài)描述信息顯示文檔內(nèi)容,無法實現(xiàn)與用戶的動態(tài)交互。智能文檔是在傳統(tǒng)的辦公文檔的基礎上,添加動態(tài)操作,使文檔不僅能夠按照靜態(tài)描述信息顯示文檔內(nèi)容,還能與其他應用程序或業(yè)務系統(tǒng)相互交換數(shù)據(jù),實現(xiàn)對文檔的動態(tài)操作。
Microsoft在Office 2003的發(fā)布中正式提出了智能文檔的概念,隨后Adobe、方正、書生國際等公司也分別推出各自對智能文檔概念的理解與定義,并在自己的產(chǎn)品中提供對智能文檔的支持。它們在實現(xiàn)智能文檔時所采用的方法不盡相同,例如通過嵌入宏、腳本或插件方式實現(xiàn)文檔的智能操作;采用XML擴展包形式,利用清單文件記錄相關組件文件的標識和位置,并通過一個動態(tài)鏈接庫DLL實現(xiàn)動態(tài)操作。前一種實現(xiàn)方法中,動態(tài)操作依賴于具體的編程語言或腳本語言,在不同平臺上無法實現(xiàn)操作共享;后者在依賴于語言的同時,對辦公軟件產(chǎn)品也存在依賴,靈活性和通用性都受到了限制。
如果智能文檔只能用特定的平臺下應用或只能由特定的語言實現(xiàn),那么智能文檔并沒有真正地達到智能。人們希望智能文檔應該不依賴任何平臺和語言,隨時隨地為用戶提供人性化的服務。針對這樣的目標,學者們提出不同的解決方案,例如:向文檔模型中加入行為描述,并結合XForms、Web Service技術;MVC(Model-View-Controller)架構也被廣泛應用在以辦公軟件為核心的文檔處理中,例如 HotDoc[1-2]、Active Documents[3]、XForms[4]、InfoPath[5]以 及 Office2007 中 均 體 現(xiàn) 了 MVC思想。北京信息科技大學的文檔信息處理研究小組提出了一個基于MVC的智能文檔模型[6-7],并實現(xiàn)了系統(tǒng)原型。模型如圖1所示。
圖1 基于MVC的智能文檔模型
該模型采用了MVC框架,對文檔的數(shù)據(jù)、表現(xiàn)和動態(tài)操作進行了分離,提高了模型的靈活性和可復用性;模型中的操作行為主要通過Web Service實現(xiàn),消除了腳本語言或DLL造成的模型對平臺的依賴性等弊端。模型中的View定義了文檔處理系統(tǒng)的編輯和瀏覽界面。但是在文獻[6-7]中,對view沒有提供具體的描述方法,用戶界面(User Interface,UI)或是依賴于某種開源軟件,或是依賴于某種特定的平臺。這影響了模型的跨平臺性、可復用性,并且UI不能隨應用場景而動態(tài)變化,缺乏應有的靈活性;當用戶界面需要改變時,需要重新編寫源代碼,可維護性也較差。
可以使用界面描述語言描述UI,實現(xiàn)UI和數(shù)據(jù)的分離,這樣的界面描述語言有UIML、XUL、XAML等等。關于這方面的研究開展得相當廣泛,但是此類研究工作主要集中在如何使用界面描述語言構建多平臺用戶界面等[8-10]。
本文創(chuàng)新性地將界面描述語言引入到智能文檔模型中,使模型盡可能脫離對平臺的依賴,并在復用性、靈活性、可維護性上得到改善。
UIML[11-12](User Interface Markup Language)是一種基于XML的界面描述語言,是OASIS建議的標準。UIML具備基于XML的界面描述語言的所有共性特征[13-15],如:
(1)數(shù)據(jù)和表現(xiàn)相分離。界面描述語言中的界面元素和最終的界面表現(xiàn)是分離的,這樣易于實現(xiàn)個性化的UI,提高系統(tǒng)的靈活性。
(2)界面描述和邏輯實現(xiàn)分離。用戶界面的邏輯部分可使用任何一種高級語言或腳本語言編程實現(xiàn)。
(3)設備獨立。界面描述文件中使用的界面元素不依賴于任何具體的設備,是一種抽象描述。界面描述經(jīng)解析可以應用到任何計算設備,如臺式機、手機和PDA等移動設備。
(4)易于擴展。XML是置標語言標準,這使得基于XML的界面描述語言具有良好的可擴展性。將一個界面描述應用到新出現(xiàn)的設備時,無需對描述作修改。
(5)可及時獲得運行時狀態(tài)。在系統(tǒng)運行時,界面描述能及時準確地獲取當前目標的運行狀態(tài),并及時通過控制給與響應。
除此之外,UIML還具備一些界面描述語言所不具備的優(yōu)良特性,例如:UIML支持MVC框架,因而UIML適宜應用在基于MVC的智能文檔模型中。還有很重要的一點:UIML是開放的標準,這有助于用戶界面的描述走向標準化,利于互操作。
UIML中包含兩個重要的元素interface和peers,如圖2所示。
圖2 UIML的邏輯結構
interface元素包含四個可以重復出現(xiàn)的子元素,分別是:structure、style、content和behavior,其中structure記錄UI中包含的控件;style記錄控件的樣式信息;content記錄控件的內(nèi)容;behavior記錄控件的行為描述。在behavior中包含若干rule元素,每一個rule元素規(guī)定行為發(fā)生的條件和動作,當符合所規(guī)定的條件時,觸發(fā)相應的操作行為,如去執(zhí)行某個事件,或調(diào)用某個方法等。
peers元素包含presentation和logic兩個子元素。其中,presentation元素記錄類、屬性和事件等到界面控件的映射,這些映射可以作為詞匯表供其他UIML文檔重用;logic元素記錄要調(diào)用的外部程序(如遠程Web Service服務或本地函數(shù))的接口、方法的名稱和類之間的映射。
使用UIML中的元素和子元素可以對最終呈現(xiàn)給用戶的UI中出現(xiàn)的界面布局、控件和控件觸發(fā)時引發(fā)的事件進行抽象描述,這種描述不依賴于任何系統(tǒng)或平臺。
在文獻[6-7,16]的研究基礎之上,本文采用與平臺無關的界面描述語言UIML描述智能文檔操作界面的相關信息、記錄操作行為,這些描述記錄在UIML文檔中。UIML文檔的解析器(Render)解析UIML文檔,獲得界面控件信息及事件響應信息,生成動態(tài)操作界面,并執(zhí)行相關的事件處理。用UIML描述界面的智能文檔操作模型如圖3所示。
圖3 用UIML構建的智能文檔模型
圖3所示的智能文檔模型基于MVC框架。該模型中,Model被劃分為兩部分:文檔模型和智能操作模型。其中,文檔模型記錄文檔中的數(shù)據(jù)、格式等信息;智能操作模型由UIML文檔、解析器、詞匯表和Web Service等部分組成。UIML文檔記錄與UI和智能操作相關的信息,智能操作用Web Service技術實現(xiàn)。這樣做的好處是,當事件處理的邏輯發(fā)生變化時,只需要修改UIML文檔即可,應用程序無需修改或重新編譯,有利于Web Service部分的復用。
和傳統(tǒng)的MVC框架有所不同,在本模型中,View不僅僅由Controller控制,Model也參與對View的控制。Model、Controller和View三者既彼此獨立又相互統(tǒng)一。例如,當事件處理的邏輯發(fā)生改變時,只需要修改UIML文檔中的處理規(guī)則,Controller和View不需要變化;如果數(shù)據(jù)和消息的流轉(zhuǎn)過程需要變更,只需更改Controller即可,Model和View可完全保留;如界面布局不能滿足用戶需求,則只用更改View即可,Model和Controller不需進行更改。提出MVC框架的初衷是為了提高系統(tǒng)的靈活性和復用性,本模型對傳統(tǒng)MVC框架進行了改進,除保持了其原有特點外,靈活性、可復用性等得到進一步提高,可以節(jié)約系統(tǒng)的維護成本。
在圖3所示的智能文檔模型中,UIML文檔的構造與處理如圖4所示。
UIML文檔中記錄了界面初始化信息、事件處理邏輯、遠程方法調(diào)用信息和操作完成后界面變更信息。UIML文檔經(jīng)由解析層的解析,轉(zhuǎn)換為三部分:UI、操作處理器和事件監(jiān)聽器。這里的UI是和系統(tǒng)、平臺相關的具體的UI;操作處理器由Web Service和本地函數(shù)兩部分組成,負責完成具體的文檔智能操作;事件監(jiān)聽器監(jiān)聽用戶操作,負責控制信息的流轉(zhuǎn)。
圖4 UIML文檔及其轉(zhuǎn)換
解析層由解析器(Render)和詞匯表(Vocabulary)兩部分組成。解析器將UIML文檔中與平臺無關的UI描述轉(zhuǎn)換成可視化控件庫中的控件,但是這個轉(zhuǎn)換過程需要借助于詞匯表完成。詞匯表中記錄的是UIML文檔中的UI描述到目標UI中控件的映射關系。
下面給出一個UIML文檔片段,片段中列舉了UIML文檔的關鍵部分。
UIML文檔中的structure、style和content這三部分描述的是抽象UI:structure描述UI中的控件;style對控件的顏色、位置、字體等樣式進行定義;content中指定在UI中要出現(xiàn)的文本等。在下面的UIML文檔片段中,content元素的constant子元素指明要打開指定路徑下名為temp.uof的UOF(UOF的全稱是Uniform Office-document Format,是我國自主制定的辦公軟件文檔格式標準)文檔。
元素presentation描述的是UIML文檔中的元素、屬性和事件等到具體的UI控件的映射,這種映射關系通常通過調(diào)用一個外部獨立的詞匯表來提供。用戶可以自己開發(fā)詞匯表,也可以使用已有的詞匯表,在UIML的官方網(wǎng)站www.uiml.org中提供了多種詞匯表可供下載,用戶還可以根據(jù)需要對已有的詞匯表進行擴充。由于詞匯表是獨立存在的,因此詞匯表具有可復用性。在上面的文檔片段中指明使用詞匯表“WPF_Vocabulary 1.0”。
元素behavior記錄用戶操作的發(fā)生條件和處理方法。事件的處理方法是解析器根據(jù)詞匯表中描述的映射關系來執(zhí)行事件響應,并根據(jù)UIML文檔中的定義動態(tài)改變UI的顯示。在上面的UIML文檔片段中,元素behavior所描述的含義是當按下按鈕時,執(zhí)行一個調(diào)用,具體的調(diào)用在元素logic中描述,調(diào)用的是一個遠程Web Service服務。
由于UIML文檔描述遵循XML語法規(guī)范,不依賴于具體的語言和平臺,因此UIML文檔對UI的描述是抽象的,和具體的平臺和環(huán)境無關,實現(xiàn)了界面描述和具體實現(xiàn)的分離。事件響應和UI的動態(tài)改變均在UIML文檔中進行描述,不是用程序來進行直接控制,從而使事件響應和運行時的界面變化脫離了運行環(huán)境的限制。UIML對用戶視圖的表現(xiàn)、變化以及事件的邏輯控制的描述為智能文檔操作模型在跨平臺方面提供了基礎。
本智能文檔操作模型的執(zhí)行流程如圖5所示。具體執(zhí)行步驟如下:
(1)解析器Render通過UIML文檔和詞匯表Vocabulary動態(tài)生成初始化的UI。
(2)用戶打開UOF文檔,文檔被xlst解析,按指定的樣式顯示在UI中。此時用戶可以通過UI中的按鈕執(zhí)行智能操作。
(3)用戶點擊UI中的智能操作按鈕的同時也發(fā)送了智能操作請求。事件監(jiān)聽器監(jiān)聽到操作請求后,將控制轉(zhuǎn)向Render。
(4)Render查找 UIML文檔中的behavior元素,根據(jù)behavior中定義的規(guī)則,調(diào)用指定的遠程服務(Web Service)和本地函數(shù)完成具體的智能操作動作。
(5)Render根據(jù)UIML文檔中記錄的界面變更信息更新智能操作界面,實現(xiàn)UI的動態(tài)變化效果。
圖5 智能文檔操作模型的處理流程
UIML文檔是在一個更高的抽象級別來描述UI,不依賴于任何系統(tǒng)和平臺,解析器實現(xiàn)了從抽象界面元素的描述到具體UI(Concrete UI)中控件的映射。由于UIML本身沒有提供可視化控件為用戶展現(xiàn)界面,開發(fā)人員需要選擇一種可視化的控件庫來表現(xiàn)最終的UI,例如,可以采用 GTK(GIMP ToolKit)、WPF(Windows Presentation Foundation)、Java swing或HTML所提供的控件庫實現(xiàn)。針對不同的控件庫實現(xiàn)的Concrete UI,需要開發(fā)相應的解析器。
通過以上模型,可通過動態(tài)操作模型動態(tài)生成操作界面,并根據(jù)動態(tài)操作同步更新界面。由于所有與動態(tài)操作相關的信息都記錄在一個UIML文檔中,因此辦公軟件通過解析UIML文檔,不僅可獲得動態(tài)操作的實現(xiàn)方法,還能獲得操作界面的控件及其布局信息。
為了驗證模型的正確性和有效性,本文實現(xiàn)了一個智能文檔編輯系統(tǒng)。該系統(tǒng)支持UOF文檔的讀寫、編輯等一般文檔操作的功能;支持用戶操作界面的自動生成和變更;支持UOF文檔的拼寫檢查、語音朗讀、文檔片段加解密、數(shù)據(jù)庫操作、文檔語義標注等6項智能操作。系統(tǒng)中的智能操作功能通過遠程調(diào)用的Web Service實現(xiàn),UI采用WPF控件庫實現(xiàn)。初始化的UI如圖6所示。在該圖中已經(jīng)通過工具欄中的“打開”按鈕打開了一篇UOF格式的文檔。
在圖6中,箭頭所指的矩形方框中有兩個界面元件:左側的按鈕用于切換到智能操作界面;右側的是設置智能操作按鈕,用于選擇或取消所希望的智能操作,例如拼寫檢查、數(shù)據(jù)庫操作等。
圖6 初始化UI
界面中元件的產(chǎn)生過程是,解析器根據(jù)UIML文檔、詞匯表將UIML文檔在抽象級別的描述轉(zhuǎn)換為WPF控件,并根據(jù)UIML文檔中的布局描述在屏幕中的指定位置顯示出來。
界面上的元件被賦予了相應的事件響應操作,當事件觸發(fā)條件滿足時,解析器會根據(jù)UIML文件中定義的界面變更信息更改界面,使文檔界面具有動態(tài)變化的效果。例如,點擊圖6中箭頭所指示的切換到智能操作界面按鈕,UI就切換到如圖7所示的智能操作界面。在該智能操作界面中,提供了拼寫檢查、語音朗讀等6個智能操作控件,這6個控件實現(xiàn)了對該篇文檔的相關智能操作。例如,當用戶觸發(fā)拼寫檢查操作控件時,控制器得到觸發(fā)的事件,并將控制轉(zhuǎn)向解析器,解析器根據(jù)UIML描述,將執(zhí)行流程轉(zhuǎn)至服務器,通過服務器中的Web Service完成文檔的拼寫檢查,并將檢查結果返回給客戶端。
圖7 智能操作界面
在上述系統(tǒng)中,UI采用的是WPF控件庫,解析器使用C#開發(fā)。系統(tǒng)在Windows XP Professional SP 3平臺下進行了測試,共測試23個測試用例,所有測試用例在系統(tǒng)響應速度、文檔的普通編輯功能、文檔的智能操作功能等方面運行情況良好,達到了預期的目標。表1中列舉了智能操作的測試過程與測試結果。
本文目前只是針對WPF控件庫開發(fā)了一種解析器,如果將系統(tǒng)移植到不支持WPF控件庫的系統(tǒng)或平臺,或者想使用不同的控件庫,只需開發(fā)控件庫所支持的解析器即可。這需要耗費一定的代價,但是帶來的好處是:當需要修改UI時,例如增減控件、改變布局等,無需修改解析器,只需修改UIML文檔。這樣既可以靈活、便捷地改變UI,也可以達到UI風格的統(tǒng)一。
本文提出了一種基于UIML的智能文檔操作模型,其創(chuàng)新之處是使用了標準化的界面描述語言UIML描述用戶視圖,這使得對智能文檔的操作界面描述做到了標準化,并且由于UIML自身擁有良好特性,模型在跨平臺性、可復用性、靈活性等方面均得到一定的改善。
(1)增強的跨平臺性:對視圖的抽象描述不依賴于任何系統(tǒng)或平臺,只需要提供相應的解析器、詞匯表系統(tǒng)就可以運行于任何環(huán)境之中,無需改變用戶視圖的描述,最終的UI呈現(xiàn)一致的顯示效果。
(2)可復用性得到提升:模型使用了基于XML的用戶界面描述語言UIML,將UI的描述從視圖中分離出來,并且模型采用了MVC框架,實現(xiàn)了模型、視圖、控制的分離與統(tǒng)一,模型中的詞匯表、解析器和Web Service等部分均可重用。
(3)動態(tài)操作界面的靈活性:靈活性體現(xiàn)在兩個方面:一是用戶可以根據(jù)文檔的需要自定義辦公文檔的用戶界面,達到用戶界面的個性化定制;二是用戶界面可以隨著動態(tài)操作的改變而發(fā)生動態(tài)變化。
本文在通過動態(tài)操作模型控制操作界面方面進行了一些嘗試,模型中還存在一些需要改進的地方,例如在模型中使用了本地函數(shù)集,需要軟件開發(fā)人員根據(jù)開發(fā)環(huán)境提供所需方法的實現(xiàn),因此該部分內(nèi)容沒有脫離平臺的限制,降低了模型的平臺無關性。另外,模型中控件的布局控制,采用的是“絕對定位”方式,當用戶設備發(fā)生變化時,UI上的控件布局也有可能會發(fā)生改變,這影響了UI的設備獨立性,如果要使用戶界面描述能夠適用于任何設備,在用戶界面模型的描述上還需要改進。在下一步的工作中將繼續(xù)完善操作模型,嘗試通過模型控制所有視圖的變化,最終使視圖完全脫離平臺的限制,并使UI能夠在不同用戶設備上以合理的布局正確顯示。
表1 智能操作的測試過程與測試結果
[1]Buchner J,F(xiàn)ehnl T,Kunstmann T.HotDoc:a flexible framework for spatial composition[J].IEEE Computer Society,1997,9(7):92-100.
[2]Buchner J.HotDoc:a framework for compound documents[J].ACM Computing Surveys,2000,32(1):33-38.
[3]Bompani L,Ciancarini P,Vitali F.Active documents in XML[J].ACM SIGWEB Newsletter,1999,8(1):27-31.
[4]W3C.XForms current status[EB/OL].[2012-07-02].http://www.w3.org/standards/techs/xforms#w3c_all.
[5]Hoffman M.Architecture of Microsoft Office InfoPath 2003[EB/OL].[2012-07-02].http://msdn.microsoft.com/library/bb608321.aspx.
[6]溫金超,李寧.文檔操作語義的表示方法研究[J].計算機科學,2007,34(9A):375-376.
[7]李文坤,李寧,溫金超.文檔動態(tài)操作模型及其表示[J].計算機應用研究,2010,27(增刊):827-829.
[8]Bishop J.Multi-platform user interface construction—a challenge for software engineering-in-the-small[C]//ICSE’06:Proceedings of the 28th International Conference on Software Engineering.New York:ACM,2006:751-760.
[9]Ali M F,Abrams M.Simplifying construction of multiplatform user interfaces using UIML[EB/OL].[2012-07-02].http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.9287.
[10]Schaefer R,Bleul S.Towards object oriented,UIML-based interface description for mobile devices[C]//CADUI’06:Proceedings of 6th International Conference on Computer-Aided Design of User Interfaces,2006:24-35.
[11]Abrams M,Helms J.User Interface Markup Language(UIML)specification working draft 3.1[EB/OL].[2012-07-02].https://www.oasis-open.org/committees/download.php/5937/uimlcore-3.1-draft-01-20040311.pdf.
[12]Phanouriou C.UIML:a device-independent User Interface Markup Language[D].Virginia:Virginia Polytechnic Institute and State University,2000.
[13]Pohja M.Comparison of common XML-based Web user interface languages[J].Journal of Web Engineering,2010,9(2):95-115.
[14]Souchon N,Vanderdonckt J.A review of XML-compliant user interface description[C]//DSV-IS’03:Interactive Systems Design,Specification,and Verification 10th International Workshop.Berlin:Springer,2003:391-401.
[15]Trewin S,Zimmermann G,Vanderheiden G.Abstract user interface representations:how well do they support universal access?[C]//CUU’03:Proceedings of the 2003 Conference on Universal Usability.New York:ACM,2003:77-84.
[16]樊凱,李寧,吳倩,等.基于XForms的在線辦公文檔處理工具的設計與實現(xiàn)[J].計算機工程與科學,2011,33(4):180-185.