本專(zhuān)利申請(qǐng)要求于2014年9月10日提交的標(biāo)題為“SYSTEMS AND METHODS FOR A METADATA DRIVEN USER INTERFACE FRAMEWORK”的美國(guó)專(zhuān)利申請(qǐng)No.14/482,437的優(yōu)先權(quán),其全部?jī)?nèi)容通過(guò)引用合并于此。
技術(shù)領(lǐng)域
本申請(qǐng)涉及用于利用元數(shù)據(jù)來(lái)創(chuàng)建網(wǎng)絡(luò)(web)應(yīng)用用戶界面(UI)的系統(tǒng)和方法。
附圖說(shuō)明
圖1是根據(jù)一個(gè)實(shí)施例的用于提供元數(shù)據(jù)驅(qū)動(dòng)UI的系統(tǒng)的框圖。
圖2是根據(jù)一個(gè)實(shí)施例的用于提供元數(shù)據(jù)驅(qū)動(dòng)UI的服務(wù)器系統(tǒng)的示意框圖。
圖3是根據(jù)一個(gè)實(shí)施例的用于提供元數(shù)據(jù)驅(qū)動(dòng)UI的客戶端的示意框圖。
圖4是根據(jù)一個(gè)實(shí)施例的圖示出了活動(dòng)層級(jí)的框圖。
圖5是根據(jù)一個(gè)實(shí)施例的用于提供元數(shù)據(jù)驅(qū)動(dòng)UI的方法的流程圖。
圖6是根據(jù)一個(gè)實(shí)施例的用于提供元數(shù)據(jù)驅(qū)動(dòng)UI的另一方法的流程圖。
具體實(shí)施方式
web應(yīng)用允許軟件被托管在服務(wù)器上、允許訪問(wèn)軟件、并且允許軟件在客戶端設(shè)備上運(yùn)行。例如,web應(yīng)用通常包括可以在web瀏覽器中運(yùn)行的軟件。當(dāng)將軟件分布和安裝在任何潛在客戶端設(shè)備上變得困難和麻煩時(shí),web應(yīng)用特別有用。例如,可以在單個(gè)位置(例如,服務(wù)器)處對(duì)web應(yīng)用進(jìn)行維護(hù)和更新,從而使具有瀏覽器的任何客戶端可以訪問(wèn)和使用web應(yīng)用。
從傳統(tǒng)的web應(yīng)用用戶界面(UI)僅僅可以由具有對(duì)web應(yīng)用源代碼或者文件的訪問(wèn)的開(kāi)發(fā)人員更改的意義來(lái)說(shuō),該傳統(tǒng)的web應(yīng)用用戶界面(UI)是靜態(tài)的。例如,需要開(kāi)發(fā)人員對(duì)web應(yīng)用UI進(jìn)行硬編碼。在某些情況下,不同的租用者(例如,不同的業(yè)務(wù)實(shí)體或者客戶端)可能期望唯一UI,該唯一UI包括UI導(dǎo)航、過(guò)程或者進(jìn)程的聚組等。為了提供唯一UI,編程人員或者開(kāi)發(fā)人員必須對(duì)代碼進(jìn)行修改,這可能導(dǎo)致用于的新的web應(yīng)用。在某些情況下,在沒(méi)有進(jìn)行大量編碼的情況下,每個(gè)租用者的唯一的外觀和感受也許是可能的。然而,許多租用者想要聚組在一起的不同的過(guò)程、執(zhí)行過(guò)程的不同的順序、通過(guò)web應(yīng)用的不同的導(dǎo)航或者流程、或者web應(yīng)用UI的其它功能的(而非審美的)變化。實(shí)現(xiàn)功能的和導(dǎo)航的變化可能特別昂貴,從而導(dǎo)致更高的托管成本和更高的編程成本。因此,當(dāng)成本高得令人難以承受時(shí),租用者經(jīng)常被開(kāi)發(fā)人員已經(jīng)確定的最能滿足大多數(shù)潛在租用者或者客戶端的需要的UI功能所困。
申請(qǐng)人已經(jīng)認(rèn)識(shí)到,需要對(duì)用于在不需要對(duì)UI修改進(jìn)行硬編碼的情況下生成web應(yīng)用的UI的系統(tǒng)和方法,并且在本文中公開(kāi)了該系統(tǒng)和該方法。本申請(qǐng)公開(kāi)了用于基于元數(shù)據(jù)來(lái)生成web應(yīng)用UI的系統(tǒng)、方法和裝置。根據(jù)一個(gè)實(shí)施例,服務(wù)系統(tǒng)包括主機(jī)組件、元數(shù)據(jù)解釋器、渲染引擎、和響應(yīng)組件。主機(jī)組件被配置為從客戶端接收對(duì)web應(yīng)用的至少一部分的請(qǐng)求。元數(shù)據(jù)解釋器被配置為檢索描述web應(yīng)用的UI的元數(shù)據(jù)。渲染引擎被配置為基于元數(shù)據(jù)來(lái)對(duì)初始屏幕(screen)進(jìn)行渲染。初始屏幕包括供客戶端顯示的屏幕,該屏幕與web應(yīng)用的活動(dòng)有關(guān)。響應(yīng)組件被配置為將元數(shù)據(jù)和初始屏幕發(fā)送至客戶端。
根據(jù)另一實(shí)施例,客戶端系統(tǒng)包括請(qǐng)求組件、接收器組件、顯示組件、和元數(shù)據(jù)解釋器。請(qǐng)求組件被配置為將對(duì)web應(yīng)用的至少一部分的請(qǐng)求發(fā)送至服務(wù)器。接收器組件被配置為接收來(lái)自服務(wù)器的對(duì)請(qǐng)求的響應(yīng)。響應(yīng)包括描述web應(yīng)用的UI的元數(shù)據(jù)和初始屏幕的UI資產(chǎn)。顯示組件被配置為在顯示器上顯示初始屏幕,并且元數(shù)據(jù)解釋器被配置為對(duì)元數(shù)據(jù)進(jìn)行處理,以為web應(yīng)用提供運(yùn)行時(shí)間操作。
通過(guò)參照附圖將最好地理解本公開(kāi)的實(shí)施例,其中,相同的數(shù)字始終指定相同的元素。在以下描述中,提供了許多具體細(xì)節(jié)以透徹地理解本文所描述的實(shí)施例。然而,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,可以省略具體細(xì)節(jié)中的一個(gè)或者多個(gè),或者可以使用其它方法、組件、或者材料。在某些情況下,為了避免使本公開(kāi)的更重要的方面難理解,并未詳細(xì)地示出或者描述了操作。
此外,所描述的特征、操作、或者特性可以按照任何合適的方式組合在一個(gè)或者多個(gè)實(shí)施例中。也很容易理解,可以將結(jié)合所公開(kāi)的實(shí)施例而描述的方法的步驟或者動(dòng)作的順序改變?yōu)閷?duì)本領(lǐng)域的技術(shù)人員顯而易見(jiàn)的。因此,在附圖或者詳細(xì)描述中的任何順序僅僅是說(shuō)明性的,而并不意謂暗示必需的順序,除非指定需要該順序。
實(shí)施例可以包括各種步驟,所述各種步驟可以體現(xiàn)為待由計(jì)算機(jī)系統(tǒng)執(zhí)行的機(jī)器可執(zhí)行指令。計(jì)算機(jī)系統(tǒng)包括一個(gè)或者多個(gè)通用或者專(zhuān)用計(jì)算機(jī)(或者其它電子設(shè)備)。替選地,計(jì)算機(jī)系統(tǒng)可以包括硬件組件,該硬件組件包括用于執(zhí)行步驟的特定邏輯或者包括硬件、軟件、和/或固件的組合。
實(shí)施例還可以被提供為計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)有指令的計(jì)算機(jī)可讀介質(zhì),該指令可以用于對(duì)計(jì)算機(jī)系統(tǒng)或者其它電子設(shè)備進(jìn)行編程,以執(zhí)行本文所描述的過(guò)程。計(jì)算機(jī)可讀介質(zhì)可以包括但不限于:硬盤(pán)驅(qū)動(dòng)器、軟磁碟、光盤(pán)、CD-ROM、DVD-ROM、ROM、RAM、EPROM、EEPROM、磁卡或者光卡、固態(tài)存儲(chǔ)設(shè)備、或者適合于存儲(chǔ)電子指令的其它類(lèi)型的介質(zhì)/計(jì)算機(jī)可讀介質(zhì)。
計(jì)算機(jī)系統(tǒng)和在計(jì)算機(jī)系統(tǒng)中的計(jì)算機(jī)可以經(jīng)由網(wǎng)絡(luò)連接。本文所描述的配置和/或用途的合適的網(wǎng)絡(luò)包括一個(gè)或者多個(gè)局域網(wǎng)、廣域網(wǎng)、城域網(wǎng)、和/或互聯(lián)網(wǎng)或者IP網(wǎng)絡(luò),諸如,萬(wàn)維網(wǎng)、專(zhuān)用互聯(lián)網(wǎng)、安全的互聯(lián)網(wǎng)、增值網(wǎng)絡(luò)、虛擬專(zhuān)用網(wǎng)絡(luò)、外聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)、或者通過(guò)介質(zhì)的物理傳輸與其它機(jī)器通信的甚至獨(dú)立的機(jī)器(所謂的“步行網(wǎng)”)。具體地,合適的網(wǎng)絡(luò)可以由兩個(gè)或者兩個(gè)以上的其它網(wǎng)絡(luò)(包括使用不同的硬件和網(wǎng)絡(luò)通信技術(shù)的網(wǎng)絡(luò))的部分或者全部來(lái)形成。
一個(gè)合適的網(wǎng)絡(luò)包括服務(wù)器和多個(gè)客戶端。其它合適的網(wǎng)絡(luò)可以包含服務(wù)器、客戶端、和/或?qū)Φ裙?jié)點(diǎn)的其它組合,并且給定的計(jì)算機(jī)系統(tǒng)可以同時(shí)充當(dāng)客戶端和服務(wù)器兩者。每個(gè)網(wǎng)絡(luò)包括至少兩個(gè)計(jì)算機(jī)或者計(jì)算機(jī)系統(tǒng),諸如,服務(wù)器和/互客戶端。計(jì)算機(jī)系統(tǒng)可以包括工作站、膝上型計(jì)算機(jī)、可斷開(kāi)連接的移動(dòng)計(jì)算機(jī)、服務(wù)器、大型主機(jī)、集群、所謂的“網(wǎng)絡(luò)計(jì)算機(jī)”或者“瘦客戶端”、平板計(jì)算機(jī)、智能電話、個(gè)人數(shù)字助理或者其它手持式計(jì)算設(shè)備、“智能”消費(fèi)者電子設(shè)備或者電器、醫(yī)療設(shè)備、或者其組合。
網(wǎng)絡(luò)可以包括通信或者組網(wǎng)軟件,諸如,可從Novell、Microsoft、Artisoft和其它供應(yīng)商獲得的軟件,并且可以通過(guò)雙絞線、同軸、或者光纖電纜、電話線、衛(wèi)星、微波中繼器、經(jīng)調(diào)制的AC電源線、物理介質(zhì)傳輸、和/或本領(lǐng)域的技術(shù)人員已知的其它數(shù)據(jù)傳輸“線”,來(lái)通過(guò)使用TCP/IP、SPX、IPX和其它協(xié)議來(lái)操作。
每個(gè)計(jì)算機(jī)系統(tǒng)包括至少一個(gè)處理器和存儲(chǔ)器;計(jì)算機(jī)系統(tǒng)還可以包括各種輸入設(shè)備和/或輸出設(shè)備。處理器可以包括通用設(shè)備,諸如,或者其它“現(xiàn)成的”微處理器。處理器可以包括專(zhuān)用處理設(shè)備,諸如,ASIC、SoC、SiP、FPGA、PAL、PLA、FPLA、PLD、或者其它自定義或者可編程設(shè)備。存儲(chǔ)器可以包括靜態(tài)RAM、動(dòng)態(tài)RAM、閃存、一個(gè)或者多個(gè)觸發(fā)器、ROM、CD-ROM、磁盤(pán)、磁帶、磁存儲(chǔ)器、光學(xué)存儲(chǔ)器、或者其它計(jì)算機(jī)存儲(chǔ)介質(zhì)。輸入設(shè)備可以包括鍵盤(pán)、鼠標(biāo)、觸摸屏、光筆、平板計(jì)算機(jī)、麥克風(fēng)、傳感器、或者具有隨附固件和/或軟件的其它硬件。輸出設(shè)備可以包括監(jiān)視器或者其它顯示器、打印機(jī)、語(yǔ)音或者文本合成器、交換機(jī)、信號(hào)線、或者具有隨附固件和/或軟件的其它硬件。
計(jì)算機(jī)系統(tǒng)可能能夠使用軟盤(pán)驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、光學(xué)驅(qū)動(dòng)器、磁光驅(qū)動(dòng)器、或者其它裝置來(lái)讀取存儲(chǔ)介質(zhì)。合適的存儲(chǔ)介質(zhì)包括具有特定物理配置的磁計(jì)算機(jī)可讀存儲(chǔ)設(shè)備、光學(xué)計(jì)算機(jī)可讀存儲(chǔ)設(shè)備、或者其它計(jì)算機(jī)可讀存儲(chǔ)設(shè)備。合適的存儲(chǔ)設(shè)備包括軟盤(pán)驅(qū)動(dòng)器、硬盤(pán)驅(qū)動(dòng)器、磁帶、CD-ROM、DVD、PROM、RAM、閃存、和其它計(jì)算機(jī)系統(tǒng)存儲(chǔ)設(shè)備。物理配置表示數(shù)據(jù)和指令,該指令使計(jì)算機(jī)系統(tǒng)按照本文所描述的具體的和預(yù)定義的方式操作。
本領(lǐng)域的技術(shù)人員易于通過(guò)使用本文所呈現(xiàn)的教導(dǎo)以及編程語(yǔ)言和工具(諸如Java、Pascal、C++、C、數(shù)據(jù)庫(kù)語(yǔ)言、API、SDK、匯編語(yǔ)言、固件、微代碼、和/或其它語(yǔ)音和工具)來(lái)提供有助于實(shí)現(xiàn)本發(fā)明的合適的軟件。合適的信號(hào)格式可以體現(xiàn)為具有或者不具有錯(cuò)誤檢測(cè)和/或校正位的模擬或者數(shù)字形式、分組報(bào)頭、特定格式的網(wǎng)絡(luò)地址、和/或本領(lǐng)域的技術(shù)人員易于提供的其它支持?jǐn)?shù)據(jù)。
所描述的實(shí)施例的多個(gè)方面將被圖示為軟件模塊或者組件。如本文所使用的,軟件模塊或者組件可以包括位于存儲(chǔ)器設(shè)備內(nèi)的任何類(lèi)型的計(jì)算機(jī)指令或者計(jì)算機(jī)可執(zhí)行代碼。例如,軟件模塊可以包括:計(jì)算機(jī)指令的一個(gè)或者多個(gè)物理或者邏輯塊,該一個(gè)或者多個(gè)物理或者邏輯塊可以被組織成執(zhí)行一個(gè)或者多個(gè)任務(wù)或者實(shí)現(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。
在某些實(shí)施例中,特定軟件模塊可以包括:存儲(chǔ)在共同實(shí)現(xiàn)模塊的所描述的功能的存儲(chǔ)器設(shè)備、不同的存儲(chǔ)器設(shè)備、或者不同的計(jì)算機(jī)中不同的位置處所存儲(chǔ)的不同的指令。事實(shí)上,模塊可以包括單個(gè)指令、或者許多指令,并且可以分布在多個(gè)不同的代碼段上、分布在不同的程序中、并且跨多個(gè)存儲(chǔ)器設(shè)備分布。某些實(shí)施例可以在任務(wù)由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)行。在分布式計(jì)算環(huán)境中,軟件模塊可以位于本地和/或遠(yuǎn)程存儲(chǔ)器存儲(chǔ)器設(shè)備中。另外,在數(shù)據(jù)庫(kù)記錄中被捆綁或者渲染在一起的數(shù)據(jù)可以駐留在相同的存儲(chǔ)器設(shè)備中,或者跨多個(gè)存儲(chǔ)器設(shè)備駐留,或者可以跨網(wǎng)絡(luò)在數(shù)據(jù)庫(kù)中的記錄的字段中被鏈接在一起。
可以根據(jù)本發(fā)明使用的大部分基礎(chǔ)設(shè)施已經(jīng)存在,諸如:通用計(jì)算機(jī)、計(jì)算機(jī)編程工具和技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)和組網(wǎng)技術(shù)、數(shù)字存儲(chǔ)介質(zhì)、認(rèn)證、訪問(wèn)控制、和由公共密鑰、加密、防火墻、和/或其它裝置所提供的其它安全工具和技術(shù)。
圖1是圖示出了用于提供元數(shù)據(jù)驅(qū)動(dòng)UI的系統(tǒng)100的示意圖。系統(tǒng)100包括通過(guò)網(wǎng)絡(luò)106通信的服務(wù)器系統(tǒng)102和客戶端104。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)106可以包括多個(gè)網(wǎng)絡(luò),該多個(gè)網(wǎng)絡(luò)包括局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、互聯(lián)網(wǎng)、或者另一網(wǎng)絡(luò)或者通信連接中的一個(gè)或者多個(gè)。在一個(gè)實(shí)施例中,系統(tǒng)100可以用于為web應(yīng)用提供元數(shù)據(jù)驅(qū)動(dòng)UI,其中,UI的行為是基于元數(shù)據(jù)而生成的。
服務(wù)器系統(tǒng)102可以包括托管web應(yīng)用的計(jì)算設(shè)備或者計(jì)算系統(tǒng)。服務(wù)器系統(tǒng)102可以包括可以由一個(gè)或者多個(gè)客戶端104通過(guò)網(wǎng)絡(luò)106訪問(wèn)的機(jī)架式服務(wù)器或者其它計(jì)算設(shè)備。例如,服務(wù)器系統(tǒng)102可以通過(guò)互聯(lián)網(wǎng)訪問(wèn)。在一個(gè)實(shí)施例中,服務(wù)器系統(tǒng)102在允許訪問(wèn)web應(yīng)用之前需要進(jìn)行授權(quán)。
在一個(gè)實(shí)施例中,服務(wù)器系統(tǒng)102存儲(chǔ)關(guān)于web應(yīng)用的信息,包括編程代碼、描述web應(yīng)用的UI的元數(shù)據(jù)等。在一個(gè)實(shí)施例中,服務(wù)器系統(tǒng)102存儲(chǔ)元數(shù)據(jù)解釋器的代碼,該元數(shù)據(jù)解釋器可以對(duì)元數(shù)據(jù)進(jìn)行解釋以生成代碼,諸如,可以由web瀏覽器解釋的代碼。服務(wù)器系統(tǒng)102也可以存儲(chǔ)用于渲染引擎的代碼,該渲染引擎可以渲染可視顯示元素(諸如UI資產(chǎn))以便顯示屏幕或web應(yīng)用的其它可視界面。服務(wù)器系統(tǒng)102可以響應(yīng)于來(lái)自客戶端104的對(duì)web應(yīng)用的請(qǐng)求來(lái)將與web應(yīng)用相對(duì)應(yīng)的代碼、元數(shù)據(jù)等提供至客戶端104。在一個(gè)實(shí)施例中,服務(wù)器系統(tǒng)102可以對(duì)web應(yīng)用的初始屏幕進(jìn)行渲染,以加速在客戶端104處對(duì)初始屏幕的顯示。
客戶端104可以包括可以訪問(wèn)服務(wù)器系統(tǒng)102的任何類(lèi)型的計(jì)算設(shè)備或者系統(tǒng)。例如,客戶端104可以包括膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、平板計(jì)算機(jī)、智能電話、上網(wǎng)本、或者能夠訪問(wèn)計(jì)算機(jī)網(wǎng)絡(luò)的任何其它計(jì)算設(shè)備。在一個(gè)實(shí)施例中,客戶端104包括用于訪問(wèn)網(wǎng)站和執(zhí)行web應(yīng)用的瀏覽器。在一個(gè)實(shí)施例中,客戶端104可以接收來(lái)自在客戶端104的瀏覽器內(nèi)執(zhí)行的服務(wù)器系統(tǒng)102的與web應(yīng)用相對(duì)應(yīng)的元數(shù)據(jù)、代碼或者其它信息。在一個(gè)實(shí)施例中,元數(shù)據(jù)解釋器和/或渲染引擎的實(shí)例可以位于客戶端104和服務(wù)器系統(tǒng)102上。多個(gè)客戶端104或許能夠連接至服務(wù)器系統(tǒng)102并且訪問(wèn)該服務(wù)器系統(tǒng)102。
圖2是用于向web應(yīng)用提供元數(shù)據(jù)驅(qū)動(dòng)UI的服務(wù)器系統(tǒng)102的示意框圖。服務(wù)器系統(tǒng)102包括主機(jī)組件202、元數(shù)據(jù)解釋器204、渲染引擎206、響應(yīng)組件208、web應(yīng)用UI元數(shù)據(jù)存儲(chǔ)210、和核心活動(dòng)類(lèi)型存儲(chǔ)212。組件202-212以舉例的方式給定并且可能并不是所有都被包括在所有實(shí)施例中。
主機(jī)組件202被配置為從客戶端接收對(duì)web應(yīng)用的至少一部分的請(qǐng)求。例如,主機(jī)組件202可以響應(yīng)于用戶鍵入或者選擇與由服務(wù)器系統(tǒng)102托管的web應(yīng)用相對(duì)應(yīng)的統(tǒng)一資源定位符(URL)來(lái)接收請(qǐng)求。請(qǐng)求可以指示特定的web應(yīng)用或者功能。請(qǐng)求可以包括指示客戶端104或者用戶的身份的信息。例如,請(qǐng)求可以指示客戶端104所對(duì)應(yīng)的租用者或者實(shí)體。在一個(gè)實(shí)施例中,主機(jī)組件202可以確定請(qǐng)求是否是對(duì)web應(yīng)用的初始請(qǐng)求。例如,主機(jī)組件202可以基于客戶端104是否正在請(qǐng)求整個(gè)應(yīng)用或者僅僅請(qǐng)求web應(yīng)用的資源或者資產(chǎn),來(lái)確定請(qǐng)求包括初始請(qǐng)求。在一個(gè)實(shí)施例中,請(qǐng)求可以指示請(qǐng)求是否是初始請(qǐng)求或者可以指示web應(yīng)用在客戶端104處的當(dāng)前狀態(tài)。例如,請(qǐng)求可以指示web應(yīng)用當(dāng)前在客戶端104處處于特定狀態(tài)(例如,對(duì)特定活動(dòng)進(jìn)行處理)。
在一個(gè)實(shí)施例中,主機(jī)組件202可以確定將web應(yīng)用的哪部分發(fā)送至客戶端104。例如,響應(yīng)于對(duì)web應(yīng)用的一般請(qǐng)求,主機(jī)組件202可以確定應(yīng)該將整個(gè)web應(yīng)用(和任何關(guān)聯(lián)的元數(shù)據(jù)或者代碼)發(fā)送至客戶端104。在一個(gè)實(shí)施例中,請(qǐng)求可以指示正在被請(qǐng)求的web應(yīng)用的特定活動(dòng)或者過(guò)程。在一個(gè)實(shí)施例中,如下面將討論的,主機(jī)組件202支持“深度鏈接”,其中,用戶可以請(qǐng)求與在活動(dòng)層級(jí)內(nèi)的活動(dòng)相關(guān)聯(lián)的資源或者活動(dòng)。例如,用戶的所請(qǐng)求的URL的本地路徑可以表示描述用戶在UI流程內(nèi)的位置、或者在UI流程內(nèi)的預(yù)期起始點(diǎn)的活動(dòng)層級(jí)。主機(jī)組件202可以確定:如果所請(qǐng)求的活動(dòng)需要與在活動(dòng)層級(jí)中的根活動(dòng)相對(duì)應(yīng)的某些信息,也可以將其發(fā)送至客戶端104(例如,如到對(duì)應(yīng)的子活動(dòng)的URL路徑所指示的)。
元數(shù)據(jù)解釋器204被配置為檢索和/或解釋與web應(yīng)用相對(duì)應(yīng)的元數(shù)據(jù)。在一個(gè)實(shí)施例中,元數(shù)據(jù)解釋器204檢索與所請(qǐng)求的web應(yīng)用相對(duì)應(yīng)的元數(shù)據(jù)。例如,每個(gè)web應(yīng)用可以具有描述web應(yīng)用的UI的相對(duì)應(yīng)的元數(shù)據(jù)。元數(shù)據(jù)包括關(guān)于數(shù)據(jù)的數(shù)據(jù),或者更具體地,在一個(gè)實(shí)施例中,包括與所請(qǐng)求的web應(yīng)用的UI有關(guān)的聲明信息。元數(shù)據(jù)可以包括所需格式的參數(shù)或者數(shù)據(jù)。元數(shù)據(jù)的示例數(shù)據(jù)格式包括JavaScript對(duì)象符號(hào)(JSON)格式、可擴(kuò)展標(biāo)記語(yǔ)言(XML)格式、逗號(hào)分隔值(CSV)格式、或者其它數(shù)據(jù)或者元數(shù)據(jù)格式。在一個(gè)實(shí)施例中,元數(shù)據(jù)格式不包括可由瀏覽器讀取的格式或者代碼語(yǔ)言。例如,為了獲得可以由客戶端104執(zhí)行的代碼,需要對(duì)元數(shù)據(jù)進(jìn)行檢索和解釋/轉(zhuǎn)換。
元數(shù)據(jù)可以被存儲(chǔ)在web應(yīng)用UI元數(shù)據(jù)存儲(chǔ)210中并且從該web應(yīng)用UI元數(shù)據(jù)存儲(chǔ)210中檢索到。在一個(gè)實(shí)施例中,元數(shù)據(jù)指示運(yùn)行時(shí)間操作或者web應(yīng)用的運(yùn)行時(shí)間操作的順序,并且web應(yīng)用包括元數(shù)據(jù)驅(qū)動(dòng)的運(yùn)行時(shí)間。例如,元數(shù)據(jù)在運(yùn)行期間可以用于動(dòng)態(tài)地生成屏幕、確定接下來(lái)應(yīng)該執(zhí)行哪個(gè)過(guò)程等。在一個(gè)實(shí)施例中,web應(yīng)用包括動(dòng)態(tài)生成的UI,其中,UI界面是基于元數(shù)據(jù)而生成的。在一個(gè)實(shí)施例中,元數(shù)據(jù)在web應(yīng)用的UI內(nèi)定義所允許的導(dǎo)航。例如,元數(shù)據(jù)可以指示待執(zhí)行的下一個(gè)過(guò)程和/或該過(guò)程需要來(lái)自用戶的哪一種輸入。
在一個(gè)實(shí)施例中,元數(shù)據(jù)解釋器204可以檢索特定于客戶端104的元數(shù)據(jù)。例如,來(lái)自客戶端104的請(qǐng)求可以指示相對(duì)應(yīng)的租用者,并且元數(shù)據(jù)解釋器204可以檢查是否存在租用者的任何自定義元數(shù)據(jù)。在某些實(shí)施例中,可以以每個(gè)租用者為基礎(chǔ)來(lái)對(duì)工作流程和活動(dòng)配置進(jìn)行修改,以為每個(gè)租用者提供自定義UI外觀和行為。服務(wù)器系統(tǒng)102可以將修改作為獨(dú)立元數(shù)據(jù)存儲(chǔ)在web應(yīng)用UI元數(shù)據(jù)存儲(chǔ)210內(nèi)。一旦相關(guān)UI元數(shù)據(jù)已經(jīng)由元數(shù)據(jù)解釋器204所識(shí)別,就可以在對(duì)特定于租用者的任何修改進(jìn)行處理之前將其應(yīng)用于默認(rèn)UI元數(shù)據(jù)。利用客戶端特定的元數(shù)據(jù)來(lái)對(duì)默認(rèn)元數(shù)據(jù)進(jìn)行修改可以允許在不重新部署或者重新啟動(dòng)web應(yīng)用的情況下,以每個(gè)租用者為基礎(chǔ)來(lái)改變web應(yīng)用的整個(gè)UI。組合的或者修改后的元數(shù)據(jù)然后可以由響應(yīng)組件208提供至客戶端104,或者可以提供至瀏覽器或者渲染引擎206以生成UI。
元數(shù)據(jù)解釋器204可以對(duì)元數(shù)據(jù)進(jìn)行解釋?zhuān)陨射秩疽?06可以用來(lái)生成針對(duì)瀏覽器的視覺(jué)屏幕以控制web應(yīng)用的操作或者web應(yīng)用的UI的代碼或者信息。在一個(gè)實(shí)施例中,元數(shù)據(jù)包括指示在web應(yīng)用內(nèi)的一個(gè)或者多個(gè)活動(dòng)或者活動(dòng)類(lèi)型的信息。如本文所使用的,給定術(shù)語(yǔ)活動(dòng)以意謂表示web應(yīng)用的離散部分(諸如web應(yīng)用的UI)的元數(shù)據(jù)。例如,活動(dòng)可以用于表示接收來(lái)自用戶的輸入的形式、圖表或者圖形、對(duì)服務(wù)的調(diào)用、呈現(xiàn)待查看/編輯的記錄的列表的操作、執(zhí)行布爾(Boolean)邏輯的操作、或者其它操作。每個(gè)活動(dòng)與活動(dòng)類(lèi)型相對(duì)應(yīng)?;顒?dòng)類(lèi)型與負(fù)責(zé)執(zhí)行該類(lèi)型的活動(dòng)的類(lèi)別或者模塊捆綁在一起?;顒?dòng)也可組合為每個(gè)活動(dòng)可以包含子活動(dòng)。例如,任何類(lèi)型的活動(dòng)可以包括或者參考任何其它類(lèi)型的活動(dòng)。
在一個(gè)實(shí)施例中,與核心活動(dòng)類(lèi)型有關(guān)的信息可以包括在核心活動(dòng)類(lèi)型存儲(chǔ)212中。在一個(gè)實(shí)施例中,可以由任何web應(yīng)用使用的多個(gè)內(nèi)置活動(dòng)類(lèi)型可以用系統(tǒng)來(lái)建立并且由核心活動(dòng)類(lèi)型存儲(chǔ)212存儲(chǔ)。可以作為核心活動(dòng)類(lèi)型包括的某些示例活動(dòng)類(lèi)型包括工作流程活動(dòng)類(lèi)型、步驟活動(dòng)類(lèi)型、列表活動(dòng)類(lèi)型、“組成”活動(dòng)類(lèi)型、“如果”活動(dòng)類(lèi)型、應(yīng)用活動(dòng)類(lèi)型、模式活動(dòng)類(lèi)型、和防護(hù)活動(dòng)類(lèi)型。該列表僅僅是以舉例的方式給定并且在不同的實(shí)施例中可以被顯著地修改。
工作流程活動(dòng)類(lèi)型是用于進(jìn)行順序流程控制的活動(dòng)。工作流程可以包括多個(gè)步驟活動(dòng)類(lèi)型。每個(gè)步驟活動(dòng)類(lèi)型可以包括在工作流程內(nèi)的活動(dòng)的邏輯分組。步驟活動(dòng)可用于顯示用戶在工作流程內(nèi)的進(jìn)度。每個(gè)步驟活動(dòng)由一個(gè)或者多個(gè)活動(dòng)組成。在一個(gè)實(shí)施例中,在步驟活動(dòng)中的至少一個(gè)活動(dòng)按照慣例具有可視組件,并且因此可以表示在UI導(dǎo)航流程中的離散點(diǎn)。例如,請(qǐng)求可以指示客戶端104在web應(yīng)用中希望跳過(guò)的工作流程的任何特定步驟活動(dòng)。
列表活動(dòng)類(lèi)型是將記錄列表呈現(xiàn)給用戶并且允許用戶對(duì)記錄進(jìn)行編輯的活動(dòng)。例如,可以在屏幕上呈現(xiàn)可視列表,并且用戶可以提供輸入,以對(duì)列表中的條目進(jìn)行修改、刪除條目、添加條目、對(duì)列表進(jìn)行重新排列等。
組成活動(dòng)類(lèi)型允許用戶或者開(kāi)發(fā)人員創(chuàng)建由多個(gè)活動(dòng)組成的活動(dòng)。在一個(gè)實(shí)施例中,組成活動(dòng)的配置指定主要活動(dòng)、包括待在主要活動(dòng)之前執(zhí)行的一個(gè)或者多個(gè)活動(dòng)的列表的“之前”屬性、和/或包含待在主要活動(dòng)之后執(zhí)行的一個(gè)或者多個(gè)活動(dòng)的列表的“之后”屬性。組成活動(dòng)允許待與具有可視組件的活動(dòng)(諸如,表格活動(dòng))綁定在一起的任意的之前和之后操作。在一個(gè)實(shí)施例中,可能需要主要活動(dòng)包括可視組件,并且可能限制在之前和之間部分中列出的活動(dòng)具有可視組件。
如果活動(dòng)類(lèi)型允許用戶創(chuàng)建分支邏輯。在一個(gè)實(shí)施例中,如果活動(dòng)的配置指定一種表達(dá),即,“then(那么)”活動(dòng),并且可選地為“else(否則)”活動(dòng)。當(dāng)進(jìn)行評(píng)估時(shí),表達(dá)產(chǎn)生布爾(Boolean)值(例如,真或者假)。當(dāng)執(zhí)行如果活動(dòng)時(shí),對(duì)表達(dá)進(jìn)行評(píng)估。如果將表達(dá)評(píng)估為真的布爾(Boolean)值,那么執(zhí)行then活動(dòng)。如果將表達(dá)評(píng)估為假的布爾(Boolean)值,那么執(zhí)行else活動(dòng),即使已經(jīng)指定了一個(gè)。
應(yīng)用活動(dòng)類(lèi)型可以用于非順序流程控制。應(yīng)用活動(dòng)的示例是表格布局,其中,在應(yīng)用活動(dòng)的配置中列出的每個(gè)活動(dòng)與可視選項(xiàng)卡相對(duì)應(yīng)。當(dāng)用戶選擇了可視組件時(shí),可以執(zhí)行與選項(xiàng)卡相對(duì)應(yīng)的子活動(dòng)。要注意,應(yīng)用活動(dòng)和web應(yīng)用并不是一回事,該web應(yīng)用指可以利用元數(shù)據(jù)驅(qū)動(dòng)UI框架來(lái)實(shí)現(xiàn)其UI的首要應(yīng)用。
模式活動(dòng)類(lèi)型可以用于執(zhí)行單個(gè)子活動(dòng)并且在模式對(duì)話框中對(duì)其進(jìn)行渲染。因?yàn)榛顒?dòng)可以包含任意的子活動(dòng)層級(jí),所以模式活動(dòng)可以用于模式地呈現(xiàn)復(fù)雜的UI組件。
防護(hù)活動(dòng)包含無(wú)法移動(dòng)的活動(dòng)。例如,防護(hù)活動(dòng)類(lèi)型可以包含檢查是否已經(jīng)接收到來(lái)自用戶的所需信息的非可視活動(dòng)。例如,防護(hù)活動(dòng)可以跟隨收集來(lái)自用戶的數(shù)據(jù)輸入的表格活動(dòng)。在用戶選擇了關(guān)于表格活動(dòng)的下一個(gè)選項(xiàng)之后,防護(hù)活動(dòng)可以執(zhí)行以確定是否已經(jīng)提供了所有所需的信息。如果防護(hù)活動(dòng)確定已經(jīng)錄入了所有所需的信息,那么防護(hù)活動(dòng)可以允許客戶端104在web應(yīng)用中繼續(xù)下一個(gè)活動(dòng)。如果防護(hù)活動(dòng)確定還未提供某些所需的信息,那么防護(hù)活動(dòng)可以阻止前進(jìn)導(dǎo)航并且在表格上提供需要填寫(xiě)哪些域或者需要選擇哪些選項(xiàng)的指示。
表格活動(dòng)類(lèi)型可以定義呈現(xiàn)給用戶的可視表格。表格活動(dòng)的配置可以指示用戶可以提供輸入的一個(gè)或者多個(gè)域。示例域包括復(fù)選框、單選按鈕、下拉列表、文本域等。在一個(gè)實(shí)施例中,活動(dòng)可以用作域類(lèi)型。例如,域可以與另一活動(dòng)相對(duì)應(yīng)。表格活動(dòng)可以用于接受來(lái)自用戶的輸入,以供web應(yīng)用使用或者進(jìn)行存儲(chǔ)。
如上所述,上述活動(dòng)類(lèi)型僅僅以舉例的方式給定。特定應(yīng)用可以分別具有多個(gè)活動(dòng),該多個(gè)活動(dòng)具有其它活動(dòng)類(lèi)型,該其它活動(dòng)類(lèi)型在應(yīng)用內(nèi)提供預(yù)期功能和操作。除了核心或者內(nèi)置活動(dòng)類(lèi)型之外,允許用戶或者開(kāi)發(fā)人員是活動(dòng)擴(kuò)展或者創(chuàng)建自定義活動(dòng)類(lèi)型。例如,web應(yīng)用開(kāi)發(fā)人員可以創(chuàng)建其自己的自定義活動(dòng)類(lèi)型。自定義活動(dòng)類(lèi)型可以是完全新的或者可以對(duì)預(yù)先存在的活動(dòng)類(lèi)型進(jìn)行擴(kuò)展。在一個(gè)實(shí)施例中,開(kāi)發(fā)人員可以創(chuàng)建應(yīng)用于預(yù)先存在的活動(dòng)類(lèi)型的擴(kuò)展。在不修改底層代碼的情況下,這使開(kāi)發(fā)人員能夠自定義庫(kù)存活動(dòng)類(lèi)型的行為。在一個(gè)實(shí)施例中,使現(xiàn)有活動(dòng)類(lèi)型擴(kuò)展是通過(guò)定義用于重寫(xiě)經(jīng)擴(kuò)展活動(dòng)類(lèi)型的行為的新的元數(shù)據(jù)和代碼來(lái)完成的。在一個(gè)實(shí)施例中,可以特定于租用者存儲(chǔ)經(jīng)擴(kuò)展活動(dòng)類(lèi)型或者自定義活動(dòng)類(lèi)型。例如,如果創(chuàng)建與租用者有關(guān)的新的活動(dòng)類(lèi)型,那么可以分開(kāi)存儲(chǔ)新的活動(dòng)類(lèi)型和任何相對(duì)應(yīng)的代碼,從而僅僅使用與特定租用者有關(guān)的活動(dòng)類(lèi)型。
在一個(gè)實(shí)施例中,每個(gè)活動(dòng)參考活動(dòng)類(lèi)型。在一個(gè)實(shí)施例中,活動(dòng)類(lèi)型是包含待由系統(tǒng)執(zhí)行以執(zhí)行該類(lèi)型的活動(dòng)的代碼的模塊?;顒?dòng)類(lèi)型可以公開(kāi)可以用于對(duì)活動(dòng)類(lèi)型的代碼的行為進(jìn)行修改的一個(gè)或者多個(gè)輸入屬性?;顒?dòng)提供至這些輸入屬性的值被統(tǒng)稱(chēng)為活動(dòng)的配置?;顒?dòng)的配置是活動(dòng)元數(shù)據(jù)的部分。在一個(gè)實(shí)施例中,在沒(méi)有明確地包括數(shù)據(jù)作為元數(shù)據(jù)的部分的情況下,元數(shù)據(jù)可以參考該數(shù)據(jù)作為活動(dòng)的輸入。如果該類(lèi)型的活動(dòng)(例如,元數(shù)據(jù))不定義其自己的配置,活動(dòng)類(lèi)型可以定義要在事件中使用的默認(rèn)配置。
每個(gè)活動(dòng)表示應(yīng)該由系統(tǒng)執(zhí)行的操作。通常,活動(dòng)包括指示系統(tǒng)生成UI資產(chǎn)并且將其提交給瀏覽器的可視組件。然而,活動(dòng)可以表示不具有可視組件的操作,諸如,調(diào)用服務(wù)和存儲(chǔ)響應(yīng)。
用戶的通過(guò)UI的導(dǎo)航被稱(chēng)為流程。在一個(gè)實(shí)施例中,元數(shù)據(jù)響應(yīng)于用戶事件,通過(guò)確定執(zhí)行哪一個(gè)活動(dòng)來(lái)控制用戶的通過(guò)系統(tǒng)的流程。某些活動(dòng)類(lèi)型特別設(shè)計(jì)為控制用戶的通過(guò)UI的流程。這些流程控制活動(dòng)的某些示例是工作流程活動(dòng)、應(yīng)用活動(dòng)、列表活動(dòng)、模式活動(dòng)、和防護(hù)活動(dòng)。當(dāng)用戶觸發(fā)需要導(dǎo)航的UI事件時(shí),活動(dòng)流程控制活動(dòng)將確定接下來(lái)執(zhí)行哪一個(gè)活動(dòng)。例如,如果將給定UI定義為具有子表格活動(dòng)序列的工作流程活動(dòng),那么執(zhí)行在序列中的第一表格活動(dòng),這依次將表格的可視表示呈現(xiàn)給用戶。如果用戶觸發(fā)UI事件提交表格,那么一旦已經(jīng)對(duì)表格進(jìn)行了處理,第一表格活動(dòng)就可以用信號(hào)通知其執(zhí)行完成。此時(shí),工作流程活動(dòng)可以執(zhí)行在序列中的第二表格活動(dòng)等。
活動(dòng)還可以具有響應(yīng)于UI事件而觸發(fā)的但是不構(gòu)成UI導(dǎo)航的一個(gè)或者多個(gè)活動(dòng)。在一個(gè)實(shí)施例中,活動(dòng)類(lèi)型可以定義默認(rèn)動(dòng)作,但是可以重寫(xiě)活動(dòng)的動(dòng)作?;顒?dòng)的動(dòng)作可以執(zhí)行另一活動(dòng)。
在一個(gè)實(shí)施例中,具有可視組件(諸如表格活動(dòng))的每個(gè)活動(dòng)表示在UI流程中的離散點(diǎn)。執(zhí)行不具有可視組件的活動(dòng),但是可以不使導(dǎo)航停止。例如,假設(shè)將給定UI定義為具有兩個(gè)子活動(dòng)的工作流程活動(dòng):表格活動(dòng)、以及被配置為執(zhí)行之前服務(wù)活動(dòng)并且然后執(zhí)行主要表格活動(dòng)的組成活動(dòng)。在一個(gè)實(shí)施例中,當(dāng)首先執(zhí)行工作流程活動(dòng)時(shí),執(zhí)行子表格活動(dòng),這依次將表格的可視表示呈現(xiàn)給用戶并且使導(dǎo)航操作停止。如果用戶觸發(fā)UI事件以提交表格,那么一旦已經(jīng)對(duì)表格進(jìn)行了處理,第一表格活動(dòng)就可以用信號(hào)通知其執(zhí)行完成。此時(shí),工作流程活動(dòng)將執(zhí)行子組成活動(dòng)。組成活動(dòng)將首先執(zhí)行之前服務(wù)活動(dòng)。因?yàn)榉?wù)活動(dòng)不具有可視組件,所以其執(zhí)行將不會(huì)使導(dǎo)航操作停止。組成活動(dòng)然后執(zhí)行主要表格活動(dòng),這依次將表格的可視表示呈現(xiàn)給用戶并且使導(dǎo)航操作停止。
如基于本公開(kāi)所理解的,元數(shù)據(jù)和活動(dòng)可以創(chuàng)建控制UI和web應(yīng)用的操作的活動(dòng)的層級(jí)。例如,根層級(jí)可以與web應(yīng)用的開(kāi)始界面或者屏幕相對(duì)應(yīng),并且子活動(dòng)可以形成分支層級(jí),其中,某些活動(dòng)從屬于其它活動(dòng)。在一個(gè)實(shí)施例中,組合活動(dòng)的靈活性?xún)H僅基于元數(shù)據(jù)來(lái)允許web應(yīng)用的UI的復(fù)雜變化。因此,在不修改或者創(chuàng)建代碼的情況下,用戶可以定義復(fù)雜的UI導(dǎo)航和流程。
圖4圖示出了web應(yīng)用UI的示例活動(dòng)層級(jí)400。層級(jí)400包括可以在web應(yīng)用期間執(zhí)行的多個(gè)可視活動(dòng)404-406。層級(jí)400可以由元數(shù)據(jù)定義。層級(jí)400包括根活動(dòng)、活動(dòng)A 402、和子活動(dòng),該子活動(dòng)包括活動(dòng)B 404、活動(dòng)C 406、和活動(dòng)D 408。在一個(gè)實(shí)施例中,元數(shù)據(jù)可以定義包括配置信息的活動(dòng)A 402的配置,該配置信息指示活動(dòng)B 404、活動(dòng)C 406、和活動(dòng)D 408是活動(dòng)A 402的子活動(dòng)。活動(dòng)B 404的元數(shù)據(jù)配置可以將子活動(dòng)定義為活動(dòng)E 410和活動(dòng)F 412。相似地,活動(dòng)E 410的元數(shù)據(jù)配置可以定義子活動(dòng)H 416,并且活動(dòng)C 406的元數(shù)據(jù)配置可以定義子活動(dòng)G 414。因此,元數(shù)據(jù)可以允許用戶基于元數(shù)據(jù)來(lái)指定層級(jí),包括UI導(dǎo)航或者流程。例如,一個(gè)租用者可能期望活動(dòng)G作為活動(dòng)H的子活動(dòng)被執(zhí)行,并且可以指定元數(shù)據(jù)以做出這種變化。因此,租用者可以獲得預(yù)期的自定義UI,然而,其它租用者將不會(huì)看到這種變化。重新回到圖2,元數(shù)據(jù)解釋器204可以通過(guò)檢索與元數(shù)據(jù)相對(duì)應(yīng)的代碼來(lái)對(duì)元數(shù)據(jù)進(jìn)行解釋。例如,元數(shù)據(jù)解釋器204可以檢索與活動(dòng)類(lèi)型相對(duì)應(yīng)的代碼。元數(shù)據(jù)解釋器204可以將代碼、和用于活動(dòng)的元數(shù)據(jù)來(lái)定義的任何參數(shù)(即,活動(dòng)配置)提供至瀏覽器或者渲染引擎206,以供處理或者執(zhí)行。在一個(gè)實(shí)施例中,元數(shù)據(jù)解釋器204可以獲得由默認(rèn)活動(dòng)類(lèi)型所指示的當(dāng)前活動(dòng)的代碼,以對(duì)元數(shù)據(jù)進(jìn)行修改,從而對(duì)默認(rèn)活動(dòng)類(lèi)型、和/或自定義活動(dòng)類(lèi)型進(jìn)行修改。例如,在確定應(yīng)該針對(duì)活動(dòng)檢索什么代碼之前,可以將默認(rèn)元數(shù)據(jù)與租客特定的元數(shù)據(jù)進(jìn)行組合。
根據(jù)一個(gè)實(shí)施例,由元數(shù)據(jù)所指定的每個(gè)活動(dòng)在web應(yīng)用操作期間可以包括兩個(gè)階段:設(shè)置階段和運(yùn)行時(shí)間階段。設(shè)置階段可以包括:元數(shù)據(jù)解釋器204檢索元數(shù)據(jù)、獲得與元數(shù)據(jù)相對(duì)應(yīng)的代碼、并且針對(duì)代碼獲得輸入,而運(yùn)行時(shí)間階段可以包括:基于任何輸入來(lái)執(zhí)行代碼。在一個(gè)實(shí)施例中,元數(shù)據(jù)解釋器204可以以逐個(gè)活動(dòng)為基礎(chǔ)來(lái)對(duì)元數(shù)據(jù)進(jìn)行處理。例如,元數(shù)據(jù)解釋器204僅僅可以檢索當(dāng)前活動(dòng)或者跟隨當(dāng)前活動(dòng)的多達(dá)預(yù)定數(shù)目的活動(dòng)的代碼??梢詫z索到的代碼提供至渲染引擎或者web應(yīng)用,以進(jìn)行顯示/執(zhí)行。例如,當(dāng)在服務(wù)器系統(tǒng)102中時(shí),可以將檢索到的代碼提供至渲染引擎206,但是可以不在服務(wù)器系統(tǒng)102的顯示器上對(duì)其進(jìn)行渲染。
渲染引擎206被配置為將由元數(shù)據(jù)解釋器204檢索到的元數(shù)據(jù)和/或其它信息轉(zhuǎn)換為UI資產(chǎn),以顯示為UI界面的屏幕的部分。UI資產(chǎn)可以包括可以由瀏覽器解釋的信息或者代碼。由渲染引擎206所生成的UI資產(chǎn)可以包括標(biāo)記,諸如,遵守超文本標(biāo)記語(yǔ)音(HTML)協(xié)議的文本或者符號(hào)。UI資產(chǎn)還可以包括可以由瀏覽器解釋的代碼,諸如,JavaScript。UI資產(chǎn)可以包括資源文件或者對(duì)資源文件(諸如圖像文件、文本文件、視頻文件、音頻文件、或者其它文件)的引用,以顯示為網(wǎng)頁(yè)或者界面的部分。
為了對(duì)UI進(jìn)行渲染,系統(tǒng)對(duì)UI元數(shù)據(jù)進(jìn)行顯示,并且動(dòng)態(tài)地生成必要的UI資產(chǎn)(例如,標(biāo)記、代碼、和對(duì)資源文件的引用),并且將其提供至用戶的瀏覽器以進(jìn)行處理。在一個(gè)實(shí)施例中,渲染引擎206基于由元數(shù)據(jù)解釋器204檢索到的元數(shù)據(jù)或者代碼來(lái)對(duì)屏幕進(jìn)行渲染。
根據(jù)一個(gè)實(shí)施例,渲染引擎206的實(shí)例既在服務(wù)器系統(tǒng)102上運(yùn)行,又在客戶端104的web瀏覽器中運(yùn)行。當(dāng)用戶將第一請(qǐng)求提交給主機(jī)的服務(wù)器時(shí),在主機(jī)的服務(wù)器上運(yùn)行的渲染引擎206執(zhí)行對(duì)初始屏幕的渲染。然后,響應(yīng)于用戶的請(qǐng)求,將所生成的UI資產(chǎn)連同應(yīng)用的UI元數(shù)據(jù)一起發(fā)送至用戶的瀏覽器。在某些情況下,沒(méi)有進(jìn)一步與主機(jī)的服務(wù)器通信是必要的。在客戶端的瀏覽器內(nèi)運(yùn)行的渲染引擎206可以對(duì)任何剩余屏幕的UI元數(shù)據(jù)進(jìn)行渲染,并且將所生成的UI資產(chǎn)提供至瀏覽器。在服務(wù)器上對(duì)初始屏幕進(jìn)行渲染,從而在瀏覽器已經(jīng)完成對(duì)響應(yīng)進(jìn)行處理之后就立刻向用戶呈現(xiàn)可見(jiàn)內(nèi)容。如果在瀏覽器處未對(duì)初始屏幕進(jìn)行渲染,那么可以向用戶呈現(xiàn)空白屏幕,直到客戶端側(cè)渲染引擎對(duì)初始屏幕的UI元數(shù)據(jù)進(jìn)行處理。因此,可以更快速地顯示初始屏幕,因?yàn)榭蛻舳?04不需要等待元數(shù)據(jù)解釋器204和/或渲染引擎206來(lái)生成屏幕的UI資產(chǎn)。在一個(gè)實(shí)施例中,服務(wù)器系統(tǒng)102的渲染引擎206響應(yīng)于主機(jī)組件202確定請(qǐng)求是web應(yīng)用的初始請(qǐng)求,來(lái)對(duì)初始屏幕進(jìn)行渲染。在一個(gè)實(shí)施例中,可以在客戶端104處對(duì)其它屏幕進(jìn)行渲染。
在一個(gè)實(shí)施例中,初始屏幕是將在初始可視呈現(xiàn)中具有部分的所有活動(dòng)的組合。例如,如果第一活動(dòng)的活動(dòng)配置是定義多個(gè)表格活動(dòng)的序列的工作流程活動(dòng),那么初始屏幕將包括工作流程外殼(控件、標(biāo)題、文本)連同在序列中的第一表格活動(dòng)的可視表示。
在一個(gè)實(shí)施例中,每個(gè)活動(dòng)配置(如用元數(shù)據(jù)所定義的)指示將向用戶呈現(xiàn)什么可視組件。在一個(gè)實(shí)施例中,通過(guò)遞歸地導(dǎo)航活動(dòng)的子活動(dòng)層級(jí)并且為完整活動(dòng)樹(shù)建立可視場(chǎng)境,來(lái)確定活動(dòng)的當(dāng)前狀態(tài)的可視表示。然后,可以對(duì)結(jié)果可視場(chǎng)境進(jìn)行渲染,以創(chuàng)建提交給瀏覽器的UI資產(chǎn)。例如,渲染引擎206可以被配置為:通過(guò)遞歸地評(píng)估活動(dòng)和任何子活動(dòng)以為屏幕建立可視場(chǎng)境并且響應(yīng)于完成建立可視場(chǎng)境來(lái)顯示屏幕,來(lái)對(duì)UI的屏幕進(jìn)行渲染,
遞歸地建立可視場(chǎng)境并且對(duì)其進(jìn)行一次渲染的該技術(shù)通常比對(duì)每個(gè)子活動(dòng)進(jìn)行遞歸渲染更快,因?yàn)閮H僅對(duì)瀏覽器的文檔對(duì)象模型(DOM)更新一次。如果單獨(dú)地對(duì)子活動(dòng)進(jìn)行渲染,那么將觸發(fā)對(duì)瀏覽器的DOM進(jìn)行多次更新,這將明顯減慢渲染。渲染引擎206被配置為通過(guò)生成與初始屏幕相對(duì)應(yīng)的UI資產(chǎn)來(lái)對(duì)初始屏幕進(jìn)行渲染,以供客戶端顯示。
響應(yīng)組件208被配置為將包括與所請(qǐng)求的web應(yīng)用相對(duì)應(yīng)的元數(shù)據(jù)的響應(yīng)發(fā)送至客戶端104。在一個(gè)實(shí)施例中,響應(yīng)組件208將信息發(fā)送至客戶端104,如主機(jī)組件202所確定的。例如,響應(yīng)可以包括整個(gè)web應(yīng)用的元數(shù)據(jù)。在一個(gè)實(shí)施例中,響應(yīng)可以包括由渲染引擎206渲染的初始屏幕。例如,如果響應(yīng)于對(duì)web應(yīng)用的初始請(qǐng)求來(lái)發(fā)送響應(yīng),那么響應(yīng)可以包括初始屏幕的UI資產(chǎn)。根據(jù)一個(gè)實(shí)施例,典型的情況在于,響應(yīng)于初始請(qǐng)求來(lái)將應(yīng)用的所有UI元數(shù)據(jù)從主機(jī)的服務(wù)器發(fā)送至客戶端104。然而,也可以將后續(xù)請(qǐng)求發(fā)送至主機(jī)的跟隨初始請(qǐng)求的附加UI元數(shù)據(jù)的服務(wù)器(或者第三方服務(wù)器)。
圖3是客戶端104的示意框圖。客戶端104包括請(qǐng)求組件302、接收器組件304、顯示組件306、和web瀏覽器308。客戶端104還包括元數(shù)據(jù)解釋器204、渲染引擎206、和核心活動(dòng)類(lèi)型存儲(chǔ)212。在一個(gè)實(shí)施例中,元數(shù)據(jù)解釋器204、渲染引擎206、和核心活動(dòng)類(lèi)型存儲(chǔ)212由服務(wù)器系統(tǒng)102提供以在客戶端104上(諸如,在客戶端104的web瀏覽器308內(nèi))運(yùn)行。
請(qǐng)求組件302被配置為發(fā)送對(duì)web應(yīng)用的至少一部分的請(qǐng)求。請(qǐng)求組件302可以響應(yīng)于用戶選擇鏈接、輸入U(xiǎn)RL、或者以另外的方式提供輸入以運(yùn)行由服務(wù)器系統(tǒng)102托管的web應(yīng)用來(lái)發(fā)送請(qǐng)求。請(qǐng)求可以包括與web應(yīng)用相對(duì)應(yīng)的URL。請(qǐng)求可以指示特定web應(yīng)用或者功能。請(qǐng)求可以包括指示客戶端104或者用戶的身份的信息。例如,請(qǐng)求可以指示客戶端104所對(duì)應(yīng)的租用者或者實(shí)體。請(qǐng)求組件302可以發(fā)送包括請(qǐng)求是初始請(qǐng)求的指示的請(qǐng)求。在一個(gè)實(shí)施例中,如果web應(yīng)用已經(jīng)在客戶端104上運(yùn)行,那么請(qǐng)求組件302可以指示web應(yīng)用的當(dāng)前狀態(tài)。
在一個(gè)實(shí)施例中,系統(tǒng)支持深度鏈接,其中,用戶可以請(qǐng)求與在活動(dòng)層級(jí)內(nèi)的活動(dòng)相關(guān)聯(lián)的資源。例如,客戶端104可以請(qǐng)求活動(dòng),而不是根活動(dòng)。參照?qǐng)D4,深度鏈接可以包括請(qǐng)求活動(dòng)B 404、或者在活動(dòng)層級(jí)400內(nèi)的任何其它活動(dòng),而不是根活動(dòng)、活動(dòng)A 402。在一個(gè)實(shí)施例中,用戶的請(qǐng)求的URL的本地路徑表示在描述用戶在web應(yīng)用的UI流程內(nèi)的位置的活動(dòng)層級(jí)400內(nèi)的特定活動(dòng)。在一個(gè)實(shí)施例中,如果請(qǐng)求非根活動(dòng),那么根活動(dòng)(或在活動(dòng)層級(jí)中的其它活動(dòng))將URL路徑的相對(duì)部分傳遞至相對(duì)應(yīng)的子活動(dòng)。子活動(dòng)將使用相對(duì)路徑來(lái)確定其可視表示,并且然后利用其子活動(dòng)來(lái)重復(fù)過(guò)程等。該深度鏈接允許工作流程或者web應(yīng)用的任何活動(dòng)是系統(tǒng)行為的切入點(diǎn)。例如,工作流程本身是活動(dòng)類(lèi)型。將工作流程表征為活動(dòng)類(lèi)型可以易于與遺留系統(tǒng)集成,這可以取決于工作流程。
在某些實(shí)施例中,請(qǐng)求組件302可以發(fā)送在初始請(qǐng)求之后的請(qǐng)求。例如,請(qǐng)求組件302可以將請(qǐng)求發(fā)送至附加UI元數(shù)據(jù)的服務(wù)器系統(tǒng)102(或者第三方服務(wù)器)。
接收器組件304可以被配置為接收來(lái)自與所請(qǐng)求的web應(yīng)用相對(duì)應(yīng)的服務(wù)器系統(tǒng)102的響應(yīng)。響應(yīng)可以包括與服務(wù)器系統(tǒng)102有關(guān)的上述信息中的任何一種。響應(yīng)可以包括整個(gè)web應(yīng)用的元數(shù)據(jù)。在一個(gè)實(shí)施例中,響應(yīng)可以包括由渲染引擎206在服務(wù)器系統(tǒng)102處渲染的初始屏幕。例如,如果響應(yīng)于對(duì)web應(yīng)用的初始請(qǐng)求來(lái)發(fā)送響應(yīng),那么響應(yīng)可以包括初始屏幕的UI資產(chǎn)。在一個(gè)實(shí)施例中,響應(yīng)可以包括元數(shù)據(jù)解釋器204、渲染引擎206、和/或核心活動(dòng)類(lèi)型存儲(chǔ)212。
顯示組件306被配置為顯示UI的一個(gè)或者多個(gè)可視組件。在一個(gè)實(shí)施例中,顯示組件306在瀏覽器窗口中顯示由渲染引擎206所渲染的屏幕。例如,顯示組件306可以顯示在來(lái)自服務(wù)器系統(tǒng)102的響應(yīng)中所接收的初始屏幕。在一個(gè)實(shí)施例在,顯示組件306可以顯示由客戶端104的渲染引擎206所渲染的屏幕。在一個(gè)實(shí)施例中,顯示組件306包括客戶端104的物理顯示器。
web瀏覽器308可以包括被配置為基于組網(wǎng)協(xié)議來(lái)訪問(wèn)文件和網(wǎng)站的應(yīng)用或者組件。例如,web瀏覽器308可以被配置為基于用于web應(yīng)用、網(wǎng)站等的通信協(xié)議、標(biāo)記語(yǔ)言、文件類(lèi)型等中的一種或者多種來(lái)瀏覽和訪問(wèn)網(wǎng)站和文件。示例瀏覽器包括移動(dòng)或者桌面版本的InternetMozillaGoogle等。
元數(shù)據(jù)解釋器204可以包括關(guān)于圖2描述的元數(shù)據(jù)解釋器。例如,在客戶端104上的元數(shù)據(jù)解釋器204可以包括在服務(wù)器系統(tǒng)102上的元數(shù)據(jù)解釋器204的另一實(shí)例。在一個(gè)實(shí)施例中,元數(shù)據(jù)解釋器204可以用于對(duì)在客戶端104處的元數(shù)據(jù)進(jìn)行解釋?zhuān)詾閣eb應(yīng)用、控制導(dǎo)航等生成UI。
渲染引擎206可以包括關(guān)于圖2所描述的渲染引擎。例如,在客戶端104上的渲染引擎206可以包括在服務(wù)器系統(tǒng)102上的渲染引擎206的另一實(shí)例。在一個(gè)實(shí)施例中,渲染引擎206可以用于對(duì)在服務(wù)器系統(tǒng)102處未被渲染的任何屏幕進(jìn)行渲染。例如,如果初始圖像已經(jīng)由服務(wù)器系統(tǒng)102渲染,那么渲染引擎206可以不用于對(duì)該初始圖像進(jìn)行渲染。在初始圖像之后的圖像可以由對(duì)客戶端104而言是本地的渲染引擎206進(jìn)行渲染。
客戶端104還可以包括用于存儲(chǔ)與核心或者內(nèi)置活動(dòng)類(lèi)型有關(guān)的信息的核心活動(dòng)類(lèi)型存儲(chǔ)212。例如,核心活動(dòng)類(lèi)型存儲(chǔ)212可以包括與活動(dòng)類(lèi)型或者由元數(shù)據(jù)配置的活動(dòng)相對(duì)應(yīng)的代碼。
基于本文所公開(kāi)的教導(dǎo),并且利用位于客戶端103處的元數(shù)據(jù)解釋器204、渲染引擎206、和核心活動(dòng)類(lèi)型存儲(chǔ)212,客戶端104可以對(duì)元數(shù)據(jù)進(jìn)行解釋?zhuān)詾橄鄬?duì)應(yīng)的web應(yīng)用動(dòng)態(tài)生成UI。因此,客戶端104可以使用元數(shù)據(jù)來(lái)定義UI布局和內(nèi)容以及UI行為和導(dǎo)航。此外,開(kāi)發(fā)人員和用戶可以通過(guò)對(duì)UI元數(shù)據(jù)進(jìn)行編輯并且使其擴(kuò)展,來(lái)使UI擴(kuò)展并且對(duì)其進(jìn)行自定義。本發(fā)明可以在不重新部署或者重新啟動(dòng)應(yīng)用服務(wù)器的情況下自動(dòng)應(yīng)用UI變化。此外,可以隔離關(guān)于特定租用者而做出的變化,從而使這些UI變化僅僅影響某個(gè)組的最終用戶(與租客相對(duì)應(yīng)的用戶)的體驗(yàn)。
圖5是圖示出了用于為web應(yīng)用提供元數(shù)據(jù)驅(qū)動(dòng)UI的方法500的示意流程圖。在一個(gè)實(shí)施例中,方法500由圖2的服務(wù)器系統(tǒng)102執(zhí)行。
方法500開(kāi)始,并且主機(jī)組件202接收來(lái)自客戶端104的請(qǐng)求(502)。請(qǐng)求可以指示對(duì)由服務(wù)器系統(tǒng)102托管的web應(yīng)用的至少一部分的請(qǐng)求。元數(shù)據(jù)解釋器204查找與所請(qǐng)求的web應(yīng)用有關(guān)的UI元數(shù)據(jù)(504)。例如,元數(shù)據(jù)解釋器204可以檢索與web應(yīng)用的默認(rèn)活動(dòng)相對(duì)應(yīng)的元數(shù)據(jù)。在一個(gè)實(shí)施例中,元數(shù)據(jù)解釋器204可以檢索特定于租客的元數(shù)據(jù)。元數(shù)據(jù)解釋器204可以基于租客特定的元數(shù)據(jù)來(lái)對(duì)默認(rèn)元數(shù)據(jù)進(jìn)行修改。
主機(jī)組件202確定從客戶端104所接收的請(qǐng)求(502)是否包括初始請(qǐng)求(506)。如果請(qǐng)求是初始請(qǐng)求(在506中的是),那么渲染引擎206基于由元數(shù)據(jù)解釋器204查找到的元數(shù)據(jù)(504)來(lái)對(duì)初始屏幕進(jìn)行渲染(508)。響應(yīng)組件208將響應(yīng)發(fā)送至客戶端104(510),該響應(yīng)包括由渲染引擎206渲染的任何UI資產(chǎn)(508)和由元數(shù)據(jù)解釋器204檢索到的UI元數(shù)據(jù),并且方法500結(jié)束。如果請(qǐng)求不是初始請(qǐng)求(在506中的否),那么響應(yīng)組件208發(fā)送由元數(shù)據(jù)解釋器204檢索到的UI元數(shù)據(jù)(512),并且方法500結(jié)束。在一個(gè)實(shí)施例中,響應(yīng)組件208可以發(fā)送包括web應(yīng)用的狀態(tài)組件的響應(yīng)。例如,狀態(tài)可以指示是否已經(jīng)對(duì)初始屏幕進(jìn)行了渲染。狀態(tài)可以允許客戶端104在不對(duì)初始屏幕進(jìn)行重新渲染的情況下重新開(kāi)始服務(wù)器系統(tǒng)102停止的地方。
圖6是圖示出了用于為web應(yīng)用提供元數(shù)據(jù)驅(qū)動(dòng)UI的方法600的示意流程圖。在一個(gè)實(shí)施例中,方法600由圖3的客戶端104執(zhí)行。在一個(gè)實(shí)施例中,客戶端104可以結(jié)合服務(wù)器系統(tǒng)102執(zhí)行圖5的方法500來(lái)執(zhí)行方法600。
方法600開(kāi)始,并且請(qǐng)求組件302將對(duì)web應(yīng)用的至少一部分的請(qǐng)求發(fā)送至服務(wù)器系統(tǒng)102(602)。接收器組件304接收對(duì)請(qǐng)求的響應(yīng)(諸如,在方法500期間發(fā)送的響應(yīng)(510或者512))(604)。響應(yīng)可以包括web應(yīng)用的UI元數(shù)據(jù)和/或初始屏幕的UI資產(chǎn)。UI資產(chǎn)可以包括由在服務(wù)器系統(tǒng)102上的渲染引擎204所渲染的資產(chǎn)。
接收器組件304確定由請(qǐng)求組件302發(fā)送的請(qǐng)求(602)是否是初始請(qǐng)求(606)。例如,接收器組件304可以確定由接收器組件304所接收的響應(yīng)(604)是否包括初始屏幕的UI資產(chǎn)(606)。作為另一示例,接收器組件304可以基于在響應(yīng)中的狀態(tài)信息來(lái)確定請(qǐng)求是否是初始請(qǐng)求。例如,客戶端104可以基于在響應(yīng)中所指示的狀態(tài)信息來(lái)繼續(xù)執(zhí)行web應(yīng)用。
如果請(qǐng)求不是初始請(qǐng)求(在606中的否),那么渲染引擎206對(duì)初始屏幕進(jìn)行渲染(例如,對(duì)UI元數(shù)據(jù)進(jìn)行可視渲染)(608),并且將經(jīng)渲染的初始屏幕的UI資產(chǎn)提交給web瀏覽器308以進(jìn)行顯示(610),并且方法600結(jié)束。如果請(qǐng)求是初始請(qǐng)求(在606中的是),那么渲染引擎206響應(yīng)于web瀏覽器308來(lái)提交接收到的UI資產(chǎn)(604)以進(jìn)行顯示(610),并且方法600結(jié)束。
對(duì)本領(lǐng)域的技術(shù)人員而言,在不脫離本公開(kāi)的根本原則的情況下,可以對(duì)上述實(shí)施例的細(xì)節(jié)做出許多改變是顯而易見(jiàn)的。因此,本公開(kāi)的范圍應(yīng)該僅僅由以下權(quán)利要求確定。