專利名稱:云計(jì)算環(huán)境中的企業(yè)應(yīng)用的基于模式的構(gòu)造和擴(kuò)展的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件功能的擴(kuò)展和修改,更具體而言,涉及采用一個(gè)或多個(gè)模式使企業(yè)軟件對(duì)象表現(xiàn)出期望的功能和配置,以及在企業(yè)環(huán)境中采用所述模式生成企業(yè)軟件對(duì)象。
背景技術(shù):
與虛擬化和大規(guī)模實(shí)用程序計(jì)算聯(lián)合的計(jì)算的成本的降低引發(fā)了普遍的計(jì)算資源和網(wǎng)絡(luò)連通性,其又引發(fā)了新的計(jì)算范例(例如,云計(jì)算)。這樣的因特網(wǎng)規(guī)模的計(jì)算資源能夠?yàn)槎鄠€(gè)應(yīng)用降低運(yùn)作成本。云計(jì)算進(jìn)一步為合作式應(yīng)用以及移動(dòng)平臺(tái)目標(biāo)提供了基礎(chǔ)。云計(jì)算以可分級(jí)的服務(wù)器平臺(tái)為基礎(chǔ),其適于處理存在高度交互的協(xié)作式應(yīng)用(例如,社交應(yīng)用和基于云的辦公室應(yīng)用)的計(jì)算負(fù)載。隨著因特網(wǎng)規(guī)模的計(jì)算基礎(chǔ)設(shè)施變得越來(lái)越為大規(guī)模付費(fèi)服務(wù)所承受得起,云計(jì)算用戶將尋求與之匹配的軟件資源裝備能力。云計(jì)算資源能夠提供平臺(tái)即服務(wù)(PaaS)產(chǎn)品,其包括在云基礎(chǔ)設(shè)施內(nèi)支持的軟件和產(chǎn)品開(kāi)發(fā)工具?;蛘?,軟件即服務(wù)(SaaS)云模型包括通過(guò)前端入口與用戶交互的軟件產(chǎn)品。在這樣的環(huán)境中,用戶將希望軟件功能處于能夠支付得起的價(jià)格范圍內(nèi)。這樣的用戶可能是(例如)在軟件編程方面即使受過(guò)培訓(xùn)和/或具有經(jīng)驗(yàn)也十分有限的商業(yè)用戶。盡管如此,云資源的企業(yè)客戶仍然需要按照與其需求相適應(yīng)的方式進(jìn)行軟件配置。歷史上,一直在從計(jì)算機(jī)的角度解決軟件的創(chuàng)建。大部分軟件都是利用通用程序設(shè)計(jì)語(yǔ)言表達(dá)的。因而,程序的重點(diǎn)在于計(jì)算機(jī)的要求是什么(例如,執(zhí)行細(xì)節(jié))上,而不是開(kāi)發(fā)軟件所要解決的問(wèn)題。因而,要通過(guò)修改程序的代碼實(shí)施所述問(wèn)題或者預(yù)期解決方案的處理變化。但是用于寫(xiě)軟件的通用程序設(shè)計(jì)語(yǔ)言卻是具有一般性的,因而其并非是為了清晰地表達(dá)所要解決的問(wèn)題而創(chuàng)造出來(lái)的。其使得編寫(xiě)這樣的軟件以及以后做出修改(例如,反映由其解決的問(wèn)題的變化)都是一項(xiàng)困難的任務(wù)。對(duì)所要解決的問(wèn)題最為熟悉的人當(dāng)數(shù)在其特定的問(wèn)題域使用所述軟件的人。域?qū)<沂熘谒鰡?wèn)題域必須滿足的議題、概念和定義。另一方面,軟件程序員則具有軟件創(chuàng)建方面的專業(yè)技能,在傳統(tǒng)上其與域?qū)<乙黄鸸ぷ鱽?lái)生成軟件。這種任務(wù)和專業(yè)技能的分工不可避免地導(dǎo)致一方或者雙方遭受挫折,因?yàn)槌绦蛞?guī)范的變化以及該問(wèn)題域的復(fù)雜性是能夠被域?qū)<宜斫獾?,但是其將?dǎo)致程序員一方的大量重寫(xiě)和修訂。類似地,程序員一方對(duì)域?qū)<姨峁┑拿枋鲎龀鲥e(cuò)誤的理解可能導(dǎo)致域?qū)<乙环绞艽?。圖1A是示出了傳統(tǒng)的軟件開(kāi)發(fā)工作流程的簡(jiǎn)化方框圖。域?qū)<?05將問(wèn)題陳述傳達(dá)給程序員110。這一操作通常是采用不能自動(dòng)轉(zhuǎn)換成代碼的格式完成的,例如,規(guī)范、使用情況、情節(jié)、注解、草圖等。于是,程序員110將采用如此描述的意向連同程序員在軟件工程方面的知識(shí)和專業(yè)技能創(chuàng)建能夠通過(guò)計(jì)算機(jī)執(zhí)行的源代碼115。出于維護(hù)或者校正目的對(duì)軟件所做的修改必須在域?qū)<?05提供的問(wèn)題陳述中定義,之后單獨(dú)由程序員110實(shí)施。為了對(duì)程序進(jìn)行擴(kuò)展或者維護(hù),程序員110必須將實(shí)施分解,圍繞所討論的部分進(jìn)行推理,解決問(wèn)題,之后將實(shí)施重新組合,從而獲得預(yù)期的結(jié)果。這一“拆分”軟件,之后重新將軟件合并起來(lái)的過(guò)程可能引入程序設(shè)計(jì)錯(cuò)誤,并且提高了軟件成本。為了使軟件反映域?qū)<覍?duì)該軟件的意圖,優(yōu)選通過(guò)域術(shù)語(yǔ)表達(dá)所述問(wèn)題。這必然需要采取另一步驟通過(guò)域術(shù)語(yǔ)做出問(wèn)題說(shuō)明,并將該說(shuō)明轉(zhuǎn)換成計(jì)算機(jī)能夠執(zhí)行的軟件,即,程序生成。盡管程序員能夠通過(guò)采用所述軟件解決的域問(wèn)題所熟悉的術(shù)語(yǔ)的方式編寫(xiě)代碼,但是能夠證明這樣的程序設(shè)計(jì)在其域具有復(fù)雜詞匯的大的系統(tǒng)當(dāng)中或者在其他這樣的情況下存在困難。因此,考慮到上述內(nèi)容并且為了適應(yīng)用戶對(duì)企業(yè)級(jí)云編程設(shè)施的需求,希望為這樣的用戶提供這樣的應(yīng)用開(kāi)發(fā)環(huán)境,其(I)足夠簡(jiǎn)單,能夠被缺乏廣泛的編程訓(xùn)練和/或經(jīng)驗(yàn)的用戶使用,(2)充分地易于定制,從而既與這樣的用戶的技能匹配,又能夠?qū)崿F(xiàn)有效率的定制。此外這樣的應(yīng)用開(kāi)發(fā)環(huán)境還應(yīng)當(dāng)使應(yīng)用定制通過(guò)這樣的一種方式執(zhí)行,即,不會(huì)對(duì)其他用戶對(duì)所涉及的云資源(例如,正被定制的應(yīng)用)的訪問(wèn)造成干擾。
發(fā)明內(nèi)容
在本發(fā)明的各種實(shí)施例中,公開(kāi)了用于在企業(yè)環(huán)境內(nèi)對(duì)軟件功能進(jìn)行擴(kuò)展和修改,更具體而言,用于在企業(yè)環(huán)境內(nèi)采用一個(gè)或多個(gè)用于企業(yè)軟件對(duì)象的模式表達(dá)期望的功能和構(gòu)造,以及采用所述模式生成企業(yè)軟件對(duì)象的方法、軟件程序和系統(tǒng)。根據(jù)這些實(shí)施例中的某些實(shí)施例的方法包括從多個(gè)模式中選擇一個(gè)或多個(gè)模式,其中,所述一個(gè)或多個(gè)模式是針對(duì)企業(yè)軟件對(duì)象的。之后能夠生成企業(yè)軟件對(duì)象。所述企業(yè)軟件對(duì)象是采用所述一個(gè)或多個(gè)模式生成的。將所述模式中的每個(gè)配置為描述多個(gè)問(wèn)題域中的對(duì)應(yīng)的一個(gè)之內(nèi)的解決方案。上文只是一個(gè)概括,因而其必然含有細(xì)節(jié)的簡(jiǎn)化、一般化和省略;因此,本域技術(shù)人員將認(rèn)識(shí)到所述概括只是說(shuō)明性的,而不是旨在做出任何限制。唯獨(dú)通過(guò)權(quán)利要求定義的本發(fā)明的其他方面、創(chuàng)造性特征和優(yōu)點(diǎn)將在下文闡述的非限制性詳細(xì)說(shuō)明中變得顯而易見(jiàn)。
通過(guò)參考附圖能夠?qū)Ρ景l(fā)明更好地理解,并且能夠使本發(fā)明的多個(gè)目的、特征和優(yōu)點(diǎn)對(duì)本域技術(shù)人員而言變得顯而易見(jiàn)。圖1A是示出了傳統(tǒng)的軟件開(kāi)發(fā)工作流程的簡(jiǎn)化方框圖。圖1B是示出了生成程序設(shè)計(jì)工作流程的簡(jiǎn)化方框圖。圖2A是示出了云計(jì)算概念的簡(jiǎn)化方框圖。
圖2B是示出了根據(jù)本發(fā)明的實(shí)施例的結(jié)合了模式的問(wèn)題解決方案流的例子的簡(jiǎn)化框圖。圖3是示出了采用根據(jù)本發(fā)明的實(shí)施例的采用模式的企業(yè)軟件對(duì)象生成的例子的簡(jiǎn)化流程圖。圖4是示出了根據(jù)本發(fā)明的實(shí)施例的在模式創(chuàng)建過(guò)程中執(zhí)行的操作的例子的簡(jiǎn)化流程圖。圖5是示出了根據(jù)本發(fā)明的實(shí)施例的模式、子模式、模式種類和各種規(guī)則/方面/模板之間的關(guān)系的例子的簡(jiǎn)化方框圖。圖6是示出了可與本發(fā)明的實(shí)施例結(jié)合使用的企業(yè)服務(wù)器架構(gòu)的簡(jiǎn)化方框圖。圖7是示出了根據(jù)本發(fā)明的實(shí)施例的可擴(kuò)展性框架架構(gòu)的各種元件的方框圖。圖8是示出了根據(jù)本發(fā)明的實(shí)施例的的數(shù)據(jù)模型的簡(jiǎn)化方框圖。圖9是示出了根據(jù)本發(fā)明的實(shí)施例的元數(shù)據(jù)管理架構(gòu)的方框圖。圖10是示出了根據(jù)本發(fā)明的實(shí)施例的能夠通過(guò)可擴(kuò)展性框架架構(gòu)執(zhí)行的操作的例子的流程圖。圖11是示出了根據(jù)本發(fā)明的實(shí)施例的通過(guò)規(guī)劃指定的操作的例子的流程圖。圖12是示出了根據(jù)本發(fā)明的實(shí)施例的能夠通過(guò)規(guī)劃指定的操作的例子的流程圖。圖13是示出了根據(jù)本發(fā)明的實(shí)施例的可擴(kuò)展性框架架構(gòu)的實(shí)現(xiàn)和定制軟件組件的生成的方框圖。圖14A是示出了根據(jù)本發(fā)明的實(shí)施例的包括可擴(kuò)展性框架的示例架構(gòu)的方框圖。圖14B是示出了根據(jù)本發(fā)明的實(shí)施例的視圖對(duì)象以及其與根據(jù)本發(fā)明的實(shí)施例的可擴(kuò)展性框架的其他元件的關(guān)系的例子的方框圖。圖14C是示出了根據(jù)本發(fā)明的實(shí)施例的實(shí)體對(duì)象和視圖對(duì)象的元件之間的交互和關(guān)系的例子的方框圖。圖15是示出了根據(jù)本發(fā)明的實(shí)施例的可擴(kuò)展性框架數(shù)據(jù)庫(kù)架構(gòu)的各種特征的方框圖。圖16是根據(jù)本發(fā)明的實(shí)施例的網(wǎng)絡(luò)(網(wǎng)絡(luò))服務(wù)可擴(kuò)展性架構(gòu)的方框圖。圖17是示出了根據(jù)本發(fā)明的實(shí)施例的可擴(kuò)展分析架構(gòu)的方框圖。圖18是描繪適于實(shí)現(xiàn)本發(fā)明的各個(gè)方面的計(jì)算機(jī)系統(tǒng)的方框圖。圖19是描繪適于實(shí)現(xiàn)本發(fā)明的各個(gè)方面的網(wǎng)絡(luò)架構(gòu)的方框圖。
具體實(shí)施例方式本發(fā)明的實(shí)施例提供了利用一般化的機(jī)制構(gòu)建應(yīng)用模式并采用這些模式生成新的或者修改的軟件對(duì)象的方法、設(shè)備和系統(tǒng)。這樣的系統(tǒng)采用基本基元和相關(guān)操作將簡(jiǎn)單的模式匯編成語(yǔ)義豐富的模式。之后,可以將實(shí)例化的模式(例如,對(duì)象)添加到現(xiàn)有的應(yīng)用當(dāng)中,由此(例如)出于企業(yè)的特定目的對(duì)這些應(yīng)用進(jìn)行修改。本發(fā)明的實(shí)施例還能夠使未經(jīng)培訓(xùn)的用戶采用預(yù)先匯編的模式對(duì)應(yīng)用(例如,SaaS應(yīng)用)進(jìn)行擴(kuò)展。本發(fā)明的實(shí)施例還提供了配置工具,其用于通過(guò)訪問(wèn)這樣的模式的儲(chǔ)存庫(kù)而向現(xiàn)有應(yīng)用中添加新的軟件組件。這樣的配置工具允許用戶從儲(chǔ)存庫(kù)中選擇一個(gè)或多個(gè)用于企業(yè)軟件對(duì)象的模式,提供適于所述模式的具體實(shí)例化的參數(shù)值,之后采用這些實(shí)例化的模式生成企業(yè)軟件對(duì)象。目的性程序設(shè)計(jì)圖1B是示出了生成程序設(shè)計(jì)工作流程的示例的簡(jiǎn)化方框圖。在生成程序設(shè)計(jì)環(huán)境中,現(xiàn)在程序員110的工作重點(diǎn)在于設(shè)計(jì)并實(shí)施創(chuàng)建生成程序120 (文中又稱為模式引擎)所需的軟件,其接收域代碼125作為輸入,并輸出可執(zhí)行代碼115??梢酝ㄟ^(guò)包括適合問(wèn)題域的術(shù)語(yǔ)和概念的特定于域的語(yǔ)言表達(dá)域代碼125。程序員的責(zé)任從直接寫(xiě)程序發(fā)生了變化,其工作重心轉(zhuǎn)移到了生成程序120的創(chuàng)建和維護(hù)上。程序組織和數(shù)據(jù)結(jié)構(gòu)將繼續(xù)得到設(shè)計(jì)、定義和編寫(xiě),但是可執(zhí)行代碼115則通過(guò)域代碼125參數(shù)化??蓤?zhí)行代碼115的預(yù)期變化受到域代碼125的影響,可以將域代碼125重新輸入至生成程序120,以實(shí)現(xiàn)這些變化。計(jì)算機(jī)執(zhí)行在歷史上將是程序員的任務(wù)的工作,即,根據(jù)域代碼語(yǔ)言和源代碼語(yǔ)言之間的對(duì)應(yīng)關(guān)系分布域代碼變化。生成技術(shù)的不同應(yīng)用在如何定義用于域代碼125的特定于域的語(yǔ)言、如何創(chuàng)建域代碼以及生成程序120如何使用域代碼方面可能存在差異。生成程序120的使用將域?qū)<业年P(guān)切事項(xiàng)與程序員的關(guān)切事項(xiàng)分離開(kāi)來(lái)。在生成軟件環(huán)境中,域?qū)<?05負(fù)責(zé)維護(hù)域代碼125。程序員110創(chuàng)建并維護(hù)生成程序120,并定義如何對(duì)域代碼輸入進(jìn)行處理,以獲得預(yù)期的實(shí)現(xiàn)(例如,可執(zhí)行代碼115)。生成程序120代表實(shí)現(xiàn)知識(shí),例如,工程設(shè)計(jì)、算法選擇、平臺(tái)和代碼模式。前述生成程序設(shè)計(jì)環(huán)境的實(shí)現(xiàn)受到實(shí)際應(yīng)用問(wèn)題的影響,例如,定義域代碼125的語(yǔ)言,誰(shuí)來(lái)定義和支持特定于域的語(yǔ)言和文獻(xiàn)匯編,此外還受到與跨越不只一個(gè)域的問(wèn)題相關(guān)的事項(xiàng)以及生成程序120通過(guò)應(yīng)用編程接口對(duì)域代碼125的訪問(wèn)等的影響。此外,前述針對(duì)特定于域的語(yǔ)言的解決方案沒(méi)有解決與如何使具有極少的程序設(shè)計(jì)知識(shí)的用戶在企業(yè)內(nèi)部通過(guò)簡(jiǎn)單有效的方式創(chuàng)建和修改軟件組件相關(guān)的問(wèn)題。前述的這些解決方案仍然需要用戶學(xué)習(xí)特定于域的語(yǔ)言及其語(yǔ)法。例如,一種特定于域的語(yǔ)言實(shí)現(xiàn)要求使用“意圖樹(shù)”,其主要是理論性的,而且不會(huì)為企業(yè)提供任何種類的有用或者實(shí)際的解決方案。其他這樣的解決方案需要有關(guān)如何對(duì)不同的功能塊進(jìn)行匯編以確保正確的交互和功能的知識(shí)。云中的企業(yè)程序設(shè)計(jì)當(dāng)今的企業(yè)/云計(jì)算環(huán)境已經(jīng)取消了用戶對(duì)運(yùn)行軟件的硬件的直接控制以及對(duì)軟件本身的控制。在二十世紀(jì)七十年代,技術(shù)性突破顯著降低了成本。硬件革命將大型計(jì)算帶入到較小的裝置內(nèi),例如,被實(shí)現(xiàn)成計(jì)算機(jī)內(nèi)的單個(gè)集成電路的中央處理單元。計(jì)算成本的改善還提高了計(jì)算資源的可及性和可用性。計(jì)算機(jī)的使用不再只能在選定的少數(shù)幾個(gè)人之間按時(shí)間分享。廣泛可用的個(gè)人計(jì)算使得計(jì)算機(jī)的大量采用成為了事實(shí)。盡管硬件變成了廣泛可得的,但是仍然需要由具有高度技能的程序員建立應(yīng)用,其要求程序員周密地了解下層平臺(tái)。在這一周期內(nèi),相較于硬件成本而言,具有高的軟件開(kāi)發(fā)成本。應(yīng)用通常是專業(yè)化的,因而通常面向經(jīng)過(guò)培訓(xùn)的專業(yè)人員,這樣的應(yīng)用大部分都集中在數(shù)據(jù)管理以及過(guò)程/辦公自動(dòng)化方面。在上世紀(jì)九十年代早期,因特網(wǎng)接入和網(wǎng)絡(luò)瀏覽器至少在一些情形下為用戶免除了在其個(gè)人計(jì)算機(jī)上安裝軟件的必要。終端用戶只需點(diǎn)擊URL就能獲得范圍很寬的面向終端客戶的應(yīng)用。此外,諸如Java之類的語(yǔ)言因取消了諸如自動(dòng)存儲(chǔ)器管理和軟件可移植性的任務(wù)而降低了軟件開(kāi)發(fā)成本。網(wǎng)絡(luò)應(yīng)用帶來(lái)了其他軟件進(jìn)步,例如,用戶界面(UI)和應(yīng)用框架的商品化。除了其他的優(yōu)點(diǎn)、特征和功能之外,當(dāng)今的應(yīng)用框架通常提供兩個(gè)主要組件:元數(shù)據(jù)(通過(guò)框架指定的語(yǔ)言描述問(wèn)題)和運(yùn)行時(shí)間引擎(其基于應(yīng)用開(kāi)發(fā)者提供的指定元數(shù)據(jù)執(zhí)行實(shí)際運(yùn)行時(shí)間執(zhí)行)。這些基于網(wǎng)絡(luò)的應(yīng)用進(jìn)一步分離了問(wèn)題描述和執(zhí)行。因此,沒(méi)有必要再將軟件制作成起著單個(gè)專業(yè)化執(zhí)行單元的作用。改變問(wèn)題描述的操作僅涉及對(duì)元數(shù)據(jù)做出改變,對(duì)運(yùn)行時(shí)間執(zhí)行代碼則沒(méi)有影響。在這一對(duì)計(jì)算資源大量采用的第二次浪潮中,瀏覽器、Java和框架中的軟件進(jìn)步降低了軟件相對(duì)于硬件的成本。然而,仍然要求應(yīng)用開(kāi)發(fā)者具有高水平的專業(yè)技能,從而對(duì)應(yīng)用開(kāi)發(fā)環(huán)境(文中又稱為應(yīng)用開(kāi)發(fā)框架(ADF))中通??捎玫娜秶倪x擇和控制加以充分利用。計(jì)算資源的大量采用的第三次浪潮已經(jīng)伴隨著計(jì)算成本的突破性降低而開(kāi)始。云計(jì)算與諸如虛擬化的技術(shù)革新相結(jié)合并不斷獲得大規(guī)模實(shí)用計(jì)算方面的經(jīng)驗(yàn),從而使非常豐富的計(jì)算資源和網(wǎng)絡(luò)連通性都能夠在因特網(wǎng)規(guī)模上被負(fù)擔(dān)得起。這種計(jì)算資源的可用性降低了網(wǎng)絡(luò)應(yīng)用的操作成本。這樣的可用性還為協(xié)作式應(yīng)用和移動(dòng)式應(yīng)用的繼續(xù)開(kāi)發(fā)提供了基礎(chǔ)。這些因特網(wǎng)規(guī)模的基礎(chǔ)設(shè)施作為有償服務(wù)已經(jīng)變得能夠?yàn)榇罅康挠脩羲?fù)擔(dān)得起。這些用戶還在尋找匹配的軟件可負(fù)擔(dān)性。這一點(diǎn)也適用于其他類型的按需服務(wù),例如,按需視頻。云計(jì)算領(lǐng)域中的內(nèi)容只是在實(shí)用程序資源上執(zhí)行的程序或應(yīng)用而已。圖2A是示出了云計(jì)算概念的簡(jiǎn)化方框圖。將因特網(wǎng)或廣域網(wǎng)210耦合至內(nèi)聯(lián)網(wǎng)或局域網(wǎng)220(l)-(n)。每一內(nèi)聯(lián)網(wǎng)或局域網(wǎng)具有一個(gè)或多個(gè)客戶端計(jì)算機(jī)225(l)-(m)??蛻舳擞?jì)算機(jī)能夠通過(guò)內(nèi)聯(lián)網(wǎng)客戶端和因特網(wǎng)資源之間的網(wǎng)絡(luò)連接訪問(wèn)(例如)網(wǎng)絡(luò)服務(wù)器230(l)-(p)(又被稱為網(wǎng)站服務(wù)器,或簡(jiǎn)稱為服務(wù)器)。此外,可通過(guò)因特網(wǎng)210獲得的一個(gè)或多個(gè)資源能夠提供具有云資源240的形式的主機(jī)托管(hosted)服務(wù)。云計(jì)算是涉及在諸如因特網(wǎng)的廣域網(wǎng)內(nèi)分發(fā)主機(jī)托管服務(wù)的任何機(jī)制的泛稱。通常將這樣的服務(wù)寬泛地分為三類:基礎(chǔ)設(shè)施即服務(wù)(IaaS)、平臺(tái)即服務(wù)(PaaS)以及軟件即服務(wù)(SaaS)。云服務(wù)通常按需出售(例如,按分鐘或者按小時(shí)),云服務(wù)是具有彈性的,因?yàn)橛脩裟軌蛟谌魏渭榷〞r(shí)間上擁有其想要的多少的服務(wù),并且云服務(wù)完全由云服務(wù)的供應(yīng)商管理。云可以是私有的,也可以是公共的。公共云向任何能夠?qū)ζ溥M(jìn)行訪問(wèn)的人出售服務(wù),而私有云則是所有權(quán)網(wǎng)絡(luò)或數(shù)據(jù)中心,其只向有限數(shù)量的用戶提供主機(jī)托管服務(wù)。云服務(wù)供應(yīng)商可以采用公共云資源創(chuàng)建私有云,從而獲得虛擬私有云。在每種情況下,云計(jì)算的目的都在于提供對(duì)計(jì)算資源和信息技術(shù)服務(wù)的可分級(jí)的訪問(wèn)。IaaS為虛擬服務(wù)器實(shí)例提供唯一網(wǎng)絡(luò)地址和按需存儲(chǔ)塊。通過(guò)提供應(yīng)用編程接口(API)而開(kāi)始、停止和訪問(wèn)虛擬服務(wù)服務(wù)器和存儲(chǔ)器。在企業(yè)中,IaaS云計(jì)算允許公司僅對(duì)其所需要的那些容量付費(fèi),并在線增加所需的這一容量。云中的PaaS提供了主機(jī)托管軟件集和產(chǎn)品開(kāi)發(fā)工具,在圖2A中示出了 PaaS250作為其例子。開(kāi)發(fā)者能夠通過(guò)因特網(wǎng)在其供應(yīng)商的平臺(tái)上創(chuàng)建應(yīng)用。PaaS提供商能夠利用(例如)AP1、網(wǎng)站入口、安裝在客戶的計(jì)算機(jī)上的網(wǎng)關(guān)軟件等提供對(duì)這樣的服務(wù)的訪問(wèn)。在SaaS架構(gòu)中,供應(yīng)商通過(guò)前端入口提供硬件基礎(chǔ)設(shè)施、軟件產(chǎn)品并且與用戶交互。所提供的服務(wù)可以包括(例如)基于網(wǎng)絡(luò)的電子郵件、庫(kù)存控制和數(shù)據(jù)庫(kù)處理。由于應(yīng)用和數(shù)據(jù)都由服務(wù)供應(yīng)商主持,因而終端用戶能夠隨處自由地使用服務(wù)。
從上文對(duì)云計(jì)算的說(shuō)明可以看出,可以將云的資源(即云資源)看作是物理計(jì)算機(jī)資源的抽象化。終端用戶通常不能控制所述硬件或軟件,尤其是在SaaS和PaaS環(huán)境中。由于采用同一云資源的不同企業(yè)可能具有不同的要求來(lái)滿足其特定企業(yè)的需求,因而需要一種機(jī)制使用戶通過(guò)與所討論的企業(yè)相適應(yīng)的方式對(duì)其采用的軟件進(jìn)行修改。前面討論的生成軟件概念認(rèn)識(shí)到了這一問(wèn)題,但是未能提供實(shí)際的解決方案來(lái)實(shí)現(xiàn)能夠創(chuàng)建和修改軟件資源,例如,云計(jì)算環(huán)境中提供的軟件資源的工具的提供。此外,由于云資源被多個(gè)用戶訪問(wèn)(其還可能與不同的企業(yè)相關(guān)),因而任何用于修改云計(jì)算環(huán)境中的軟件的工具都不能破壞云資源對(duì)其他用戶的提供。因此,必須提供某些保證,以確保對(duì)軟件所做的修改的功能。也就是說(shuō),應(yīng)當(dāng)針對(duì)指定云計(jì)算環(huán)境中的使用對(duì)使用戶能夠修改軟件資源的工具加以驗(yàn)證。用于描述用戶意圖的模式在企業(yè)內(nèi),域?qū)<铱赡?例如)想要修改或者創(chuàng)建原始的或者額外的對(duì)象(例如,業(yè)務(wù)對(duì)象、數(shù)據(jù)對(duì)象、用戶界面對(duì)象等)。執(zhí)行這樣的任務(wù)往往包括執(zhí)行至少一些相同(或者類似的)操作。此外,要想獲得預(yù)期結(jié)果(例如,通過(guò)其創(chuàng)建而實(shí)現(xiàn)的新的數(shù)據(jù)對(duì)象的存在)可能必須要?jiǎng)?chuàng)建其他對(duì)象/類別(例如用戶界面顯示中的新字段)(或者對(duì)其做出改變)。文中將這樣的為了實(shí)現(xiàn)預(yù)期目標(biāo)而執(zhí)行的通常重復(fù)發(fā)生的操作的集合稱為模式。在一個(gè)實(shí)施例中,這樣的模式包括模式聲明(例如,其揭示用于配置操作的實(shí)質(zhì)配置選項(xiàng))和模式定義(例如,其封裝軟件組件生成的細(xì)節(jié)(例如,通過(guò)中間件API訪問(wèn)))。模式的使用既提供了簡(jiǎn)易性(例如,通過(guò)對(duì)用戶隱藏程序設(shè)計(jì)的復(fù)雜性),又提供了適應(yīng)性(例如,通過(guò)封入對(duì)應(yīng)用所做的變化、中間件等)。在本發(fā)明的實(shí)施例中,模式描述了在給定問(wèn)題域通常出現(xiàn)的解決方案。此外,模式能夠指定創(chuàng)建進(jìn)而描述該解決方案(抽象概念)的實(shí)例(具體的或者切實(shí)的表示)的方式(例如,能夠在特定的目標(biāo)平臺(tái)上使重復(fù)發(fā)生的解決方案實(shí)例化的方式)??紤]到本公開(kāi)將認(rèn)識(shí)至IJ,這樣的解決方案(抽象)的實(shí)例化包含了所述解決方案(例如,作為模板,例如一類對(duì)象或計(jì)算過(guò)程)的實(shí)際例子和具體實(shí)現(xiàn)的創(chuàng)建。這樣的實(shí)例化操作通過(guò)(例如)定義一類中的對(duì)象(表示解決方案)的具體變化、為對(duì)象賦予名稱并且將對(duì)象存儲(chǔ)到某一物理位置上(例如,將對(duì)象存儲(chǔ)到諸如計(jì)算機(jī)存儲(chǔ)器的計(jì)算機(jī)可讀介質(zhì)內(nèi))而創(chuàng)建對(duì)應(yīng)解決方案的實(shí)例。照此,模式還能夠提供用于使域?qū)<倚纬?以及表達(dá))對(duì)這樣的軟件進(jìn)行預(yù)期修改的意圖的一般化機(jī)制。圖2B是示出了根據(jù)本發(fā)明的實(shí)施例的結(jié)合了模式的問(wèn)題解決方案流的例子的簡(jiǎn)化框圖。與圖1B—樣,程序員110主要考慮創(chuàng)建生成程序120,該程序能夠生成期望的可執(zhí)行代碼115作為其輸出。與圖1B —樣,向生成程序120提供域代碼125作為輸入。與圖1B不同,可以使域?qū)<?05獲得一個(gè)或多個(gè)模式(例如,在圖2B中將其描述為模式260),從而允許域?qū)<?05表達(dá)其有關(guān)期望域代碼的生成的意圖,所述域代碼將充當(dāng)生成程序120的輸入(例如,諸如圖1B的域代碼125的域代碼)??梢酝ㄟ^(guò)模式儲(chǔ)存庫(kù)的形式使模式260能夠?yàn)橛驅(qū)<?05所用(在圖2B中未示出;但而,應(yīng)當(dāng)認(rèn)識(shí)到,例如,可以將圖2B的模式260存儲(chǔ)到這樣的模式儲(chǔ)存庫(kù)內(nèi)并從該儲(chǔ)存庫(kù)內(nèi)將其選出)。例如,模式程序員270可以針對(duì)特定域或者多個(gè)域創(chuàng)建模式儲(chǔ)存庫(kù)。模式程序員270通常是專家程序員,其制備的模式并非是針對(duì)具體的問(wèn)題實(shí)例的解決方案,而是反映解決給定的一類問(wèn)題的更為一般的方案。諸如模式程序員270的模式程序員應(yīng)當(dāng)理解將在所述模式中獲取的所述解決方案的復(fù)雜的細(xì)微差別。所述模式應(yīng)當(dāng)明確的公式化,包括針對(duì)期望的對(duì)象的必要變化(例如,使用戶界面元素存在差別以及使這些元素的外觀存在差別)。域?qū)<?05從含有模式260的儲(chǔ)存庫(kù)中選擇一個(gè)或多個(gè)模式,之后采用(例如)配置器280對(duì)所述模式的元素實(shí)施期望/必要的修改(編輯)。例如,可能必須對(duì)各種參數(shù)進(jìn)行定義,從而使模式實(shí)例化,因而域?qū)<?05將為這些各種各樣的參數(shù)賦值?;蛘?,模式可以具有能夠進(jìn)行選擇的子模式,所述子模式可能也具有定義的參數(shù)。一組與模式和子模式相關(guān)的規(guī)則能夠限制模式和參數(shù)值選擇。通過(guò)模式和子模式的存在,諸如文中描述的系統(tǒng)的系統(tǒng)能夠采用其他(通常較為簡(jiǎn)單的)模式作為構(gòu)件塊創(chuàng)建出越來(lái)越復(fù)雜并且能力越來(lái)越強(qiáng)的模式。實(shí)際上,情況往往是這樣,所采用的模式具有更加復(fù)雜的多樣性,而且除了其更高的功能性之外,其使用還提供了一定量的抽象化,這種抽象化掩蓋了下層模式的復(fù)雜性,從而簡(jiǎn)化了這些更為復(fù)雜的模式的使用。之后,配置器280生成被用作生成程序120的輸入的域代碼125。本發(fā)明的實(shí)施例不限于圖2B所示的塊的配置。可以將配置器280和發(fā)生程序120的功能結(jié)合,從而得到以域?qū)<?05選定的模式和修改作為其輸入,以可執(zhí)行代碼115作為其輸出的功能元件。這樣的模式的設(shè)計(jì)還應(yīng)當(dāng)(例如)在考慮將應(yīng)用這樣的模式的企業(yè)對(duì)象也可能隨著時(shí)間的推移而發(fā)生變化的這一事實(shí)的情況下為提供隨著時(shí)間推移的演化。為了提供這樣的演化,這樣的模式的生成能夠采用下述模式演化技術(shù)中的一種或多種:方面定向、變異化、構(gòu)成、交互和限制條件,下文馬上要對(duì)此予以更為詳細(xì)的討論。每一模式都可能具有單獨(dú)演化或者實(shí)現(xiàn)的不同方面。例如,對(duì)于用戶界面模式而言,就可能存在諸如顯示、安全、風(fēng)格和定位的不同方面。每一方面都獨(dú)立地轉(zhuǎn)化或者演變。此外,變異化允許根據(jù)情況對(duì)模式做出改變。例如,在不同的應(yīng)用之間,用戶界面模式可能看起來(lái)略微不同?;蛘撸谙蚰骋桓袷教砑游谋咀侄螘r(shí),可能將文本表現(xiàn)為文本輸入。但是,如果將同一文本字段添加至只讀表格時(shí),則將所述文本字段表現(xiàn)為簡(jiǎn)單的串。一種實(shí)現(xiàn)變異化的機(jī)制是使所述模式受到元數(shù)據(jù)驅(qū)動(dòng)。也就是說(shuō),模式為目標(biāo)平臺(tái)生成元數(shù)據(jù),但是該模式也由元數(shù)據(jù)(例如,元元數(shù)據(jù))描述。所述元元數(shù)據(jù)根據(jù)具體的情況而變異化。模式的構(gòu)成模型允許由一組較為簡(jiǎn)單的模式匯編成復(fù)雜的模式。構(gòu)成規(guī)則含有與模式的匯編有關(guān)的結(jié)構(gòu)要求。交互規(guī)則指定模式內(nèi)的組件的行為相關(guān)性。交互的重點(diǎn)在于描述影響運(yùn)行時(shí)間系統(tǒng)的組件的相互關(guān)聯(lián)。例如,用戶界面組件能夠使頁(yè)面內(nèi)的其他組件的部分刷新。最后,約束規(guī)則指定在元數(shù)據(jù)生成過(guò)程中實(shí)施的限制或指南。可以基于目標(biāo)平臺(tái)或優(yōu)選最佳實(shí)踐的限制操縱約束條件,約束條件可以使所述構(gòu)成和交互規(guī)則遵守所述限制和指南。例如,用戶界面最佳實(shí)踐可以要求表格不含有任何文本區(qū)組件。因而根據(jù)本發(fā)明的實(shí)施例的云程序設(shè)計(jì)模型實(shí)施了允許“自服務(wù)程序員”采用意圖化程序設(shè)計(jì)技術(shù)創(chuàng)建和修改軟件的程序設(shè)計(jì)范例和原理。這樣的用戶可能是其專業(yè)域內(nèi)的專家,但是其在計(jì)算機(jī)程序設(shè)計(jì)方面可能具有很少的訓(xùn)練或者沒(méi)有訓(xùn)練過(guò),從這樣的事實(shí)可以看出對(duì)這樣的程序設(shè)計(jì)范例的需求是顯然的。例如,這樣的用戶可以是銷售人員,其又是兼職的系統(tǒng)管理員。如早前指出的,現(xiàn)有的范例不能解決簡(jiǎn)化程序設(shè)計(jì)經(jīng)驗(yàn)的問(wèn)題。實(shí)際上,此前可用的種種技術(shù)只會(huì)使計(jì)算機(jī)程序設(shè)計(jì)的工作更加艱巨。隨著軟件變得更加復(fù)雜,為實(shí)際業(yè)務(wù)邏輯編寫(xiě)的程序設(shè)計(jì)代碼與學(xué)習(xí)應(yīng)用框架所需的努力而言,仍然保持著很小的比例。根據(jù)本發(fā)明的實(shí)施例的云程序設(shè)計(jì)模型的優(yōu)點(diǎn)是簡(jiǎn)化了新程序員的程序設(shè)計(jì)經(jīng)驗(yàn)。其包括各種致力于解決這樣的程序員在基于云的計(jì)算環(huán)境中的需求的規(guī)程。從根本上來(lái)講,這樣的程序設(shè)計(jì)環(huán)境必須能夠解決意圖而不是轉(zhuǎn)化。程序設(shè)計(jì)環(huán)境的重點(diǎn)應(yīng)當(dāng)集中在實(shí)現(xiàn)對(duì)期望結(jié)果的描述,而不是在具體的框架/環(huán)境內(nèi)實(shí)施問(wèn)題的解決方案的方式。用戶應(yīng)當(dāng)優(yōu)選能夠通過(guò)業(yè)務(wù)中心用戶界面(UI)而不是綜合設(shè)計(jì)環(huán)境等指定(描述)給定意圖。通過(guò)對(duì)這樣的業(yè)務(wù)中心Π的結(jié)構(gòu)設(shè)計(jì)輔助用戶描述問(wèn)題,而不是管理程序設(shè)計(jì)任務(wù)。換言之,這樣的用戶并非是傳統(tǒng)意義上的編寫(xiě)程序(但是捕捉用戶意圖的結(jié)果仍然在邏輯的意義上構(gòu)成了 “程序”)。此外,用于描述意圖的詞匯和表示法應(yīng)當(dāng)與問(wèn)題域密切一致。從傳統(tǒng)的意義上來(lái)講,詞匯和表示法通常構(gòu)成了語(yǔ)法。從這一意義上來(lái)講,語(yǔ)法應(yīng)當(dāng)適合于問(wèn)題域,而不是要依賴于程序員采用固定語(yǔ)法(例如,通用程序設(shè)計(jì)語(yǔ)言)將意圖轉(zhuǎn)化成程序。這樣的詞匯和表示法應(yīng)當(dāng)是自適應(yīng)的(例如,用于滿足新的要求)。由于根據(jù)本發(fā)明的實(shí)施例的程序設(shè)計(jì)環(huán)境的重點(diǎn)在于捕捉用戶的意圖,因而程序(語(yǔ)法)的能力應(yīng)當(dāng)支持滿足新的不斷變化的要求的演進(jìn)。還優(yōu)選具備在不對(duì)現(xiàn)有的軟件和硬件基礎(chǔ)設(shè)施(例如,中間件運(yùn)行時(shí)間、數(shù)據(jù)庫(kù)基礎(chǔ)設(shè)施、服務(wù)器等)進(jìn)行修改(例如,無(wú)需新的專用運(yùn)行時(shí)間引擎)而使所述程序設(shè)計(jì)環(huán)境在其上運(yùn)行的能力。換言之,根據(jù)本發(fā)明的實(shí)施例的云程序設(shè)計(jì)模型的使用和實(shí)施與傳統(tǒng)方案相比所提供的優(yōu)點(diǎn)在于顯著簡(jiǎn)化了程序設(shè)計(jì)模型。例如,就中間件平臺(tái)而言,這樣的方案并非旨在重建該中間件平臺(tái),而是致力于將用戶的意圖無(wú)縫地自動(dòng)轉(zhuǎn)換成能夠通過(guò)所述中間件平臺(tái)運(yùn)行的目標(biāo)元數(shù)據(jù)/語(yǔ)言。因而,根據(jù)本發(fā)明的實(shí)施例的程序設(shè)計(jì)環(huán)境應(yīng)當(dāng)在意圖和意圖轉(zhuǎn)化“效果”之間提供直接而簡(jiǎn)單的關(guān)聯(lián)。因此,在前述例子中,轉(zhuǎn)化的“效果”并非是生成的中間件人工產(chǎn)物(artifact),而是用戶創(chuàng)建或修改的應(yīng)用中的(期望)可觀測(cè)行為。例如,如果用戶意圖是為定制實(shí)體創(chuàng)建新的頁(yè)面,那么轉(zhuǎn)化的效果是應(yīng)用中的新界面,其中,所述頁(yè)面是以某種觀感和布局表現(xiàn)出來(lái)的。在提供這樣的環(huán)境的過(guò)程中,應(yīng)當(dāng)使用戶盡可能少地接觸到系統(tǒng)的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)(實(shí)際上優(yōu)選使用戶與這樣的細(xì)節(jié)完全隔離)。在前面的例子中,這意味著用戶可能沒(méi)有中間件元數(shù)據(jù)或運(yùn)行時(shí)間的知識(shí)(也不需要任何這樣的知識(shí))。因而,所述中間件將能夠在不產(chǎn)生任何能夠被用戶觀察到的變更的情況下隨著時(shí)間的推移而演進(jìn),即,產(chǎn)生從一個(gè)版本到另一版本的變化。采用意圖程序設(shè)計(jì)的云程序設(shè)計(jì)模型的設(shè)計(jì)下面的段落將描述體現(xiàn)前述原理的根據(jù)本發(fā)明的實(shí)施例的支持“自服務(wù)”程序設(shè)計(jì)的云程序設(shè)計(jì)模型的實(shí)施例子。此外,在提供這樣的功能時(shí),諸如文中描述的程序設(shè)計(jì)環(huán)境的程序設(shè)計(jì)環(huán)境還能夠?qū)崿F(xiàn)與擴(kuò)展性相關(guān)的目標(biāo),尤其是與前述自服務(wù)程序設(shè)計(jì)概念有關(guān)的目標(biāo)。例如,這樣的可擴(kuò)展云程序設(shè)計(jì)環(huán)境提供了這樣的自服務(wù)程序員能夠通過(guò)其構(gòu)建和/或修改軟件組件以構(gòu)建期望的軟件應(yīng)用(例如,客戶關(guān)系管理(CRM)應(yīng)用)的機(jī)制。因而,這樣的程序設(shè)計(jì)環(huán)境允許將簡(jiǎn)單的組件匯編成語(yǔ)義豐富的組件(文中將其稱為組件構(gòu)成)所需的基本基元和操作的開(kāi)發(fā)。組件構(gòu)成的簡(jiǎn)單的例子是基于一組特定的布局限制和要求將一組用戶界面元素(例如,用于文本輸入的)匯編成表格。諸如文中描述的可擴(kuò)展云程序設(shè)計(jì)環(huán)境還允許對(duì)按需軟件應(yīng)用(例如,CRM SaaS應(yīng)用)采取組件構(gòu)成技術(shù),從而允許未經(jīng)訓(xùn)練的用戶(自服務(wù)程序員)采用預(yù)先配置的組件對(duì)應(yīng)用(例如,CRM SaaS應(yīng)用)進(jìn)行擴(kuò)展??梢詫⑾挛慕榻B的示例設(shè)計(jì)分解成四個(gè)主要的片段。第一個(gè)包含捕獲程序員(這里是指前述“自服務(wù)程序員”)的意圖的語(yǔ)言。接下來(lái)是前向轉(zhuǎn)換實(shí)現(xiàn),其將意圖轉(zhuǎn)換成可執(zhí)行文件(例如,中間件可執(zhí)行文件)。這樣的程序設(shè)計(jì)環(huán)境的另一部分是反向轉(zhuǎn)化實(shí)現(xiàn),其被設(shè)計(jì)為將可執(zhí)行文件轉(zhuǎn)化成意圖(例如,將中間件可執(zhí)行文件轉(zhuǎn)化成意圖)。這四個(gè)片段中的最后一個(gè)是配置用戶界面(例如,在CRM環(huán)境中為業(yè)務(wù)中心配置Π),其被設(shè)計(jì)為引導(dǎo)程序員在既不需要任何編程細(xì)節(jié),也不需要編程細(xì)節(jié)知識(shí)的情況下指定其意圖。意圖指定根據(jù)本發(fā)明的實(shí)施例的程序設(shè)計(jì)環(huán)境中的意圖指定的目的在于允許自服務(wù)程序員關(guān)注期望的結(jié)果,而不是執(zhí)行指令的按部就班的過(guò)程在指定的計(jì)算機(jī)系統(tǒng)中進(jìn)行的方式。此外,還可以相對(duì)簡(jiǎn)單地調(diào)整和修改這樣的語(yǔ)言。這樣的方案允許將每一意圖指定成命令。每一命令識(shí)別出程序員意欲使計(jì)算機(jī)系統(tǒng)執(zhí)行的一個(gè)或多個(gè)操作。命令還能夠攜帶一組進(jìn)一步提供有關(guān)所要執(zhí)行的操作的具體細(xì)節(jié)的用戶性質(zhì)。這樣的命令在幾個(gè)方面有別于傳統(tǒng)的程序設(shè)計(jì)指令。在這些差異當(dāng)中存在這樣的事實(shí),即,這樣的命令盡管缺乏明確地指導(dǎo)給定計(jì)算機(jī)系統(tǒng)執(zhí)行計(jì)算機(jī)系統(tǒng)的指令集中的具體指令的能力,但是其在更高的抽象水平上運(yùn)行,并解決程序員的意圖和要求。通過(guò)明顯的對(duì)比,傳統(tǒng)的程序設(shè)計(jì)指令(例如,計(jì)算機(jī)系統(tǒng)的指令集中的指令,例如,單機(jī)指令)存在于所述譜系的另一端,因而其是針對(duì)計(jì)算裝置的要求而量身定制的。前向轉(zhuǎn)化前向轉(zhuǎn)化基于接收自自服務(wù)程序員的體現(xiàn)自服務(wù)程序員的意圖的命令為計(jì)劃為其進(jìn)行程序設(shè)計(jì)的系統(tǒng)(例如,前述中間件平臺(tái))提供有關(guān)要執(zhí)行的操作的指導(dǎo),由此實(shí)施自服務(wù)程序員的意圖。在本發(fā)明的實(shí)施例中,將轉(zhuǎn)化單元封裝到文中被稱為模式的描述具體問(wèn)題域內(nèi)的(預(yù)定義)解決方案的概念(即邏輯)構(gòu)造中。此外,可以將這樣的模式設(shè)計(jì)為攜帶使針對(duì)特定目標(biāo)平臺(tái)的重復(fù)出現(xiàn)的解決方案“實(shí)質(zhì)化”(例如實(shí)例化)的方式的規(guī)約。在調(diào)用命令時(shí),一個(gè)或多個(gè)模式將由此實(shí)質(zhì)化。在示例中間件系統(tǒng)中的實(shí)質(zhì)化過(guò)程中,例如,所述轉(zhuǎn)化將為給定目標(biāo)平臺(tái)生成實(shí)現(xiàn)期望解決方案所必需的元數(shù)據(jù)。應(yīng)當(dāng)認(rèn)識(shí)到,根據(jù)本公開(kāi),文中描述的模式能夠重復(fù)使用任意次數(shù)(通過(guò)任何指定的迭代進(jìn)行重新配置或不進(jìn)行重新配置)。在前向轉(zhuǎn)化的支持當(dāng)中,希望為先前提及的模式演進(jìn)的概念提供支持。這樣的功能確保了,如此實(shí)質(zhì)化的模式能夠響應(yīng)于要求的變化而容易有效地演進(jìn)。文中描述了幾種提供必要的功能的技術(shù),其包括:I)方面定向。每一模式可以具有必須單獨(dú)演進(jìn)的(例如,單獨(dú)地實(shí)現(xiàn),從而允許它們(例如)隨著時(shí)間的推移而獨(dú)立地發(fā)生變化)不同的方面(即,各種特性或特征,其反映要通過(guò)其對(duì)應(yīng)的構(gòu)造處理/捕捉的各種考慮事項(xiàng)、關(guān)切事項(xiàng)等)。例如,Π模式的不同方面可能包括諸如顯示、安全、風(fēng)格和定位的方面。每一方面能夠獨(dú)立地轉(zhuǎn)化或演進(jìn),從而允許針對(duì)給定的情況對(duì)這些方面進(jìn)行單獨(dú)的裁量,從而最佳地滿足該情況的需要。2)變異化。如已經(jīng)指出的,模式可能隨著不同的情況而發(fā)生變化。例如,Π模式可以隨著縱向應(yīng)用的不同而看起來(lái)略微不同。變異化導(dǎo)致了模式自身是受到元數(shù)據(jù)驅(qū)動(dòng)的。換言之,模式為目標(biāo)中間件平臺(tái)生成元數(shù)據(jù),但是模式本身也由元數(shù)據(jù)描述(因而能夠?qū)⑵浞Q為元元數(shù)據(jù))。因此,能夠基于具體的情況而使所述元元數(shù)據(jù)變異化。3)構(gòu)成規(guī)則??梢杂梢唤M較為簡(jiǎn)單的模式組成復(fù)雜的模式。例如,可以將關(guān)于模式的相互組合的結(jié)構(gòu)要求包含到所述構(gòu)成規(guī)則內(nèi)。4)交互規(guī)則。與指定模式的組合的構(gòu)成規(guī)則形成對(duì)照的是交互規(guī)則指定模式內(nèi)的組件的行為相關(guān)性。交互規(guī)則的主要關(guān)注點(diǎn)在于描述影響運(yùn)行時(shí)間系統(tǒng)的組件之間的相互關(guān)聯(lián)。例如,Π組件能夠使頁(yè)面內(nèi)的其他組件部分刷新。5)約束條件規(guī)則。約束條件規(guī)則指定在各種構(gòu)造的生成(例如元數(shù)據(jù)生成)過(guò)程中實(shí)施的限制或準(zhǔn)則。例如,約束條件規(guī)則能夠基于目標(biāo)平臺(tái)或優(yōu)選最佳實(shí)踐的限制而指定約束條件。在這樣的方案中,例如,UI最佳實(shí)踐可以要求表格不含有任何文本區(qū)組件。反向轉(zhuǎn)化在反向轉(zhuǎn)化(文中又稱為“反射”)中,根據(jù)本發(fā)明的實(shí)施例的程序設(shè)計(jì)環(huán)境從現(xiàn)有的構(gòu)造(例如現(xiàn)有中間件元數(shù)據(jù))中識(shí)別出一個(gè)或多個(gè)模式。因而反向轉(zhuǎn)化通過(guò)模式提供的抽象化(即,模式抽象)為這樣的構(gòu)造的修訂和遷移提供了條件。在中間件元數(shù)據(jù)的例子中,這樣的模式抽象化意味著能夠按照促進(jìn)中間件元數(shù)據(jù)的修訂和遷移的方式生成中間件元數(shù)據(jù)。(應(yīng)當(dāng)理解,文中采用的“促進(jìn)” 一詞目的在于表達(dá)所討論的功能或結(jié)構(gòu)有助于輔助給定系統(tǒng)或過(guò)程實(shí)現(xiàn)所陳述的結(jié)果,而不是要求所討論的功能或結(jié)構(gòu)實(shí)現(xiàn)該結(jié)果,而且不管怎樣都不應(yīng)認(rèn)為其是強(qiáng)制性的。)在根據(jù)本發(fā)明的實(shí)施例的程序設(shè)計(jì)環(huán)境中,能夠通過(guò)(例如)利用基于規(guī)則的模式識(shí)別器實(shí)現(xiàn)這樣的反向轉(zhuǎn)化。應(yīng)用中心配置用戶界面根據(jù)本發(fā)明的實(shí)施例的應(yīng)用中心配置用戶界面起著前端應(yīng)用(例如網(wǎng)絡(luò)應(yīng)用)的作用,其使自服務(wù)程序員在不需要任何實(shí)際程序設(shè)計(jì)的情況下描述其意圖作為配置任務(wù)。隨著程序員游歷這一用戶界面,將捕捉到其意圖。于是,能夠發(fā)出命令以觸發(fā)模式的實(shí)質(zhì)化。這樣的模式實(shí)質(zhì)化的結(jié)果是生成了程序設(shè)計(jì)構(gòu)造(例如,生成了生成的中間件元數(shù)據(jù))。在所述例子中,能夠利用反向轉(zhuǎn)化通過(guò)Π將有關(guān)生成中間件元數(shù)據(jù)的即時(shí)反饋呈現(xiàn)給程序員。與常規(guī)的中間件綜合設(shè)計(jì)環(huán)境不同,能夠采用根據(jù)本發(fā)明的實(shí)施例的Π觸發(fā)簡(jiǎn)單的用戶意圖向復(fù)雜的程序設(shè)計(jì)構(gòu)造的轉(zhuǎn)化。而相比之下,常規(guī)的中間件綜合設(shè)計(jì)環(huán)境則不能提供這樣的功能,因此其自身只能呈現(xiàn)為程序設(shè)計(jì)工具。企業(yè)軟件對(duì)象生成圖3是示出了根據(jù)本發(fā)明的實(shí)施例的采用模式的企業(yè)軟件對(duì)象生成的例子的簡(jiǎn)化流程圖。如圖所示,圖3的過(guò)程開(kāi)始于選擇企業(yè)軟件對(duì)象生成的企業(yè)域(步驟310)。由于本發(fā)明的一個(gè)實(shí)施例被設(shè)想為在云計(jì)算環(huán)境中發(fā)揮作用,而在云計(jì)算環(huán)境中,有多個(gè)企業(yè)共享這些企業(yè)中的資源和各種各樣的域(例如,顧客關(guān)系管理(CRM)和人力資源管理(HRM)),因而要選擇適當(dāng)?shù)挠?,以確定由其進(jìn)行操作的模式的子集。例如,域的選擇可以是基于用戶識(shí)別或者特定用戶的群識(shí)別的自動(dòng)化過(guò)程,其也可以是用戶輸入的選擇。用戶從選定域可用的多個(gè)模式中選擇模式(步驟320)?;谙M麆?chuàng)建或修改的對(duì)象的性質(zhì)以及所要解決的問(wèn)題的性質(zhì)做出對(duì)適當(dāng)模式的選擇。如果所選擇的模式與先前選擇的模式不兼容(步驟330),那么可以拒絕所選擇的模式(步驟340)。例如,可以通過(guò)參考與先前選擇的模式相關(guān)的一個(gè)或多個(gè)規(guī)則做出兼容性判斷。如上所述,構(gòu)成規(guī)則和交互規(guī)則影響模式之間的關(guān)系。這些規(guī)則可能在生成模式時(shí)與模式相關(guān),或者可以是以后在將新的模式存入模式儲(chǔ)存庫(kù)時(shí)發(fā)現(xiàn)模式之間存在矛盾而增加的。如果拒絕了選定模式,那么為用戶提供選擇另一模式的機(jī)會(huì)(步驟320)。如果不拒絕選定的模式,那么為用戶提供選擇額外的模式的機(jī)會(huì)(步驟350)。一旦用戶選擇了希望用于企業(yè)對(duì)象的創(chuàng)建或修改的所有模式,那么提示用戶為所述一個(gè)或多個(gè)選定模式定義的參數(shù)提供值(例如,變量值、字段定義等)(步驟360)。例如,可以在諸如圖2B的配置器280的配置器內(nèi)執(zhí)行這一模式選擇、規(guī)則確認(rèn)和參數(shù)指定的過(guò)程。隨著參數(shù)值的提供,判斷所述參數(shù)值是否符合與該模式以及實(shí)例化的其他模式相關(guān)的規(guī)則(步驟370)。如果參數(shù)值超出所述規(guī)則指定的范圍或者具體值以外,那么拒絕所述參數(shù)值(步驟380),并為用戶提供另一次在考慮指定規(guī)則的情況下提供可接受的值的機(jī)會(huì)。一旦針對(duì)與選定模式相關(guān)的參數(shù)輸入了適于要解決的問(wèn)題的參數(shù)值,那么生成程序?qū)⒉捎眠x定模式生成企業(yè)軟件對(duì)象(步驟390)。例如,在圖2B所示的實(shí)施例中,配置器280將模式指定和參數(shù)的具體值結(jié)合起來(lái)生成域代碼文件連同用作生成程序120的輸入的適當(dāng)元數(shù)據(jù)。之后,生成程序120為期望平臺(tái)生成可執(zhí)行代碼(指令)(例如,針對(duì)具體平臺(tái)(例如,原始Java2平臺(tái)、企業(yè)版(J2EE)或者更近的Java平臺(tái)企業(yè)版6 (Java EE6))的Java程序設(shè)計(jì)語(yǔ)言可執(zhí)行代碼)?;蛘?,在使配置器和發(fā)生器的功能結(jié)合時(shí),能夠直接采用模式、參數(shù)值和額外元數(shù)據(jù)生成可執(zhí)行代碼。一旦生成了期望企業(yè)對(duì)象,那么所述對(duì)象就可用于在適當(dāng)?shù)钠脚_(tái)上運(yùn)行(步驟395 )。生成程序120可以利用多個(gè)方案中的任何一種生成必要的可執(zhí)行代碼。考慮本公開(kāi)將認(rèn)識(shí)到,并且如前面所注意到的,本發(fā)明的實(shí)施例采用與基于組件的方案形成對(duì)照的生成方案。在采用任一種方案的軟件系統(tǒng)的構(gòu)造中,在所采用的語(yǔ)言和由其俘獲的意圖與為了給定的實(shí)現(xiàn)生成的可執(zhí)行文件(軟件)之間存在差別。還將認(rèn)識(shí)到,在這些軟件開(kāi)發(fā)階段之間存在明顯的區(qū)別。在基于組件的方案中,語(yǔ)言和所得到的可執(zhí)行文件相互密切地交織在一起。因而,采用基于組件的方案時(shí),將使單個(gè)意圖(采用單種語(yǔ)言通過(guò)期望軟件的人工編碼表達(dá)該意圖)映射至單一實(shí)現(xiàn)(反映在由其產(chǎn)生的單個(gè)可執(zhí)行文件內(nèi))。相形之下,采用諸如文中描述的方案的生成方案時(shí),單一語(yǔ)言/意圖能夠根據(jù)各種因素產(chǎn)生多個(gè)不同的可執(zhí)行文件/實(shí)現(xiàn)。這種由根據(jù)本發(fā)明的實(shí)施例的方案提供的語(yǔ)言/意圖與所產(chǎn)生的可執(zhí)行文件/實(shí)現(xiàn)的解耦產(chǎn)生了能夠?yàn)檫@樣的可執(zhí)行文件/實(shí)現(xiàn)的生成提供極大的靈活性的方案。在認(rèn)識(shí)到這樣的方案能夠?qū)⒁鈭D動(dòng)態(tài)地映射至可執(zhí)行文件時(shí)尤其能夠體會(huì)到這一點(diǎn)的真實(shí)性。例如,作為根據(jù)本發(fā)明的實(shí)施例的過(guò)程的結(jié)果,單個(gè)意圖(例如,創(chuàng)建能夠顯示對(duì)象細(xì)節(jié)的網(wǎng)頁(yè))可以基于給定國(guó)家、行業(yè)等映射至多個(gè)種不同實(shí)現(xiàn)中的一種。在采用前述通過(guò)Java程序設(shè)計(jì)語(yǔ)言生成可執(zhí)行代碼的例子的情況下,生成程序120將接收到多個(gè)模式作為輸入。這些模式中的每者包括不同的方面。每一個(gè)這樣的方案都將具有對(duì)應(yīng)的內(nèi)容提供器。內(nèi)容提供器負(fù)責(zé)生成必要的元數(shù)據(jù)并將其注入到給定對(duì)象(例如,具體的中間件組件)內(nèi)。實(shí)質(zhì)上每一內(nèi)容提供器的都類似于給定方面特有的專用編譯器一樣運(yùn)作。例如,在生成用戶界面組件時(shí),可能涉及一個(gè)或多個(gè)方面。例如,通常如此涉及的兩個(gè)方面是外觀方面(例如,用于生成顯示(實(shí)際布局等))和安全方面(例如,用于生成該用戶界面的安全策略)。在這樣的方案中,有兩個(gè)對(duì)應(yīng)的內(nèi)容提供器。外觀內(nèi)容提供器生成符合Java服務(wù)器表情(JSF)規(guī)約的頁(yè)面元數(shù)據(jù)。安全內(nèi)容提供器創(chuàng)建安全策略并將其注入到適當(dāng)?shù)姆?wù)器內(nèi)。這樣的安全內(nèi)容可以包括(例如)輕量級(jí)目錄訪問(wèn)協(xié)議(LDAP)服務(wù)器,其被配置為驗(yàn)證和批準(zhǔn)一個(gè)或多個(gè)網(wǎng)絡(luò)實(shí)體(例如,一個(gè)或多個(gè)客戶端225或服務(wù)器230)對(duì)有組織的記錄集合(例如,數(shù)據(jù)庫(kù)、儲(chǔ)存庫(kù)、存儲(chǔ)器或者其他這樣的構(gòu)造(其中的任意項(xiàng)可以實(shí)際上指代同一對(duì)象))的訪問(wèn),以及促進(jìn)對(duì)提供這樣的訪問(wèn)的過(guò)程中涉及的分布式目錄信息服務(wù)的訪問(wèn)和維護(hù),連同其他這樣的支持功能。根據(jù)所指出的方式,模式是對(duì)于具體應(yīng)用而言經(jīng)常重復(fù)出現(xiàn)的實(shí)現(xiàn)的抽象化。如上所述,這些實(shí)現(xiàn)可以包括外觀和感覺(jué)、指南、標(biāo)準(zhǔn)等。模式被配置為揭示用于企業(yè)對(duì)象的基本配置選擇,其偏向于支持企業(yè)對(duì)象配置的約定。由于模式的一般化性質(zhì)的原因,模式通常比由模式生成的企業(yè)對(duì)象的實(shí)例更持久。圖4是示出了根據(jù)本發(fā)明的實(shí)施例的在模式創(chuàng)建過(guò)程中執(zhí)行的操作的例子的簡(jiǎn)化流程圖。圖4所示的模式生成過(guò)程開(kāi)始于所要?jiǎng)?chuàng)建的模式的識(shí)別(步驟410)。如前所述,根據(jù)本發(fā)明的實(shí)施例的模式描述了給定問(wèn)題域內(nèi)的問(wèn)題的解決方案。如前所述,具體域的模式識(shí)別至少在某種程度上依賴于對(duì)該域內(nèi)的常見(jiàn)問(wèn)題和解決方案的熟悉度。所描述的解決方案一般是通常出現(xiàn)的解決方案,更具體而言,能夠通過(guò)具體應(yīng)用中的這樣的解決方案的常常重復(fù)出現(xiàn)的實(shí)現(xiàn)的抽象化對(duì)其加以表示。通常將由在域空間內(nèi)操作的程序員(例如,模式程序員270)執(zhí)行這些重復(fù)出現(xiàn)的解決方案或者引向解決方案的重復(fù)出現(xiàn)的步驟的識(shí)另O。在這樣做的時(shí)候,模式程序員270能夠創(chuàng)建體現(xiàn)這樣的解決方案的模式,其意圖是使這樣的模式“照原樣”得到使用?;蛘?,模式程序員270創(chuàng)建這樣的模式的目的可以是為其他人(例如,自服務(wù)程序員)提供用于進(jìn)行定制的模式,從而允許他們根據(jù)其具體需求對(duì)給定的模式進(jìn)行定制。此外,模式程序員270還能夠?qū)⒛J絼?chuàng)建為使模式只是簡(jiǎn)單地定義問(wèn)題域的解決方案空間內(nèi)的“全域(universe)”,在其內(nèi)諸如自服務(wù)程序員的用戶能夠通過(guò)實(shí)際創(chuàng)建針對(duì)具體情況的模式而實(shí)現(xiàn)其意圖。通過(guò)創(chuàng)建定義這樣的全域的模式,諸如模式程序員270的模式程序員能夠?yàn)樽苑?wù)程序員提供“邊界”,從而引導(dǎo)自服務(wù)程序員游歷存在于手頭的解決方案空間內(nèi)的各種可能的解決方案,同時(shí)允許自服務(wù)程序員以一定的自由度去定義達(dá)成解決方案的方式。一旦識(shí)別了模式,就可以使所述模式與新的或者舊的“模式種類”相關(guān)聯(lián)(步驟420)。模式種類的主要作用是實(shí)現(xiàn)同一“種類”的模式之間的一致性。模式種類能夠起到指定可在同一種類的模式之間共享的公共規(guī)約和資源的作用。此外,模式種類還能夠?yàn)槟J街付ㄍ庠诨跫s,其包括(例如)模式能夠具有的各個(gè)方面的列表、該種類中的模式之間的共同規(guī)約和資源、該種類中的模式的性質(zhì)的集合、一個(gè)或多個(gè)子模式的各個(gè)方面的集合以及文字連同其用于該種類中的模式的值的列表。在適當(dāng)?shù)那闆r下,模式可以屬于多于一個(gè)模式種類。在使模式與模式種類相關(guān)時(shí),對(duì)于諸如性質(zhì)、方面、變量等的參數(shù)而言,模式將采取模式種類指定的特性,除非通過(guò)模式內(nèi)的值對(duì)其進(jìn)行覆蓋。在模式創(chuàng)建過(guò)程中還對(duì)模式的各個(gè)方面加以識(shí)別(步驟430)。如上所述,方面指定使模式實(shí)例化的要求。這些方面可以包括模式在目標(biāo)域內(nèi)的物理表現(xiàn)。例如,用戶界面模式可以具有一個(gè)或多個(gè)下述方面:外觀方面、安全方面、顯示方面和綁定方面,連同其他方面。通常前兩個(gè)方面是強(qiáng)制性的,而后者則通常是任選的。顯示方面指定模式的觀感。綁定方面指定模式與下層模型的交互方式。顯示方面和綁定方面具有其自身的物理表現(xiàn)(例如,可擴(kuò)展標(biāo)記語(yǔ)言(XML)方案)。針對(duì)模式的每一方面,識(shí)別該方面的內(nèi)容提供器(步驟440 )。內(nèi)容提供器指定如何生成具體表現(xiàn)的內(nèi)容。在一個(gè)實(shí)施例中,內(nèi)容提供器是Java類別,其控制如何為某一方面制作內(nèi)容。內(nèi)容提供器能夠采用模板生成內(nèi)容,在一個(gè)實(shí)施例中,所述模板為含有內(nèi)容的部分實(shí)現(xiàn)的XML文檔。模板內(nèi)容提供器可以含有切換邏輯,從而根據(jù)情況確定采用哪一模板。例如,如果正在創(chuàng)建輸入文本模式,并且文本容器是表格,那么內(nèi)容提供器可以選擇將輸入文本用戶界面控制包封到列單元下的模板。在本發(fā)明的一個(gè)實(shí)施例中,內(nèi)容提供器的輸出是內(nèi)容對(duì)象,該對(duì)象是含有所生成的內(nèi)容以及有關(guān)所述內(nèi)容的諸如實(shí)現(xiàn)類型的額外信息的自描述對(duì)象,所述實(shí)現(xiàn)類型將識(shí)別出用于所述內(nèi)容以及生成的內(nèi)容所針對(duì)的方面的實(shí)現(xiàn)。模板指定針對(duì)具體方面的模式內(nèi)容。通過(guò)模板表示的模式的內(nèi)容可以包括(例如)含有目標(biāo)表現(xiàn)所特有的文本片段的特定于語(yǔ)言的文字、在對(duì)模板實(shí)例化時(shí)能夠代入值的變量、模式內(nèi)包含的子模式、基于輸入性質(zhì)和模板參數(shù)的條件句以及嵌入到模板內(nèi)的子模板。一旦識(shí)別出了一個(gè)方面的內(nèi)容提供器,那么判斷是否已經(jīng)識(shí)別了最后一方面(步驟450)。如果還有其他方面,那么識(shí)別這樣的其他方面(步驟430),這時(shí)所述過(guò)程將循環(huán)過(guò)所述模式的其他方面。如果已經(jīng)識(shí)別了最后一個(gè)方面,那么識(shí)別所述模式的生成語(yǔ)境(步驟460)。生成語(yǔ)境是在使模式實(shí)例化時(shí)可用的資源的集合。這些資源可在模板內(nèi)作為變量加以訪問(wèn)。之后存儲(chǔ)模式和相關(guān)元數(shù)據(jù)(例如,存儲(chǔ)在可為特許用戶所訪問(wèn)的儲(chǔ)存庫(kù)內(nèi))(步驟470)。圖5是示出了模式、子模式、模式種類和各種規(guī)則/方面/模板之間的關(guān)系的例子的簡(jiǎn)化方框圖。指定可在模式之間共享的公共規(guī)約和資源的以及用于模式的外部契約的模式種類(在圖5中示為模式種類510)可以包括一個(gè)或多個(gè)采取了這些規(guī)約、資源和外部契約的模式(在圖5中將其描述為模式520)。模式可以包括一個(gè)或多個(gè)子模式530,其能夠?yàn)槟J教峁└嗟幕驹?。例如,子模式可以涉及模式描述的用戶界面窗口中包含的日期檢出器元件。模式520可以受到一組規(guī)則、方面和模板540的限制。類似地,每一子模式530可以與一組規(guī)則、方面、模板550相關(guān),類似地,第二模式535可以與另一組規(guī)則、方面和模板555相關(guān)。如上所述,限制規(guī)則、方面和模板提供了與每一模式相關(guān)的各種參數(shù),其將限制值的各種組合以及能夠獲準(zhǔn)在模式內(nèi)交互的子模式的組合。此外,模式種類510能夠與規(guī)則、方面和模板的模式種類集合相關(guān)??梢詫⒛J椒N類與模式和子模式之間的關(guān)系看作是分級(jí)關(guān)系。一個(gè)模式種類中的模式采取模式種類指定的特性,除非由模式內(nèi)的值對(duì)其進(jìn)行覆蓋。此外,子模式可以采取(例如,繼承)其所屬的模式的特性,除非被子模式所覆蓋。可以通過(guò)某種方式巧妙設(shè)計(jì)用于子模式的參數(shù)值,從而將其從母模式傳遞給子模式。一個(gè)模式可以不只包含在一個(gè)模式種類當(dāng)中。這樣的模式采取其作為成員的每一模式種類的定義特性,但前提是這些特性彼此不發(fā)生沖突。在來(lái)自每一模式種類的特性發(fā)生矛盾的情況下,所述模式只能采取這些特性之一。在本發(fā)明的一個(gè)實(shí)施例中,模式將采取最后一個(gè)相關(guān)模式種類的特性。規(guī)劃570提供了在由模式生成意圖之前、之時(shí)和之后要完成的步驟。所述規(guī)劃提供了一組有關(guān)如何使參數(shù)的輸入等與模式結(jié)合起來(lái)的指導(dǎo)。因而,假定向配置器提供了輸入,那么所述規(guī)劃將針對(duì)使參數(shù)和模式聯(lián)系起來(lái)的方式提供了對(duì)生成程序的引導(dǎo)。在本發(fā)明的一個(gè)實(shí)施例中,開(kāi)發(fā)供訪問(wèn)云環(huán)境中的計(jì)算機(jī)資源的企業(yè)使用的模式儲(chǔ)存庫(kù)。通過(guò)某種方式對(duì)儲(chǔ)存庫(kù)內(nèi)的模式進(jìn)行審查,從而保證由所述模式生成的軟件不會(huì)對(duì)云環(huán)境的用戶造成破壞。此外,儲(chǔ)存庫(kù)內(nèi)的模式可以經(jīng)過(guò)批準(zhǔn)才可用于具體的問(wèn)題域,并且可使其只能被這些問(wèn)題域的批準(zhǔn)用戶所訪問(wèn)。因而,可以使安全適得其所,這樣只有獲得生成該域內(nèi)的新軟件的批準(zhǔn)的“域?qū)<摇辈拍茉L問(wèn)與該域相關(guān)的模式。此外,一個(gè)域的域?qū)<也荒茉L問(wèn)與不具有其特許使用權(quán)的另一問(wèn)題域相關(guān)的模式。通過(guò)使用這樣的系統(tǒng),經(jīng)過(guò)批準(zhǔn)的用戶能夠采用被設(shè)計(jì)為促進(jìn)其意圖的表達(dá)的模式來(lái)表達(dá)其對(duì)期望軟件的意向,之后將這些生成意圖提供給軟件生成器,所述軟件生成器將輸出期望的企業(yè)類別對(duì)象,例如,業(yè)務(wù)對(duì)象、數(shù)據(jù)對(duì)象和用戶界面。示例企業(yè)服務(wù)器架構(gòu)圖6是示出了可與本發(fā)明的實(shí)施例結(jié)合使用的企業(yè)服務(wù)器架構(gòu)的簡(jiǎn)化方框圖,所屬架構(gòu)包括聯(lián)系圖5的簡(jiǎn)化方框圖描述的軟件構(gòu)造。所示出的企業(yè)服務(wù)器架構(gòu)包括企業(yè)服務(wù)器610,它是支持訪問(wèn)共同的數(shù)據(jù)庫(kù)630的客戶端群(例如,客戶端660和665)的一個(gè)或多個(gè)服務(wù)器620的邏輯組??梢詫⑵髽I(yè)服務(wù)器作為單個(gè)邏輯組進(jìn)行配置、管理和監(jiān)測(cè),從而允許管理員對(duì)企業(yè)服務(wù)器610內(nèi)的服務(wù)器620進(jìn)行起動(dòng)、停止、監(jiān)測(cè)或者參數(shù)設(shè)置。在這樣的配置中,在企業(yè)服務(wù)器層級(jí)上設(shè)置企業(yè)系統(tǒng)的參數(shù),這些參數(shù)適用于在企業(yè)服務(wù)器內(nèi)工作的每一服務(wù)器。此外,可以在服務(wù)器(例如服務(wù)器620)層級(jí)上對(duì)其他參數(shù)進(jìn)行調(diào)整,以支持對(duì)這些參數(shù)的細(xì)調(diào)。在這一分級(jí)參數(shù)語(yǔ)境下,如果在服務(wù)層次級(jí)上設(shè)定參數(shù),那么該參數(shù)的特定于服務(wù)器的值將超越該參數(shù)的企業(yè)服務(wù)器層級(jí)設(shè)置。此外,組件層級(jí)(服務(wù)器620上運(yùn)行的過(guò)程)上的參數(shù)設(shè)置將超越服務(wù)器層級(jí)上的參數(shù)設(shè)置??梢詫⒎?wù)器620配置為支持訪問(wèn)所述服務(wù)器的每一客戶端的后端及交互過(guò)程。將這些過(guò)程示為每一服務(wù)器內(nèi)的一個(gè)或多個(gè)組件625。諸如服務(wù)器620的服務(wù)器能夠支持(例如)多過(guò)程和多線程組件,并且能夠按照后臺(tái)、批處理和交互方式運(yùn)行組件。服務(wù)器組件還可以同時(shí)在服務(wù)器620中的多者上運(yùn)行,以支持更高數(shù)量的用戶和/或更高的批處理工作負(fù)荷。組件過(guò)程的例子包括(例如)移動(dòng)網(wǎng)絡(luò)客戶端同步、網(wǎng)絡(luò)客戶端的業(yè)務(wù)邏輯的操作、用于客戶端的數(shù)據(jù)庫(kù)和文件系統(tǒng)的連接和訪問(wèn)、與傳承數(shù)據(jù)或第三方數(shù)據(jù)(例如,非企業(yè)系統(tǒng)所固有的數(shù)據(jù))的整合、新帳戶、機(jī)會(huì)、服務(wù)請(qǐng)求和其他記錄自動(dòng)分配以及工作流管理。也可以將本發(fā)明的搜索過(guò)程的實(shí)施例實(shí)現(xiàn)為作為組件在一個(gè)或多個(gè)服務(wù)器620上運(yùn)行。將服務(wù)器620耦合至被示作企業(yè)服務(wù)器610的部分的網(wǎng)關(guān)服務(wù)器650。網(wǎng)關(guān)服務(wù)器650協(xié)調(diào)企業(yè)服務(wù)器610和服務(wù)器620的操作。這樣的網(wǎng)關(guān)服務(wù)器能夠?qū)ζ髽I(yè)服務(wù)器配置信息的持久存儲(chǔ),所述信息包括(例如)組件組和組件的定義和分配、工作參數(shù)和連接信息。網(wǎng)關(guān)服務(wù)器還能夠充當(dāng)服務(wù)器和組件可用性信息的登記處。例如,企業(yè)服務(wù)器610內(nèi)的服務(wù)器(例如,服務(wù)器620之一)能夠向網(wǎng)關(guān)服務(wù)器650進(jìn)行可用性的通知??梢詫⒅T如網(wǎng)絡(luò)地址的連接信息存儲(chǔ)在網(wǎng)關(guān)服務(wù)器650訪問(wèn)的存儲(chǔ)器內(nèi)。如果服務(wù)器620之一關(guān)機(jī)了或者變得不可用,那么可以從網(wǎng)關(guān)服務(wù)器650中清除與該服務(wù)器相關(guān)的連接信息。服務(wù)器620及其組件625能夠通過(guò)其在企業(yè)服務(wù)器610內(nèi)的關(guān)系訪問(wèn)一個(gè)或多個(gè)數(shù)據(jù)源(例如,數(shù)據(jù)庫(kù)630和文件系統(tǒng)640)。數(shù)據(jù)庫(kù)630能夠存儲(chǔ)(例如)與企業(yè)系統(tǒng)影響的所有操作相關(guān)的RDBMS客戶端軟件和表格、指標(biāo)和數(shù)據(jù)。這樣的數(shù)據(jù)庫(kù)信息可以包括(例如)客戶信息、市場(chǎng)數(shù)據(jù)、歷史價(jià)格制定信息、當(dāng)前價(jià)格制定信息、聯(lián)系信息等。類似地,文件系統(tǒng)640能夠存儲(chǔ)客戶端660和665以及企業(yè)服務(wù)器610使用的數(shù)據(jù)和物理文件。文件系統(tǒng)640可以是不同裝置上的共享目錄或者目錄集,企業(yè)服務(wù)器610內(nèi)的所有服務(wù)器620都可對(duì)其進(jìn)行網(wǎng)絡(luò)訪問(wèn)。為了使客戶端獲得對(duì)文件系統(tǒng)640內(nèi)的文件的訪問(wèn),客戶端能夠連接至服務(wù)器620中的適當(dāng)服務(wù)器,以請(qǐng)求文件上傳或下載。于是,所述服務(wù)器能夠采用(例如)文件系統(tǒng)管理組件訪問(wèn)文件系統(tǒng)640。如上所述,能夠?qū)⒈景l(fā)明的過(guò)程的實(shí)施例實(shí)現(xiàn)為作為組件在一個(gè)或多個(gè)服務(wù)器620上運(yùn)行。這些服務(wù)器能夠形成私有或者公共云計(jì)算環(huán)境,或者可以是其部分。替代實(shí)施例提供了可受到相同的或者不同的網(wǎng)絡(luò)服務(wù)器訪問(wèn)的單獨(dú)服務(wù)器??蛻舳?60和665為使用企業(yè)系統(tǒng)的代理提供對(duì)企業(yè)服務(wù)器610的訪問(wèn)??蛻舳送ㄟ^(guò)直接的方式(例如,客戶端660)或者通過(guò)網(wǎng)絡(luò)服務(wù)器670 (例如客戶端665)經(jīng)由網(wǎng)關(guān)服務(wù)器650與企業(yè)服務(wù)器610通信。網(wǎng)絡(luò)服務(wù)器670提供企業(yè)服務(wù)器610對(duì)基于網(wǎng)絡(luò)的請(qǐng)求(例如,HTML、XML等)做出響應(yīng)的機(jī)制。網(wǎng)絡(luò)客戶端665可以包括通過(guò)局域網(wǎng)、城域網(wǎng)或廣域網(wǎng)耦合至網(wǎng)絡(luò)服務(wù)器670并且通過(guò)各種通信媒介傳播的客戶端,如上文所討論的。此夕卜,網(wǎng)絡(luò)客戶端665可以包括通過(guò)無(wú)線通信手段訪問(wèn)網(wǎng)絡(luò)服務(wù)器670的移動(dòng)客戶端??蛻舳?60和網(wǎng)絡(luò)客戶端665的用戶可以包括(例如)銷售代理、服務(wù)代理、客戶代表、企業(yè)實(shí)體管理者等。用戶可以訪問(wèn)數(shù)據(jù)庫(kù)630內(nèi)的可由企業(yè)服務(wù)器610訪問(wèn)的所有信息,其受到用戶的安全訪問(wèn)權(quán)的控制。客戶端660和網(wǎng)絡(luò)客戶端665可能遍及企業(yè)分布,其可能包括成百上千的這樣的客戶端。每一這樣的客戶端都能夠執(zhí)行與將要存儲(chǔ)到(例如)數(shù)據(jù)庫(kù)630內(nèi)的新記錄的創(chuàng)建、數(shù)據(jù)庫(kù)630中的記錄修改或者數(shù)據(jù)庫(kù)630中的信息搜索相關(guān)的任務(wù)??蓴U(kuò)展云程序設(shè)計(jì)環(huán)境中的意圖程序設(shè)計(jì)模型的示例實(shí)現(xiàn)圖7是示出了根據(jù)本發(fā)明的實(shí)施例的可擴(kuò)展性框架架構(gòu)的各種元素的方框圖(在圖7中將其示為可擴(kuò)展性框架架構(gòu)700)。對(duì)于可擴(kuò)展性框架架構(gòu)700的操作而言最核心的是規(guī)劃705。規(guī)劃705指定將由所述架構(gòu)的規(guī)劃處理模塊(在圖7中將其示為規(guī)劃處理模塊710)執(zhí)行和/或指導(dǎo)的操作(或者在某些實(shí)施例中促進(jìn)所述操作的識(shí)別)。通常至少部分地基于規(guī)劃處理模塊710接收到的命令712確定規(guī)劃705,例如,所述命令接收自配置器714。配置器714是根據(jù)未經(jīng)訓(xùn)練的用戶(例如自服務(wù)程序員)量身打造的配置工具,其允許這樣的用戶向現(xiàn)有應(yīng)用添加新的軟件組件,或者修改其內(nèi)現(xiàn)有的軟件組件。規(guī)劃(例如,規(guī)劃705)指定要在實(shí)施給定命令的過(guò)程中執(zhí)行的一個(gè)或多個(gè)通常處于具有某種排序的序列內(nèi)的操作。在某些實(shí)施例中,通過(guò)執(zhí)行器類別執(zhí)行由規(guī)劃指定的每
一操作。例如,“CreateAttribute (創(chuàng)建屬性)”命令可以具有指定下述操作的規(guī)劃:1.分配可用的屬性。2.識(shí)別要將所述模式注入到其內(nèi)的目標(biāo)元數(shù)據(jù)和人工產(chǎn)物。3.針對(duì)所述新的屬性創(chuàng)作模式。4.將所述新模式注入到所述目標(biāo)元數(shù)據(jù)內(nèi)。將聯(lián)系圖12更為詳細(xì)地討論根據(jù)本發(fā)明的實(shí)施例的通過(guò)規(guī)劃促進(jìn)的操作以及功能的另一例子。在接收到命令712時(shí),規(guī)劃處理模塊710參考包括對(duì)規(guī)劃705的信息映射命令712(以及反向情況)的映射信息(例如,命令登記(未示出))。應(yīng)當(dāng)認(rèn)識(shí)到,命令可以映射至不只一個(gè)規(guī)劃,反過(guò)來(lái)說(shuō)就是可以有不只一個(gè)命令映射至給定規(guī)劃。因而,命令和規(guī)劃之間的關(guān)系可以是1:N、1:1或者N:1及其組合。一旦識(shí)別出了規(guī)劃705,就識(shí)別出了規(guī)劃概括出的操作,并在可能并且適當(dāng)?shù)那闆r下執(zhí)行所述操作??紤]到本公開(kāi)應(yīng)當(dāng)認(rèn)識(shí)到,在某些實(shí)施例中,諸如命令712的命令被實(shí)現(xiàn)為XML片段,其含有能夠在模式的創(chuàng)建和注入過(guò)程中使用的配置選項(xiàng)。此外,例如,能夠?qū)⒁唤M這樣的命令保存在命令配置文件中。前述命令范例起著自服務(wù)程序員的與可擴(kuò)展性框架架構(gòu)700的初級(jí)接口的作用。根據(jù)本發(fā)明的實(shí)施例的命令優(yōu)選是通配的輕量機(jī)制,從而使調(diào)用者(例如,諸如配置器714的配置器等)能夠容易有效地生成并注入新的模式。為了執(zhí)行模式的創(chuàng)建和注入所需的操作(并由此支持所討論的軟件組件的可擴(kuò)展性),可擴(kuò)展性框架架構(gòu)700提供了模式管理器715、人工產(chǎn)物管理器720和注入解析器725。模式管理器715響應(yīng)于模式請(qǐng)求730訪問(wèn)模式儲(chǔ)存庫(kù)732。在某些實(shí)施例者,模式儲(chǔ)存庫(kù)732 (文中又稱為組件儲(chǔ)存庫(kù))是可用于應(yīng)用構(gòu)建的預(yù)構(gòu)建組件的集合。此外,如果有必要可以執(zhí)行一個(gè)或多個(gè)模式構(gòu)成操作。如文中在別處指出的,模式構(gòu)成是指由其他(通常更為基本的)模式構(gòu)成語(yǔ)義豐富的模式的過(guò)程。如文中別處所述,這種通過(guò)匯集更簡(jiǎn)單的模式創(chuàng)建更為復(fù)雜的模式的能力進(jìn)一步提高了可擴(kuò)展性框架架構(gòu)700的可擴(kuò)展性質(zhì),將聯(lián)系圖8對(duì)其做更加詳細(xì)的討論。在已經(jīng)識(shí)別了(和/或構(gòu)成了,視情況而定)一個(gè)或多個(gè)滿足模式請(qǐng)求730的模式的情況下,模式管理器715返回如此識(shí)別或者構(gòu)成的模式(在圖7中將其描述為模式734)。在圖7描繪的例子中,呈現(xiàn)了樣本用戶界面模式736作為這樣的模式的例子。樣本用戶界面模式736包括顯示信息737和綁定信息738。例如,可以將顯示信息737實(shí)現(xiàn)為顯示模板,其可以包括指定樣本用戶界面模式736的觀感的信息。類似地,綁定信息738也可以采用顯示模板,例如,其可以包括指定樣本用戶界面模式736與給定數(shù)據(jù)模型的交互方式的信息。聯(lián)系圖8提供了與顯示信息737和綁定信息738相當(dāng)?shù)脑氐睦印W鳛樘峁┠J?34的部分,模式管理器715可以必須執(zhí)行模式構(gòu)成。模式構(gòu)成是指由更為基本的模式構(gòu)成更為復(fù)雜的語(yǔ)義豐富的模式的過(guò)程。在先前描述的方式當(dāng)中,模式是符合具體的語(yǔ)義和使用情況的可重復(fù)使用的構(gòu)件塊。模式與組件類似,但是具有至少一個(gè)差別:通常,組件是針對(duì)很寬的范圍內(nèi)的使用構(gòu)建的,而模式通常是針對(duì)少數(shù)的幾種具體的使用情況構(gòu)建的。因而,組件通常在采取這樣的使用方案的過(guò)程中提供豐富的可配置選項(xiàng)的集合。作為區(qū)分,模式具有在可配置性方面降低了其復(fù)雜度的固有語(yǔ)義。模式中的固有語(yǔ)義可以是通過(guò)其結(jié)構(gòu)以及其預(yù)定義性態(tài)表征的,而在組件當(dāng)中,這些結(jié)構(gòu)和性態(tài)通常是可配置的。然而,要認(rèn)識(shí)到,文中使用的模式一詞旨在傳達(dá)組件的使用的可能性(作為直觀的例子,假定模式出于本公開(kāi)的目的只是具有以可配置性降低為代價(jià)簡(jiǎn)化了其使用的固有語(yǔ)義的組件)。模式可以屬于一個(gè)或多個(gè)模式種類,將進(jìn)一步聯(lián)系圖8對(duì)此予以描述。每一模式種類促成給定模式的使用過(guò)程中的外在化契約。所述外在化契約包括一組表征模式的配置選項(xiàng)的性質(zhì)。模式可以具有一個(gè)或多個(gè)方面,每一這樣的方面滿足模式實(shí)質(zhì)化過(guò)程中的某一要求。模式的模式種類指定該模式種類的模式可以具有的方面。每一方面又包括提供該方面的實(shí)際內(nèi)容的內(nèi)容提供器。內(nèi)容提供器能夠在實(shí)際的內(nèi)容的匯編過(guò)程中采用一個(gè)或多個(gè)模板。這樣的模板可以指定作為模板采用的配置選項(xiàng)的性質(zhì)。性質(zhì)名稱通常是字母數(shù)字串(優(yōu)選不區(qū)分大小寫(xiě)),可以為性質(zhì)指定默認(rèn)值(例如,文字串)。模式的另一個(gè)可能的特性是注釋。注釋為模式提供語(yǔ)義含義。例如,如果采用模式生成細(xì)節(jié)表,那么能夠在注釋中捕捉到這一信息??梢栽谝院笊蛇@一模式的人工產(chǎn)物過(guò)程中采用這一注釋(例如,在創(chuàng)建所述模式時(shí))。圖7中描繪的可擴(kuò)展性框架架構(gòu)700的另一特征是人工產(chǎn)物管理器720。人工產(chǎn)物管理器720除了包括其他元件之外還包括多個(gè)適配器(在圖7中將其示為適配器740(1)-(N))。如圖7所示,適配器740 (I)-(N)允許人工產(chǎn)物管理器720訪問(wèn)程序設(shè)計(jì)構(gòu)造的各種資源,例如元數(shù)據(jù)、人工產(chǎn)物等(圖7中示出了構(gòu)造資源741 (I)-(M)作為其例子)。人工產(chǎn)物是為一條運(yùn)行時(shí)間元數(shù)據(jù)賦予含義的抽象化。人工產(chǎn)物除了具有其他特性和能力以外還能夠提供必要的抽象,從而允許從運(yùn)行時(shí)間元數(shù)據(jù)進(jìn)行性質(zhì)檢索。或者,能夠?qū)⑷斯ぎa(chǎn)物管理器720設(shè)計(jì)為直接訪問(wèn)構(gòu)造源(從而使得前述適配器可選)。還可以將人工產(chǎn)物管理器720設(shè)計(jì)為直接訪問(wèn)其他信息,例如各種登記(圖7中示出了人工產(chǎn)物登記處742作為其例子)。然而,如圖7所示(并且如上文指出的),適配器740 (I) - (N)不僅將人工產(chǎn)物管理器720接口連接至構(gòu)建資源741 (I) - (M),而且還接口連接至這樣的構(gòu)造源的例子,即元數(shù)據(jù)儲(chǔ)存庫(kù)744。如圖所示,人工產(chǎn)物管理器720通過(guò)適配器740(1)訪問(wèn)元數(shù)據(jù)儲(chǔ)存庫(kù)744,通過(guò)適配器(2)-(N)訪問(wèn)構(gòu)造源741 (I)-(M)。應(yīng)當(dāng)認(rèn)識(shí)到,盡管被示為具有1:1的關(guān)系,但是在既定的實(shí)現(xiàn)中所采用的適配器和構(gòu)造源實(shí)際上也可以具有一對(duì)多、多對(duì)一或者多對(duì)多的關(guān)系和/或所述關(guān)系的某種組合。然而,在圖7所示的方案中,應(yīng)當(dāng)認(rèn)識(shí)到適配器740 (I) - (N)中的每者將人工產(chǎn)物管理器720接口連接至指定構(gòu)造源(即,元數(shù)據(jù)儲(chǔ)存庫(kù)744或者構(gòu)造源741 (I) - (M)之一)??紤]到本公開(kāi)應(yīng)當(dāng)認(rèn)識(shí)到,人工產(chǎn)物登記處742保存可得以在可擴(kuò)展性框架架構(gòu)700中使用的人工產(chǎn)物以及與其相關(guān)的信息??紤]到本公開(kāi)還應(yīng)當(dāng)認(rèn)識(shí)到,人工產(chǎn)物登記處742中的人工產(chǎn)物將至少就某一方面而言是可配置的(即,可定制的),由此將對(duì)注入過(guò)程有所促進(jìn)。類似地,元數(shù)據(jù)儲(chǔ)存庫(kù)744保存與人工產(chǎn)物相關(guān)的元數(shù)據(jù)(例如,目標(biāo)元數(shù)據(jù)748)。應(yīng)當(dāng)理解,元數(shù)據(jù)儲(chǔ)存庫(kù)744只是能夠使其為人工產(chǎn)物管理器720所用的各種人工產(chǎn)物儲(chǔ)存庫(kù)的一個(gè)例子,此外,這樣的儲(chǔ)存庫(kù)支持能夠通過(guò)應(yīng)用開(kāi)發(fā)框架使其為自服務(wù)程序員所用的功能,例如,所述框架可以是聯(lián)系圖13描述的框架。在人工產(chǎn)物管理器720接收到來(lái)自規(guī)劃處理模塊710的人工產(chǎn)物請(qǐng)求(在圖7中將其示為人工產(chǎn)物請(qǐng)求746)時(shí),人工產(chǎn)物管理器720通過(guò)適配器訪問(wèn)變得可用的數(shù)據(jù)源(例如,人工產(chǎn)物登記處742和元數(shù)據(jù)儲(chǔ)存庫(kù)744),從而響應(yīng)于來(lái)自規(guī)劃處理模塊710的人工產(chǎn)物請(qǐng)求746識(shí)別、訪問(wèn)和提供所請(qǐng)求的信息(該信息是包括所請(qǐng)求人工產(chǎn)物和相關(guān)元數(shù)據(jù)的信息)(在圖7中將其示為目標(biāo)元數(shù)據(jù)748))。人工產(chǎn)物的聚集連同其他構(gòu)造一起包含(或者可能包含)在具有給定配置的人工產(chǎn)物管理器720可用的各種人工產(chǎn)物登記處當(dāng)中。文中將人工產(chǎn)物的某些聚集稱為劃分。劃分是指一個(gè)應(yīng)用域所特有的配置人工產(chǎn)物(例如模式和規(guī)劃)的集合。在某些實(shí)施例中,通過(guò)文件名和文件系統(tǒng)目錄識(shí)別劃分。放置到劃分的文件系統(tǒng)目錄中的配置文件將屬于該劃分。將聯(lián)系圖9更為詳細(xì)地討論人工產(chǎn)物管理器720的操作以及其他相關(guān)的要素及其額外特征。所請(qǐng)求的模式(模式734)和必要的元數(shù)據(jù)(目標(biāo)元數(shù)據(jù)748)現(xiàn)在已可用,因而規(guī)劃處理模塊710能夠繼續(xù)規(guī)劃705識(shí)別的操作,并將所請(qǐng)求的模式和元數(shù)據(jù)提供給注入解析器725。諸如注入解析器725的注入解析器725 (文中又稱為模式解析器)確定所要生成的模式,而其又取決于由此接收到的輸入(例如,模式734和目標(biāo)元數(shù)據(jù)748)。例如,可以基于給定命令、一個(gè)或多個(gè)屬性類型和目標(biāo)人工產(chǎn)物選擇多個(gè)模式中的具體模式進(jìn)行注入。更具體而言,模式注入是指將模式注入到現(xiàn)有人工產(chǎn)物內(nèi)(例如,從而允許自服務(wù)程序員對(duì)人工產(chǎn)物進(jìn)行定制)以及由實(shí)質(zhì)化的模式創(chuàng)建新的人工產(chǎn)物(例如,從而允許自服務(wù)程序員在所述模式的模式程序員定義的全域內(nèi)創(chuàng)建人工產(chǎn)物)的過(guò)程。因而,將模式(例如,模式705)注入到人工產(chǎn)物的運(yùn)行時(shí)間元數(shù)據(jù)(例如,目標(biāo)元數(shù)據(jù)748)內(nèi)。如文中別處指出的,運(yùn)行時(shí)間元數(shù)據(jù)是指在運(yùn)行時(shí)間系統(tǒng)的軟件組件中采用的元數(shù)據(jù)。例如,在一種實(shí)現(xiàn)中,運(yùn)行時(shí)間元數(shù)據(jù)和所產(chǎn)生的軟件組件是針對(duì)所討論的應(yīng)用創(chuàng)建的軟件文件(例如,應(yīng)用開(kāi)發(fā)框架文件)的集合。在這樣的實(shí)現(xiàn)中,通過(guò)唯一的名稱引用每一條運(yùn)行時(shí)間元數(shù)據(jù)。因而,可以采用運(yùn)行時(shí)間元數(shù)據(jù)的唯一名稱從元數(shù)據(jù)儲(chǔ)存庫(kù)(例如,元數(shù)據(jù)儲(chǔ)存庫(kù)744)中檢索到所述運(yùn)行時(shí)間元數(shù)據(jù)的內(nèi)容。如前面指出的,人工產(chǎn)物是為一條運(yùn)行時(shí)間元數(shù)據(jù)賦予含義的抽象化。在一種實(shí)現(xiàn)當(dāng)中,人工產(chǎn)物的例子是圖框。圖框是對(duì)應(yīng)于用戶界面頁(yè)面內(nèi)的區(qū)域的用戶界面人工產(chǎn)物。主區(qū)域是能夠映射至頁(yè)面內(nèi)的版面布局元素的圖框。版面布局元素是將被顯示為主對(duì)象的字段的容器。在這樣的方案中,人工產(chǎn)物將攜帶下述信息:1.名稱人工產(chǎn)物的名稱。2.種類其描述了屬于何種人工產(chǎn)物種類(例如,圖框)。3.目的其描述了此人工產(chǎn)物意思是什么(例如,主區(qū)域)。4.應(yīng)用到其描述應(yīng)用這一人工產(chǎn)物的語(yǔ)境。5.描述符每一描述符是描述該人工產(chǎn)物(例如,標(biāo)簽、驗(yàn)證器等)的名稱一值對(duì)。如上所述,應(yīng)用到信息指示了人工產(chǎn)物的應(yīng)用語(yǔ)境。例如,圖框人工產(chǎn)物用于顯示實(shí)體(例如,機(jī)會(huì))的字段。語(yǔ)境(機(jī)會(huì))為這一圖框人工產(chǎn)物賦予了額外的含義。此外,人工產(chǎn)物可以具有多個(gè)方面,其方式至少在概念上與模式的情況相當(dāng)。每一方面取得人工產(chǎn)物和對(duì)應(yīng)的運(yùn)行時(shí)間元數(shù)據(jù)之間的映射。例如,人工產(chǎn)物方面可以具有下述信息:1.運(yùn)行時(shí)間元數(shù)據(jù)名稱一其用于從元數(shù)據(jù)儲(chǔ)存庫(kù)檢索運(yùn)行時(shí)間元數(shù)據(jù)的內(nèi)容。2.定位器一定位器描述如何將這一人工產(chǎn)物定位到運(yùn)行時(shí)間元數(shù)據(jù)內(nèi)。就基于XML的元數(shù)據(jù)而言,例如,所述定位器可以是xpath表達(dá)式。在將模式注入到人工產(chǎn)物的元數(shù)據(jù)內(nèi)時(shí),通常需要有關(guān)所述人工產(chǎn)物的元數(shù)據(jù)中的將注入所述模式的點(diǎn)的信息,文中將其稱為切入點(diǎn)。切入點(diǎn)指定了將模式注入到人工產(chǎn)物內(nèi)的插入點(diǎn)。然而,這里應(yīng)當(dāng)指出,在切入點(diǎn)的自動(dòng)識(shí)別和定位處于本公開(kāi)的范圍內(nèi)時(shí),情況就未必如此了。這樣的自動(dòng)識(shí)別和定位能夠通過(guò)這樣的技術(shù)實(shí)現(xiàn),例如,運(yùn)行時(shí)間元數(shù)據(jù)中的模式的識(shí)別、有關(guān)過(guò)去注入這樣的模式的位置的歷史信息的使用以及其他這樣的自動(dòng)化技術(shù)。在一種實(shí)現(xiàn)中,切入點(diǎn)可以包括(例如)下述信息:1.名稱一識(shí)別切入點(diǎn)的唯一名稱。
2.算子一指定如何將模式插入到人工產(chǎn)物中的切入點(diǎn)算子。3.注入器一作為用于執(zhí)行插入的實(shí)施類別的注入器。能夠在切入點(diǎn)信息中識(shí)別出這一類別,或者可以將其實(shí)際包含到信息本身當(dāng)中。就算子切入點(diǎn)信息而言,如此識(shí)別出的切入點(diǎn)算子的例子包括“插入”、“之后”、“之前”和“插入排序”?!安迦肱判颉敝甘咀⑷虢馕銎?25將模式插入到運(yùn)行時(shí)間元數(shù)據(jù)中的現(xiàn)有元素之間的相對(duì)位置內(nèi)。每一切入點(diǎn)算子可以與具體的方面相關(guān)。例如,對(duì)于顯示方面而言,可以采用“插入排序”切入點(diǎn)算子,而對(duì)于綁定方面而言,可以采用“插入”切入點(diǎn)算子。在可擴(kuò)展性框架架構(gòu)700中,對(duì)于要通過(guò)注入解析器725注入到人工產(chǎn)物中的模式而言,需要下面的兩條信息:1.將要插入所述模式的人工產(chǎn)物。2.將要注入的模式。3.用于確定如何執(zhí)行插入的切入點(diǎn)。在被呈現(xiàn)為可擴(kuò)展性框架架構(gòu)700的實(shí)現(xiàn)當(dāng)中,將在注入過(guò)程中執(zhí)行以下操作:1.選擇模式中的方面。2.針對(duì)選定的方面從模式檢索生成內(nèi)容。3.針對(duì)選定的方面從人工產(chǎn)物檢索運(yùn)行時(shí)間元數(shù)據(jù)??梢葬槍?duì)選定的方面采用定位器對(duì)運(yùn)行時(shí)間元數(shù)據(jù)進(jìn)行檢索。4.針對(duì)選定的方面對(duì)切入點(diǎn)算子進(jìn)行檢索。5.調(diào)用注入器,從而將所述生成的內(nèi)容注入到運(yùn)行時(shí)間元數(shù)據(jù)內(nèi)。如前面指出的,也可以在可擴(kuò)展性框架架構(gòu)700中生成人工產(chǎn)物。為了采用給定模式執(zhí)行人工產(chǎn)物生成,采用專門(mén)的切入點(diǎn)創(chuàng)建新的人工產(chǎn)物。在這樣的方案中,必須對(duì)給定模式給出正確的注釋,從而能夠由模式的注釋生成新的人工產(chǎn)物。注入解析器725除了包括其他元件外,還包括多個(gè)操縱器(在圖7中將其示為操縱器750(1)-(N))。操縱器750(1)-(N)促進(jìn)注入解析器725和可擴(kuò)展性框架架構(gòu)700的各個(gè)其他系統(tǒng)元件之間的交互,由此提供對(duì)接受定制的軟件構(gòu)造進(jìn)行修改所需的功能。例如,操縱器750(1)允許注入解析器725與服務(wù)會(huì)話752交互。類似地,操縱器750 (N)允許注入解析器725與正在受到修改的各個(gè)軟件組件754交互。在支持這樣的功能的過(guò)程中,操縱器750 (I)-(N)允許注入解析器725在接收到目標(biāo)元數(shù)據(jù)748和模式734之后,將模式734注入到目標(biāo)元數(shù)據(jù)748內(nèi),并向一個(gè)或多個(gè)軟件組件754提供所定制的元數(shù)據(jù)。在執(zhí)行前述操作并使定制構(gòu)造可用的過(guò)程中,規(guī)劃處理模塊710通過(guò)(例如)向元數(shù)據(jù)服務(wù)760提供注釋和其他信息(在圖7中示出了注釋765作為其例子)而與元數(shù)據(jù)服務(wù)760通信。然而,還要認(rèn)識(shí)到,元數(shù)據(jù)服務(wù)760能夠直接支持與規(guī)劃處理模塊710相關(guān)的功能,從而包含對(duì)規(guī)劃705的處理。圖8是描繪根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)模型的模式數(shù)據(jù)模型800的簡(jiǎn)化方框圖??紤]到本公開(kāi)應(yīng)當(dāng)認(rèn)識(shí)到,模式數(shù)據(jù)模型800至少在某些特征和功能方面與聯(lián)系圖5的簡(jiǎn)化方框圖描述的軟件構(gòu)造以及文中的別處描述的模式相當(dāng)。模式數(shù)據(jù)模型800包括模式種類810、模式820、方面830、內(nèi)容提供器840和模板850。從圖8中所示的結(jié)構(gòu)將認(rèn)識(shí)到,實(shí)際上模式種類810和模式820具有多對(duì)多關(guān)系,這意味著諸如模式種類810的模式種類能夠包含多個(gè)模式,模式820就處于所述模式當(dāng)中。類似地,諸如模式820的模式可以含有一個(gè)或多個(gè)模式種類(例如,模式種類810) (S卩,作為其成員)。按照類似的方式,如圖8所示,模式820可以具有一個(gè)或多個(gè)方面(例如方面830)。然而,諸如方面830的方面與其內(nèi)容提供器(例如內(nèi)容提供器840)具有一對(duì)一的關(guān)系。然而諸如內(nèi)容提供器840的內(nèi)容提供器可以與其模板(例如模板850)具有一對(duì)多的關(guān)系。諸如模式種類810的模式種類(也可以稱呼其類別名“模式種類”)的主要功能是在同一“種類”的模式之間實(shí)現(xiàn)一致性。就其而言,模式種類起著兩個(gè)作用:1.指定可在模式之間共享的共同規(guī)約和資源;以及2.指定模式的使用過(guò)程中的外部契約(作為性質(zhì)集)。Π模式種類和數(shù)據(jù)模式種類是模式種類的例子??梢詮哪改J椒N類導(dǎo)出模式種類。例如,可以由Π模式種類導(dǎo)出文本Π模式種類。子模式種類能夠繼承母模式種類的資源。在一種實(shí)現(xiàn)中,能夠在I吳式種類中指定下述特征:1.性質(zhì)集。性質(zhì)集是性質(zhì)連同這些性質(zhì)的默認(rèn)值的集合。模式將從其模式種類自動(dòng)繼承這些性質(zhì)。模式能夠超越性質(zhì)集的默認(rèn)值。2.枚舉。枚舉含有串文字列表。性質(zhì)可以參照枚舉來(lái)指定其可能值的集合。3.方面集。方面集是模式能夠具有的方面的集合。模式可以屬于一個(gè)或多個(gè)模式種類。如果模式具有不只一個(gè)模式種類,那么通過(guò)列表指定這些模式種類,并應(yīng)用下述規(guī)則解決模式種類之間的矛盾。1.如果兩個(gè)模式種類形成了分級(jí),那么子模式種類的資源優(yōu)先。2.如果兩個(gè)模式種類沒(méi)有形成分級(jí),那么列表中的后一模式種類的資源優(yōu)先。方面指定給定模式的實(shí)質(zhì)化過(guò)程中的某一要求。一個(gè)這樣的要求可以是模式在目標(biāo)域內(nèi)的物理表示。用戶界面模式(例如,樣本用戶界面模式736)可以具有兩個(gè)方面,即顯示方面(例如,顯示信息737)和綁定方面(例如,綁定信息738)。顯示方面指定模式的觀感。綁定方面指定這一模式與模式數(shù)據(jù)模型800交互的方式。顯示方面和綁定方面每者具有其自身的物理表示(例如,XML方案)。每一方面具有其對(duì)應(yīng)的內(nèi)容提供器,以指定如何為具體的表示生成內(nèi)容。在某些實(shí)現(xiàn)中,諸如內(nèi)容提供器840的內(nèi)容提供器是Java類別,其控制某一方面的內(nèi)容制作方式。典型地,內(nèi)容提供器840采用一個(gè)或多個(gè)模板生成必要的內(nèi)容。在這樣的實(shí)現(xiàn)中,模板可以是(例如)含有所討論的內(nèi)容的部分實(shí)現(xiàn)的XML文檔?;蛘?,內(nèi)容提供器840也可以以編程的方式生成內(nèi)容。模板內(nèi)容提供器是模板的一個(gè)更加具體的例子。模板內(nèi)容提供器是基于模板生成內(nèi)容的內(nèi)容提供器。模板內(nèi)容提供器可以含有切換邏輯,其能夠根據(jù)情況確定采用哪一模板。例如,如果正在創(chuàng)建輸入文本模式,并且目標(biāo)容器是表格,那么內(nèi)容提供器可以選擇是否采用將輸入文本用戶界面控制包封到列單元下的模板。在某些實(shí)施例中,內(nèi)容提供器的輸出是內(nèi)容對(duì)象。這樣的內(nèi)容對(duì)象是不只含有生成內(nèi)容還含有有關(guān)所述內(nèi)容的額外信息的自描述對(duì)象。作為例子,內(nèi)容對(duì)象可以含有下述信息:1.生成內(nèi)容;2.實(shí)現(xiàn)類型;以及
3.正在為其生成內(nèi)容的方面。實(shí)現(xiàn)類型識(shí)別用于這一內(nèi)容的實(shí)現(xiàn)。例如,實(shí)現(xiàn)類型可以是XML內(nèi)容的“D0M” (指示文檔對(duì)象模型約定)。在這樣的實(shí)現(xiàn)中,如果缺失了實(shí)現(xiàn)類型,那么將其默認(rèn)設(shè)置為實(shí)際內(nèi)容的類別名。模板是針對(duì)具體方面的模式內(nèi)容的指定。例如,可以采用模板指定基于XML的內(nèi)容。能夠在模板中表現(xiàn)模式的內(nèi)容的形式的例子包括:1.特定于語(yǔ)言的文字。這樣的文字實(shí)質(zhì)上是目標(biāo)表示所特有的文本片段。例如,考慮到基于ADF的模式的情 況,所述文字將是嵌入到模式內(nèi)的ADF構(gòu)造。2.變量。變量是在使模板實(shí)質(zhì)化時(shí)能夠代入值的符號(hào)。變量通常是指模式的輸入性質(zhì)和模板參數(shù)。3.子模式。模板本身能夠嵌入其他子模式。4.條件句。條件句是模板內(nèi)的切換條件。這樣的條件能夠以(例如)輸入性質(zhì)和模板參數(shù)為基礎(chǔ)。5.子模板。模板本身能夠嵌入子模板。這樣的子模板將屬于同一模式中的同一方面。每一模板實(shí)質(zhì)上都是下層目標(biāo)表示的構(gòu)造的延伸。就ADF而言,用戶界面模板(例如,將與樣本用戶界面模式736 —起使用的模板)將含有所討論的應(yīng)用(例如,CRM應(yīng)用)的具體布局和視覺(jué)要求。模板還可以申明一個(gè)或多個(gè)參數(shù)。這樣的參數(shù)能夠被用作模板的文本中的變量。通常在能夠?qū)⒛0迩度氲酵环矫娴牧硪荒0鍍?nèi)時(shí)采用模板參數(shù)。模板參數(shù)增強(qiáng)了模板的可重復(fù)使用性。具有變量和條件的模板的例子如下:
權(quán)利要求
1.一種方法,包括: 從多個(gè)模式中選擇一個(gè)或多個(gè)模式,其中 所述模式中的每一個(gè)被配置為描述多個(gè)問(wèn)題域中的對(duì)應(yīng)的一個(gè)問(wèn)題域之內(nèi)的解決方案,以及 所述一個(gè)或多個(gè)模式是針對(duì)企業(yè)軟件對(duì)象的;以及生成企業(yè)軟件對(duì)象,其中 所述生成使用所述一個(gè)或多個(gè)模式生成企業(yè)軟件對(duì)象。
2.根據(jù)權(quán)利要求1所述的方法,其中 所述企業(yè)軟件對(duì) 象是記錄對(duì)象、業(yè)務(wù)邏輯對(duì)象、業(yè)務(wù)處理對(duì)象或者用戶界面對(duì)象中的一個(gè)或多個(gè)。
3.根據(jù)權(quán)利要求1所述的方法,還包括: 提供參數(shù)的值,其中 所述參數(shù)是由所述一個(gè)或多個(gè)模式定義的。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述提供值包括: 從用戶界面輸入字段接收值。
5.根據(jù)權(quán)利要求3所述的方法,其中, 所述參數(shù)的值被配置為定義所述企業(yè)軟件對(duì)象的特性。
6.根據(jù)權(quán)利要求3所述的方法,還包括: 根據(jù)一個(gè)或多個(gè)規(guī)則限制所述選擇,其中 所述一個(gè)或多個(gè)規(guī)則與所述一個(gè)或多個(gè)模式中的一個(gè)或多個(gè)或者企業(yè)軟件對(duì)象相關(guān)聯(lián)。
7.根據(jù)權(quán)利要求6所述的方法,其中 所述一個(gè)或多個(gè)規(guī)則中的一個(gè)規(guī)則支配模式的可允許的組合。
8.根據(jù)權(quán)利要求6所述的方法,其中 所述一個(gè)或多個(gè)規(guī)則中的一個(gè)規(guī)則被配置為限制所述參數(shù)的值。
9.根據(jù)權(quán)利要求6所述的方法,還包括: 選擇所述一個(gè)或多個(gè)規(guī)則,其中 基于有關(guān)要為其生成企業(yè)軟件對(duì)象的企業(yè)的信息來(lái)選擇所述一個(gè)或多個(gè)規(guī)則。
10.根據(jù)權(quán)利要求1所述的方法,還包括: 生成所述一個(gè)或多個(gè)模式中的一個(gè)模式,其中 所述模式包括 針對(duì)企業(yè)軟件對(duì)象的配置選項(xiàng)。
11.根據(jù)權(quán)利要求10所述的方法,其中,所述模式還包括: 針對(duì)所述企業(yè)軟件對(duì)象的生成細(xì)節(jié)。
12.根據(jù)權(quán)利要求10所述的方法,其中,所述配置選項(xiàng)包括: 指定對(duì)在所述企業(yè)軟件對(duì)象中實(shí)例化的模式的要求的一個(gè)或多個(gè)方面。
13.根據(jù)權(quán)利要求1所述的方法,還包括: 在云計(jì)算環(huán)境中執(zhí)行所述選擇和生成;以及 在所述云計(jì)算環(huán)境中執(zhí)行所述企業(yè)軟件對(duì)象。
14.一種計(jì)算機(jī)程序產(chǎn)品,包括:多個(gè)指令,包括 可在計(jì)算機(jī)系統(tǒng)上執(zhí)行的第一指令集,其被配置為 從多個(gè)模式中選擇一個(gè)或多個(gè)模式,其中 所述模式中的每一個(gè)配置為描述多個(gè)問(wèn)題域中的對(duì)應(yīng)的一個(gè)問(wèn)題域內(nèi)的解決方案,以及 所述一個(gè)或多個(gè)模式是針對(duì)企業(yè)軟件對(duì)象的,以及 可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第二指令集,其被配置為生成企業(yè)軟件對(duì)象,其中 所述生成使用所述一個(gè)或多個(gè)模式來(lái)生成企業(yè)軟件對(duì)象;以及 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述指令被編碼在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi)。
15.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)程序產(chǎn)品,其中 所述企業(yè)軟件對(duì)象是記錄對(duì)象、業(yè)務(wù)處理對(duì)象、或者用戶界面對(duì)象中的一個(gè)或多個(gè)。
16.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述指令還包括: 可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第三指令集,其被配置為提供參數(shù)的值,其中 所述參數(shù)是由所述一個(gè)或多個(gè)模式定義的, 所述第三指令集包括 可在所述計(jì)算機(jī)系統(tǒng)上運(yùn)行的第一指令子集,其被配置為從用戶界面輸入字段接收值,以及 所述參數(shù)的值被配置為定義所述企業(yè)軟件對(duì)象的特性。`
17.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述指令還包括: 可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第三指令集,其被配置為選擇一個(gè)或多個(gè)規(guī)則,其中基于有關(guān)要為其生成企業(yè)軟件對(duì)象的企業(yè)的信息選擇所述一個(gè)或多個(gè)規(guī)則;以及可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第四指令集,其被配置為根據(jù)所述一個(gè)或多個(gè)規(guī)則限制所述一個(gè)或多個(gè)模式的選擇,其中 所述一個(gè)或多個(gè)規(guī)則與一個(gè)或多個(gè)模式中的一個(gè)或多個(gè)或者企業(yè)軟件對(duì)象相關(guān)聯(lián), 所述一個(gè)或多個(gè)規(guī)則中的一個(gè)規(guī)則支配模式的可允許的組合,并且 將所述一個(gè)或多個(gè)規(guī)則中的另一個(gè)規(guī)則被配置為限制所述參數(shù)的值。
18.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述指令還包括: 可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第三指令集,其被配置為生成所述一個(gè)或多個(gè)模式中的一個(gè)模式,其中 所述模式包括以下項(xiàng)中的一個(gè)或多個(gè) 針對(duì)企業(yè)軟件對(duì)象的配置選項(xiàng), 針對(duì)所述企業(yè)軟件對(duì)象的生成細(xì)節(jié),以及 指定對(duì)在所述企業(yè)軟件對(duì)象中實(shí)例化的模式的要求的一個(gè)或多個(gè)方面。
19.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述指令還包括: 可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第三指令集,其被配置為在所述云計(jì)算環(huán)境中執(zhí)行所述企業(yè)軟件對(duì)象,其中,所述第一和第二指令集被配置為在所述云計(jì)算環(huán)境中執(zhí)行。
20.一種計(jì)算機(jī)系統(tǒng),包括: 處理器; 耦合至所述處理器的計(jì)算機(jī)可讀介質(zhì);以及指令,其中 所述指令被編碼在所述計(jì)算機(jī)可讀介質(zhì)中,以及 所述指令被配置為使所述處理器 從多個(gè)模式中選擇一個(gè)或多個(gè)模式,其中 所述模式中的每一個(gè)被配置為描述多個(gè)問(wèn)題域中的對(duì)應(yīng)的一個(gè)問(wèn)題域內(nèi)的解決方案,以及 所述一個(gè)或多個(gè)模式是針對(duì)企業(yè)軟件對(duì)象的,以及 生成企業(yè)軟件對(duì)象,其中 所述生成使用所述一個(gè)或多個(gè)模式生成企業(yè)軟件對(duì)象。
全文摘要
公開(kāi)了用于在企業(yè)環(huán)境內(nèi)擴(kuò)展和修改軟件功能,更具體而言,用于在企業(yè)環(huán)境內(nèi)采用針對(duì)企業(yè)軟件對(duì)象的一個(gè)或多個(gè)模式表達(dá)期望的功能和配置,以及采用所述模式生成所述企業(yè)軟件對(duì)象的方法、軟件程序和系統(tǒng)。根據(jù)這些實(shí)施例中的某些實(shí)施例的方法包括從多個(gè)模式中選擇一個(gè)或多個(gè)模式,其中,所述一個(gè)或多個(gè)模式是針對(duì)企業(yè)軟件對(duì)象的。之后能夠生成企業(yè)軟件對(duì)象。所述企業(yè)軟件對(duì)象是采用所述一個(gè)或多個(gè)模式生成的。每一模式被配置為描述多個(gè)問(wèn)題域中的對(duì)應(yīng)的一個(gè)問(wèn)題域內(nèi)的解決方案。
文檔編號(hào)G06F9/44GK103119557SQ201180044414
公開(kāi)日2013年5月22日 申請(qǐng)日期2011年9月19日 優(yōu)先權(quán)日2010年9月17日
發(fā)明者R·M·亞塞恩, J·亮, Y·喬一, 張曉梅 申請(qǐng)人:甲骨文國(guó)際公司