專(zhuān)利名稱(chēng):使用實(shí)體模式來(lái)捕捉數(shù)據(jù)模型的結(jié)構(gòu)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件開(kāi)發(fā)的商業(yè)框架,尤其涉及允許以可重用的方式表示數(shù)據(jù)模型地結(jié)構(gòu)模式的方法對(duì)應(yīng)用程序或計(jì)算機(jī)程序中的邏輯的靈活實(shí)現(xiàn)的框架。
背景技術(shù):
在為商業(yè)應(yīng)用程序創(chuàng)建軟件時(shí),必須考慮企業(yè)一般使用各種機(jī)制來(lái)控制和分析企業(yè)經(jīng)營(yíng),諸如會(huì)計(jì)、工資單、人力資源、銷(xiāo)售定單、雇員跟蹤、顧客關(guān)系跟蹤等。提供這些功能的工具一般是使用計(jì)算機(jī)軟件來(lái)實(shí)現(xiàn)的,且可以使用被稱(chēng)為框架或商業(yè)框架的計(jì)算機(jī)自動(dòng)化協(xié)助來(lái)構(gòu)造這些工具。軟件包可以提供用戶(hù)界面來(lái)使用戶(hù)能容易地輸入和查看對(duì)應(yīng)于各種企業(yè)經(jīng)營(yíng)的數(shù)據(jù)。也配置軟件包來(lái)訪(fǎng)問(wèn)和更新存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
設(shè)計(jì)商業(yè)應(yīng)用程序來(lái)處理各種企業(yè)業(yè)務(wù),諸如定單的履行及裝運(yùn)。商業(yè)應(yīng)用程序包含使用代碼實(shí)現(xiàn)的各種應(yīng)用程序特征。除代碼以外,商業(yè)應(yīng)用程序包含多個(gè)抽象概念以當(dāng)執(zhí)行該商業(yè)應(yīng)用程序時(shí)與代碼交互。例如,MICROSOFT BUSINESSFRAMEWORK(MBF)向企業(yè)開(kāi)發(fā)員提供各種各樣的框架定義的抽象(實(shí)體、運(yùn)算...),以及允許企業(yè)開(kāi)發(fā)員為可重用性而捕捉商業(yè)邏輯的單個(gè)抽象(特性模式)。例如,一種抽象是對(duì)存儲(chǔ)屬于顧客或銷(xiāo)售定單的數(shù)據(jù)建模的商業(yè)實(shí)體。這些實(shí)體(或?qū)ο?包含用于存儲(chǔ)數(shù)據(jù)的類(lèi)。
商業(yè)應(yīng)用程序包含涉及這些實(shí)體中的一個(gè)或多個(gè)的多種不同的模式,即實(shí)體模式。在同一應(yīng)用程序中通常手動(dòng)地重復(fù)同一模式多次,而沒(méi)有捕捉模式的方法。因此,實(shí)際上原始的模式將最終變得模糊。如果開(kāi)發(fā)員想要再次應(yīng)用該同一模式,不可能告知應(yīng)用程序中的哪一個(gè)是原始的那個(gè)。如果該原始模式改變了,那么每個(gè)應(yīng)用程序必須針對(duì)該模式來(lái)被手動(dòng)地確認(rèn)并從而改變。
就此,需要向開(kāi)發(fā)員提供捕捉包含多個(gè)實(shí)體以及含有在設(shè)計(jì)時(shí)對(duì)實(shí)體的自動(dòng)確認(rèn)的相關(guān)邏輯的結(jié)構(gòu)化模式的方法的系統(tǒng)和方法。
發(fā)明內(nèi)容
鑒于本領(lǐng)域中上述的缺陷,本發(fā)明提供用于捕捉包含多個(gè)實(shí)體和在運(yùn)行時(shí)確認(rèn)實(shí)體的相關(guān)邏輯的結(jié)構(gòu)化模式,以及提供支持任何應(yīng)用的模式并調(diào)用模式專(zhuān)用代碼的運(yùn)行時(shí)框架的系統(tǒng)和方法。當(dāng)開(kāi)發(fā)軟件時(shí),開(kāi)發(fā)員可以聲明性地重用所捕捉到的模式。一般優(yōu)點(diǎn)是在運(yùn)行時(shí)應(yīng)用是模型驅(qū)動(dòng)的,且在運(yùn)行時(shí)解釋模型數(shù)據(jù)。應(yīng)用和/或模式的使用是應(yīng)用程序或軟件程序的模型的一部分。
對(duì)本發(fā)明的若干實(shí)施例,提供了用于捕捉數(shù)據(jù)模型的結(jié)構(gòu)的方法,包括基于該數(shù)據(jù)模型內(nèi)的至少一個(gè)實(shí)體結(jié)構(gòu)來(lái)創(chuàng)建實(shí)體模式。確認(rèn)實(shí)體模式的應(yīng)用來(lái)確保該應(yīng)用遵循該實(shí)體模式。確認(rèn)的過(guò)程可以包括,將實(shí)體模式信息作為實(shí)體模式的應(yīng)用的一部分保存,并使用所述保存的實(shí)體模式信息檢查該應(yīng)用是否依附該實(shí)體模式。
實(shí)體模式含有用于檢查應(yīng)用是否依附實(shí)體模式的至少一個(gè)實(shí)體角色。另外,該過(guò)程可以包括為實(shí)體角色生成第一相應(yīng)的類(lèi),該類(lèi)具有由實(shí)體角色描述的結(jié)構(gòu)。第一類(lèi)允許在運(yùn)行時(shí)導(dǎo)航至該實(shí)體模式的其它角色。檢索可能向開(kāi)發(fā)員隱藏的元數(shù)據(jù)的一種方式是在運(yùn)行時(shí)為包含可用元數(shù)據(jù)的實(shí)體角色生成第二相應(yīng)的類(lèi)。本發(fā)明的其它優(yōu)點(diǎn)和特征將在以下描述。
將參考附圖進(jìn)一步描述根據(jù)本發(fā)明用于使用實(shí)體模式來(lái)捕捉數(shù)據(jù)模型的結(jié)構(gòu)的系統(tǒng)和方法,附圖中
圖1是根據(jù)本發(fā)明用于創(chuàng)建和使用實(shí)體模式的進(jìn)程的高級(jí)視圖流程圖2是根據(jù)本發(fā)明的可能的實(shí)施例,按照示例性實(shí)體模式在模型編輯器中可能的出現(xiàn)來(lái)示出它們的樣本屏幕截圖3是根據(jù)本發(fā)明的可能的實(shí)施例,示出使用商業(yè)實(shí)體設(shè)計(jì)器的實(shí)體角色的應(yīng)用的示例的樣本屏幕截圖4a是根據(jù)本發(fā)明,示出對(duì)應(yīng)于針對(duì)實(shí)體模式角色來(lái)確認(rèn)具體的實(shí)體的、圖1的框中所涉及的進(jìn)程的更詳細(xì)的視圖的流程圖4b是根據(jù)本發(fā)明,對(duì)應(yīng)于確定實(shí)體是否履行角色的、圖4a的框中涉及的進(jìn)程的更詳細(xì)視圖的流程圖5是示出可能的實(shí)施例中為每一實(shí)體模式生成的代碼的體系結(jié)構(gòu)的框圖。
圖6是表示適用于本發(fā)明的各方面的示例性計(jì)算設(shè)備的框圖;以及
圖7示出了可在其中實(shí)現(xiàn)多個(gè)計(jì)算機(jī)化的進(jìn)程的示例性網(wǎng)絡(luò)化計(jì)算環(huán)境。
具體實(shí)施例方式
在以下描述和附圖中描述了某些特殊細(xì)節(jié),用于提供對(duì)本發(fā)明的各個(gè)實(shí)施例的全面理解。通常與計(jì)算和軟件技術(shù)相關(guān)聯(lián)的某些公知細(xì)節(jié)將不在以下揭示中描述,來(lái)避免對(duì)本發(fā)明的各實(shí)施例的不必要的模糊。而且,本領(lǐng)域的普通技術(shù)人員可以理解,他們可以無(wú)需以下描述的細(xì)節(jié)中的一個(gè)或多個(gè)而實(shí)現(xiàn)本發(fā)明的其它實(shí)施例。最后,盡管在以下揭示中是參考步驟和序列來(lái)描述各個(gè)方法的,但是如此的描述是用于提供本發(fā)明的實(shí)施例的清楚的實(shí)現(xiàn)方式,且步驟以及步驟的序列不應(yīng)被作為實(shí)現(xiàn)本發(fā)明所必需的。
概觀
描述了用于使用實(shí)體模式捕捉數(shù)據(jù)模型的結(jié)構(gòu)的系統(tǒng)和方法。本發(fā)明涉及可以例如使用MICROSOFT BUSINESS FRAMEWORK(MBF)實(shí)現(xiàn)的實(shí)體模式。然而,盡管為示例性實(shí)現(xiàn)的討論通常根據(jù)關(guān)于MBF來(lái)描述本發(fā)明,但是本發(fā)明不限于特定的框架,且一般在諸如,例如ORACLE APPLICATION DEVELOPMENTFRAMEWORK(ADF)等其它開(kāi)發(fā)框架中也可應(yīng)用此處所討論的概念。此處揭示的實(shí)體模式可以包括關(guān)于實(shí)體圖的結(jié)構(gòu)和概念信息,且可以當(dāng)對(duì)基于實(shí)體模式改進(jìn)應(yīng)用中的總體質(zhì)量和一致性的具體應(yīng)用程序應(yīng)用這些信息時(shí)確認(rèn)信息。
首先,將描述設(shè)計(jì)實(shí)體模式、應(yīng)用實(shí)體模式角色以及確認(rèn)應(yīng)用的實(shí)體模式角色的進(jìn)程,隨后是為實(shí)體模式角色編寫(xiě)模型的討論。下一步,將使用提供的樣本生成的代碼清單來(lái)描述定義實(shí)體模式體系結(jié)構(gòu)的生成的代碼以及運(yùn)行時(shí)框架。最后,圖6和7提供了可被認(rèn)為一般適用于此處所述的系統(tǒng)和方法的計(jì)算和網(wǎng)絡(luò)環(huán)境。因?yàn)閳D6和7中的材料一般用于示例性的目的,在本說(shuō)明書(shū)的最后,名為“示例性計(jì)算和網(wǎng)絡(luò)化環(huán)境”的一節(jié)中保留相應(yīng)的描述。在附錄A中提供了此處使用的定義和術(shù)語(yǔ)的短小列表。
設(shè)計(jì)實(shí)體模式和應(yīng)用實(shí)體模式角色
首先參考圖1,示出了根據(jù)本發(fā)明用于創(chuàng)建和使用實(shí)體模式的高級(jí)視圖流程圖。正常情況下,僅開(kāi)發(fā)員已知模式的使用,或者最多生成向?qū)б惨阎J降氖褂?。?yīng)用的模式的知識(shí)不與應(yīng)用一起保持。實(shí)體模式將維持該知識(shí)作為應(yīng)用的一部分;從而使得無(wú)論何時(shí)應(yīng)用或者模式改變,都可能重新確認(rèn)任何應(yīng)用對(duì)所應(yīng)用的模式的依附。
首先,在MBF模型編輯器中設(shè)計(jì)實(shí)體模式101。下一步,實(shí)體模式角色被應(yīng)用于具體的實(shí)體102。然后,針對(duì)實(shí)體模式角色確認(rèn)具體的實(shí)體103,來(lái)確保該實(shí)體遵循該實(shí)體模式。在模型編輯器內(nèi)將實(shí)體模式設(shè)計(jì)為另一其它MBF抽象概念??梢允褂萌鏐ED的視覺(jué)設(shè)計(jì)器來(lái)設(shè)計(jì)實(shí)體模式。
下一步,發(fā)生模式專(zhuān)用代碼的運(yùn)行時(shí)執(zhí)行140。運(yùn)行時(shí)框架支持任何應(yīng)用的模式并調(diào)用模式專(zhuān)用代碼。一般的優(yōu)點(diǎn)是,運(yùn)行時(shí)操作是模型驅(qū)動(dòng)的,且在運(yùn)行時(shí)解釋模型數(shù)據(jù),可以在運(yùn)行時(shí)向?qū)嶓w查詢(xún)所應(yīng)用的角色,且實(shí)體可以使得返回角色的實(shí)例。應(yīng)用和模式的使用是應(yīng)用程序/軟件程序的模型的一部分。
下一步參考圖2,示出了顯示如示例性實(shí)體模式104在模型編輯器107中出現(xiàn)的樣本屏幕截圖。實(shí)體模式104是包含實(shí)體角色類(lèi)(EntityRoleClasses)105的頂層元素。作為示例示出了標(biāo)題行模式(HeaderLinePattern)實(shí)體模式106。實(shí)體角色遵循與特性模式相同的類(lèi)(類(lèi)型)/實(shí)例模式。實(shí)體角色是實(shí)體角色類(lèi)105的實(shí)例,同樣特性模式是特性模式類(lèi)型的實(shí)例。對(duì)于特性模式,可以選擇通過(guò)在模型編輯器107對(duì)類(lèi)和實(shí)例均使用術(shù)語(yǔ)實(shí)體角色來(lái)向開(kāi)發(fā)員隱藏(命名級(jí))。以下,術(shù)語(yǔ)實(shí)體角色將被用于類(lèi)和實(shí)例。
實(shí)體角色105固有地包括多個(gè)與實(shí)體相同的模型元素,諸如特性(Property)108、關(guān)聯(lián)(Association)109、組成(Composition)110以及特性模式。這些元素中的大多數(shù)將含有與它們具體對(duì)應(yīng)物相同的屬性。關(guān)于特性108,對(duì)實(shí)體角色105上的特性的定義必須包含足夠的信息來(lái)生成實(shí)體角色105運(yùn)行時(shí)類(lèi),該類(lèi)展示所定義的特性,并使用運(yùn)行時(shí)元數(shù)據(jù)將它們映射至主存實(shí)體上它們的相應(yīng)特性。例如,存取器(Accessor)、允許為空(AllowNull)、數(shù)組長(zhǎng)度(ArrayLength)以及類(lèi)型(Type)。對(duì)于關(guān)聯(lián)109和組成110,它們處于定義對(duì)其它實(shí)體角色的關(guān)系的實(shí)體角色105層。當(dāng)將實(shí)體角色105應(yīng)用于實(shí)際實(shí)體時(shí),必須滿(mǎn)足指定的關(guān)系。修飾(Decorations)是當(dāng)將實(shí)體角色105應(yīng)用于具體實(shí)體時(shí)必須被指定的元數(shù)據(jù)的定義。生成的實(shí)體角色類(lèi)105將含有包裝該元數(shù)據(jù)的特性。修飾已被用于性質(zhì)模式。
可以在實(shí)體角色105上定義在主存實(shí)體上其它實(shí)體角色的存在。這就是如何描述了實(shí)體角色之間的繼承。例如,公司實(shí)體角色規(guī)定政黨實(shí)體角色必須也存在于主存實(shí)體上。
可以在實(shí)體角色105上定義主存實(shí)體上的特性模式的存在。作為應(yīng)用實(shí)體角色向?qū)?在以下進(jìn)一步描述)的一部分,提供了映射或創(chuàng)建所定義的特性模式的選擇。實(shí)體模式角色可以通過(guò)使用在該層定義的特性和關(guān)系進(jìn)行導(dǎo)航以在實(shí)體模式104內(nèi)綁定。角色也可以保持“未綁定”,以使實(shí)體角色105的消費(fèi)者來(lái)綁定它們。最后,可以在實(shí)體角色類(lèi)特性上以特性模式可行的相同方式來(lái)定義特性確認(rèn)符的存在。另外,可以設(shè)計(jì)操作來(lái)以可以使用實(shí)體的方式而與實(shí)體角色105一起工作。同樣,所生成的實(shí)體角色類(lèi)是部分的,且可以使用另外的方法和公共語(yǔ)言運(yùn)行庫(kù)(CLR)特性來(lái)擴(kuò)展,CLR特性工作在實(shí)體角色類(lèi)105模型元素中定義的特性抽象上。CLR是管理.NET程序代碼的執(zhí)行并提供諸如存儲(chǔ)器和異常管理、調(diào)試和剖視以及安全性等服務(wù)的運(yùn)行時(shí)環(huán)境。CLR是.NET框架的主要組件。CLR也被稱(chēng)為虛擬執(zhí)行系統(tǒng)(VES)。
使用拖放將實(shí)體角色應(yīng)用于模型編輯器107中的實(shí)體。從實(shí)體模式106拖動(dòng)實(shí)體角色105并將其放置于實(shí)體上的實(shí)體角色文件夾上。在實(shí)體角色節(jié)點(diǎn)105上右擊將執(zhí)行對(duì)話(huà)來(lái)從模型中可用的實(shí)體模式中選取實(shí)體角色。
下一步參考圖3,示出了根據(jù)本發(fā)明使用商業(yè)實(shí)體設(shè)計(jì)器(Business EntityDesigner(BED))112的實(shí)體角色的應(yīng)用的示例的樣本屏幕截圖??梢允褂肂ED112中的拖放來(lái)應(yīng)用實(shí)體角色。所設(shè)計(jì)的實(shí)體模式(Entity Patterns)113將出現(xiàn)在工具箱(Toolbox)114的表面作為第一類(lèi)公民。例如,從工具箱114拖動(dòng)實(shí)體角色115,并將其放置于實(shí)體(Entity)116上方將應(yīng)用該實(shí)體角色115。放置動(dòng)作可能會(huì)觸發(fā)實(shí)體角色向?qū)АT撓驅(qū)⑻峁┯糜谟成浠騽?chuàng)建為實(shí)體角色描述的所有必須的特性、關(guān)聯(lián)、組成及其它元素的容易的用戶(hù)體驗(yàn)。
下一步參考圖4a,顯示了根據(jù)本發(fā)明,示出對(duì)應(yīng)于針對(duì)實(shí)體模式角色確認(rèn)具體實(shí)體的、圖1的框中所涉及的進(jìn)程的更詳細(xì)的視圖的流程圖。在設(shè)計(jì)時(shí)為對(duì)所應(yīng)用的實(shí)體角色的一致性而確認(rèn)使用應(yīng)用的實(shí)體角色的實(shí)體設(shè)計(jì)。通過(guò)使用模型確認(rèn)引擎來(lái)實(shí)現(xiàn)實(shí)體角色的規(guī)定本質(zhì),模型確認(rèn)引擎針對(duì)實(shí)體角色確認(rèn)該實(shí)體117,并確定該實(shí)體是否滿(mǎn)足該角色118。如果實(shí)體不滿(mǎn)足角色119,那么向開(kāi)發(fā)員提供出錯(cuò)消息。如果所應(yīng)用的實(shí)體角色不能被去忍,那么該模型將不能編譯。如果該實(shí)例確實(shí)滿(mǎn)足角色120,那么確認(rèn)完成121且確認(rèn)是成功的。實(shí)體模式設(shè)計(jì)器也可以編寫(xiě)說(shuō)明性的文本并嵌入至帶有信息的附加資源的超鏈接,來(lái)向開(kāi)發(fā)員提供關(guān)于實(shí)體模式的有用信息。
實(shí)體角色可以指定對(duì)實(shí)體角色的關(guān)系(關(guān)聯(lián)和組成)。在模型確認(rèn)時(shí),確認(rèn)主存實(shí)體上的具體關(guān)系,以更正多樣性并應(yīng)用正確的實(shí)體角色。雙向確認(rèn)關(guān)系。在標(biāo)題/行模式中,應(yīng)用標(biāo)題角色(HeaderRole)的實(shí)體必須含有應(yīng)用行角色(LineRole)的實(shí)體的組成,而也確認(rèn)使用行角色的實(shí)體,以查看是否由應(yīng)用標(biāo)題角色的實(shí)體組成。
下一步參考圖4b,顯示了示出對(duì)應(yīng)于確定實(shí)體是否滿(mǎn)足角色的、圖4a的框中所涉及的進(jìn)程的更詳細(xì)的視圖的流程圖??梢源_認(rèn)特性,以查看實(shí)體角色特性和具體實(shí)體特性之間的映射是否存在。也確認(rèn)是否遵循實(shí)體角色特性上的特性集,例如允許為空、類(lèi)型等。首先,檢查角色的特性141。然后,確定實(shí)體角色的這些特性是否實(shí)際匹配具體的實(shí)體特性。如果匹配,那么確認(rèn)完成,否則,例如可以向開(kāi)發(fā)員提供出錯(cuò)消息。
編程模型
實(shí)體角色將含有與所定義的特性和關(guān)系對(duì)應(yīng)的類(lèi)。這允許開(kāi)發(fā)員在更高的實(shí)體角色層使用實(shí)體數(shù)據(jù)來(lái)工作。實(shí)體角色上編寫(xiě)的代碼可以通過(guò)所應(yīng)用的特性模式直接或者間接地用其自身定義的特性以及相關(guān)實(shí)體上的特性來(lái)工作。然而,可以無(wú)需此處描述的特定編程模型來(lái)使用實(shí)體模式的設(shè)計(jì)和確認(rèn)。
關(guān)于實(shí)體角色和接口的關(guān)系,接口用于隱藏代碼實(shí)現(xiàn),而實(shí)體角色隱藏?cái)?shù)據(jù)的不同應(yīng)用。實(shí)體角色可以用于應(yīng)用“標(biāo)記接口”模式。實(shí)體角色也含有某些與(多)繼承的類(lèi)似之處??梢允褂谜5睦^承來(lái)解決某些情景,但是實(shí)體角色也可以用于多繼承情景,且含有位于實(shí)體角色與底層實(shí)體之間的額外的映射層。與多繼承相反,可以在已編譯的實(shí)體上聲明性地應(yīng)用實(shí)體角色。
實(shí)體角色可以訂閱由具體應(yīng)用激發(fā)的事件。例如,定義了名、中間名和姓的3個(gè)特性的顧客實(shí)體角色可以訂閱在名和姓上有變化的事件。當(dāng)在主存實(shí)體上激發(fā)了所訂閱的事件,將執(zhí)行在實(shí)體角色類(lèi)123中編寫(xiě)的代碼。
可以對(duì)應(yīng)用了給定實(shí)體角色的實(shí)體類(lèi)型進(jìn)行查詢(xún)。例如,可以對(duì)應(yīng)了用資源實(shí)體角色的所有實(shí)體進(jìn)行查詢(xún)。這提供了所應(yīng)用的實(shí)體角色的運(yùn)行時(shí)發(fā)現(xiàn)??赡軐?duì)實(shí)體的實(shí)例查詢(xún)所應(yīng)用的角色的列表或特殊角色的存在。這將給出類(lèi)似CLR界面的編程模型的編程模型。
首先,瞥見(jiàn)可能試圖表示使用CLR界面的實(shí)體上的所應(yīng)用的實(shí)體角色,但這要求實(shí)體的重新編譯,并產(chǎn)生如下的代碼,這對(duì)于定制情景是不期望的。
Customer customer=Customer.Create();
if(customer is IParty)
{
//進(jìn)行Iparty填充
}
相反,如以下代碼所示,實(shí)現(xiàn)其中可以通過(guò)一種方法來(lái)查詢(xún)實(shí)體的編程模型
Customer customer=Customer.Create();
if(customer.IsEntityRole<PartyEntityRole>())
{
//進(jìn)行Party填充
}
類(lèi)似于作為界面的關(guān)鍵詞,可以如以下代碼所示,對(duì)實(shí)體查詢(xún)特定實(shí)體角色的實(shí)例
Customer customer=Customer.Create();
PartyEntityRole party=customer.GetEntityRole<PartyEntityRole>();
if(party!=null)
{
//進(jìn)行Party
}
可以多次應(yīng)用實(shí)體角色(每次使用不同的映射),因此如下所示,支持對(duì)實(shí)體查詢(xún)特定實(shí)體角色類(lèi)的列表的支持
Customer customer=Customer.Create();
PartyEntityRole[]parties=
customer.GetEntityRoles<PartyEntityRole>();
foreach(PartyEntityRole party in parties)
{
//至Party
}
如下所示,也支持檢索對(duì)實(shí)體的所有實(shí)體角色列表
Customer customer=Customer.Create();
EntityRole[]roles=customer.GetEntityRoles();
foreach(EntityRole role in roles)
{
//進(jìn)示stuff
}
生成的代碼以及運(yùn)行時(shí)框架
下一步參考圖5,顯示了示出為每一實(shí)體模式113生成的代碼的體系結(jié)構(gòu)。對(duì)每一實(shí)體模式113中的每一實(shí)體角色122,由框架生成兩個(gè)對(duì)應(yīng)的類(lèi)。一個(gè)類(lèi)是運(yùn)行時(shí)編程接口123,它具有由角色描述的結(jié)構(gòu),并允許導(dǎo)航(124)至同一模式113的其它角色125。其它類(lèi)126包含在運(yùn)行時(shí)可用的與每一角色相關(guān)聯(lián)(127)的元數(shù)據(jù)。以上描述了一個(gè)實(shí)施例中,在框架中如何生成類(lèi),然而,可以用不同的方式(甚至作為類(lèi)123的一部分)實(shí)現(xiàn)元數(shù)據(jù)類(lèi)126。同樣,如上所述,在運(yùn)行時(shí)可以對(duì)實(shí)體查詢(xún)所應(yīng)用的角色,并返回該角色類(lèi)的實(shí)例。
例如,類(lèi)(<EntityRoleName>)展示了所定義的特性、關(guān)聯(lián)和組成,以及包含訪(fǎng)問(wèn)存儲(chǔ)在元數(shù)據(jù)中的修飾的值的特性的類(lèi)(<EntityRoleName>info)。<EntityRoleName>Info類(lèi)是從元數(shù)據(jù)服務(wù)中使用用于實(shí)體角色特性、關(guān)聯(lián)和組成以及其實(shí)體對(duì)應(yīng)物之間的映射的修飾值和數(shù)據(jù)填充的運(yùn)行時(shí)類(lèi)。對(duì)在實(shí)體角色類(lèi)上指定的每個(gè)修飾,生成CLR特性來(lái)訪(fǎng)問(wèn)與該修飾相關(guān)聯(lián)的元數(shù)據(jù)信息。
對(duì)每個(gè)特性、關(guān)聯(lián)和組成,在類(lèi)中生成帶有后綴“Map”的串類(lèi)型CLR特性。由框架來(lái)生成這些串特性,以反映主存實(shí)體類(lèi)上的目標(biāo)特性。如下提供為含有SumFormatString修飾、Sum特性和Lines組成的標(biāo)題實(shí)體角色(Header Entity Role)的info類(lèi)(信息類(lèi))所生成的代碼的示例
//----------------------------------------------------//<autogenerated>// 此代碼由工具自動(dòng)生成。// 運(yùn)行時(shí)版本2.0.40607.42//// 對(duì)該文件的改變將引起不正確的行為且如果重新生成代碼,// 可能丟失該文件。//</autogenerated>//----------------------------------------------------namespace MyModel{<!-- SIPO <DP n="8"> --><dp n="d8"/>using System;using System.BusinessFramework;using System.BusinessFramework.Entities;public class HeaderRoleInfoEntityRoleInfo{private string sumFormatString;private string sum;private string lines;public string SumFormatString{get{return this.sumFormatString;}set{this.sumFormatString=value;}}public string Sum{get{return this.sum;}set{this.sum=value;}}public string Lines{get{return this.lines;}set{this.lines=value;}}public override System.Type GetEntityRoleClass(){return typeof(HeaderRole);}}}
關(guān)于展示所定義的性質(zhì)、聯(lián)系和組成的<EntityRoleName>類(lèi),如下定義為含有SumFormatString修飾、Sum性質(zhì)和Lines組成的標(biāo)題實(shí)體角色的運(yùn)行時(shí)類(lèi)所生成的代碼的示例
//---------------------------------------------------//<autogenerated>// 此代碼由工具自動(dòng)生成。// 運(yùn)行時(shí)版本2.0.40607.42//// 對(duì)該文件的改變將引起不正確的行為且如果重新生成代碼,// 可能丟失該文件。//</autogenerated>//----------------------------------------------------namespace MyModel{using System;using System.BusinessFramework;using System.BusinessFramework.Entities;public partial class HeaderRoleEntityRole{public HeaderRole(EntityRoleInfo info,Entity entity)base(info,entity){}public Decimal Sum{get{return((Decimal)(GetEntityRoleHost().GetProperty(GetInfo().Sum).Value));}set{GetEntityRoleHost().GetProperty(GetInfo().Sum).Value=value;}}public EntityRoleCollection<LineRole>Lines{get{object value=GetEntityRoleHost().GetType().GetProperty(GetInfo().Lines).GetValue(GetEntityRoleHost(),null);if((value=null)){return null;}else{return newEntityRoleCollection<LineRole>(((EntityCollection)(value)));}}}protected new HeaderRoleInfo GetInfo(){return((HeaderRoleInfo)(base.GetInfo()));}<!-- SIPO <DP n="10"> --><dp n="d10"/>}}
使用3種方法,運(yùn)行時(shí)框架實(shí)現(xiàn)了實(shí)體類(lèi)和某些基類(lèi)。因?yàn)樗禽p便的,且在實(shí)體類(lèi)上不含有存儲(chǔ)器覆蓋。同樣,如果實(shí)體角色訂閱了事件,則可以為每一實(shí)體例示實(shí)體角色。實(shí)體角色類(lèi),例如是所應(yīng)用的實(shí)體角色的運(yùn)行時(shí)表示的基類(lèi)。使用兩種方法來(lái)獲取相應(yīng)的實(shí)體角色信息(EntityRoleInfo)對(duì)象及主存實(shí)體。以下提供實(shí)體角色類(lèi)的示例性代碼列表
namespace System.BusinessFramework.Entities
{
public abstract class EntityRole
{
public EntityRole(System.BusinessFramework.Entities.EntityRoleInfo info,System.BusinessFramework.Entities.Entity entity);
public virtual System.BusinessFramework.Entities.Entity GetEntityRoleHost();
public System.BusinessFramework.Entities.EntityRoleInfo GetInfo();
}}
例如,實(shí)體角色信息是運(yùn)行時(shí)元數(shù)據(jù)信息類(lèi)的基類(lèi),包含從元數(shù)據(jù)服務(wù)中提取出的映射上的高速緩存的信息。以下提供實(shí)體角色信息類(lèi)示例性代碼列表
namespace System.BusinessFramework.Entities
{
public abstract class EntityRoleInfo
{
protected EntityRoleInfo();
public abstract System.Type GetEntityRoleClass();
}}
實(shí)體角色集合(EntityRoleCollection)類(lèi)是允許在實(shí)體角色層訪(fǎng)問(wèn)實(shí)體集合(EntityCollection)的圍繞實(shí)體集合的包裝,而實(shí)體模式管理器(EntityPatternManager)類(lèi)負(fù)責(zé)向元數(shù)據(jù)服務(wù)查詢(xún)所應(yīng)用的實(shí)體并在需要時(shí)例示。實(shí)體模式管理器類(lèi)將連接至元數(shù)據(jù)服務(wù),且對(duì)于每一個(gè)所應(yīng)用的實(shí)體角色,將使得相應(yīng)的實(shí)體角色信息類(lèi)與必需的映射信息和相應(yīng)的實(shí)體角色類(lèi)水合。實(shí)體基類(lèi)也可以具有訪(fǎng)問(wèn)應(yīng)用于實(shí)體的實(shí)體角色的方法??梢允褂酶咚倬彺?,使得僅以預(yù)定的速率例示實(shí)體角色信息類(lèi)。
基于實(shí)體模式的自動(dòng)生成的UI
實(shí)體模式的存在保存了當(dāng)自動(dòng)生成用戶(hù)界面(UI)時(shí)可以利用的有價(jià)值的信息。建模為實(shí)體角色的一部分的特性和關(guān)系通常是實(shí)體的關(guān)鍵元素,且可以處于UI中給定的主導(dǎo)地位。
當(dāng)在有限可用空間的UI上顯示帶有所應(yīng)用的政黨角色的顧客實(shí)體時(shí),自動(dòng)生成機(jī)制可以使用政黨角色的存在來(lái)選擇顯示的特性。
UI布局可以被鏈接至實(shí)體模式,從而通過(guò)檢查具體實(shí)體所應(yīng)用的實(shí)體角色來(lái)為具體實(shí)體提供一致的UI。
示例性計(jì)算和網(wǎng)絡(luò)環(huán)境
參考圖6,示出了表示適于結(jié)合本發(fā)明的各方面使用的示例性計(jì)算設(shè)備的框圖。例如,實(shí)現(xiàn)用于在樹(shù)視圖中編輯內(nèi)聯(lián)性質(zhì)的過(guò)程和方法的計(jì)算機(jī)可執(zhí)行指令可以駐留和/或運(yùn)行在如圖6中所示的這樣一個(gè)計(jì)算環(huán)境中。計(jì)算系統(tǒng)環(huán)境220僅是合適的計(jì)算環(huán)境的一個(gè)示例,并不旨在對(duì)本發(fā)明的使用范圍或功能提出任何限制。也不應(yīng)該把計(jì)算環(huán)境220解釋為對(duì)示例性操作環(huán)境220中示出的任一組件或其組合有任何依賴(lài)性或要求。
本發(fā)明可用眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來(lái)操作。適合在本發(fā)明中使用的公知的計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括,但不限于,個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)者電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包含上述系統(tǒng)或設(shè)備中的任一個(gè)的分布式計(jì)算機(jī)環(huán)境等。
本發(fā)明可在諸如由計(jì)算機(jī)執(zhí)行的程序模塊等的計(jì)算機(jī)可執(zhí)行指令的通用語(yǔ)境中描述。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型。本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)現(xiàn),其中任務(wù)由通過(guò)通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
用于實(shí)現(xiàn)本發(fā)明各方面的示例性系統(tǒng)包括計(jì)算機(jī)241形式的通用計(jì)算設(shè)備。計(jì)算機(jī)241的組件可以包括,但不限于,處理單元259、系統(tǒng)存儲(chǔ)器222和將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合至處理單元259的系統(tǒng)總線(xiàn)221。系統(tǒng)總線(xiàn)221可以是若干類(lèi)型的總線(xiàn)結(jié)構(gòu)中的任一種,包括存儲(chǔ)器總線(xiàn)或存儲(chǔ)器控制器、外圍總線(xiàn)和使用各種總線(xiàn)體系結(jié)構(gòu)中的任一種的局部總線(xiàn)。作為示例,而非限制,這樣的體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線(xiàn)、微通道體系結(jié)構(gòu)(MCA)總線(xiàn)、擴(kuò)展的ISA(EISA)總線(xiàn)、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線(xiàn)和外圍部件互連(PCI)總線(xiàn)(也被稱(chēng)為Mezzanine總線(xiàn))。
計(jì)算機(jī)241通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能夠被計(jì)算機(jī)241訪(fǎng)問(wèn)的任何可用介質(zhì),且包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例,而非限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以任何方法或技術(shù)實(shí)現(xiàn)的用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(pán)(DVD)或其它光盤(pán)存儲(chǔ)、磁帶盒、磁帶、磁盤(pán)存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或能用于存儲(chǔ)所需信息且可以由計(jì)算機(jī)241訪(fǎng)問(wèn)的任何其它介質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),且包含任何信息傳遞介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”指的是這樣一種信號(hào),其一個(gè)或多個(gè)特征以在信號(hào)中編碼信息的方式被設(shè)定或更改。作為示例,而非限制,通信介質(zhì)包括有線(xiàn)介質(zhì),諸如有線(xiàn)網(wǎng)絡(luò)或直接線(xiàn)連接,以及無(wú)線(xiàn)介質(zhì),諸如聲學(xué)、RF、紅外線(xiàn)和其它無(wú)線(xiàn)介質(zhì)。上述中任一組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲(chǔ)器222包括易失性或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),諸如只讀存儲(chǔ)器(ROM)223和隨機(jī)存取存儲(chǔ)器(RAM)260。基本輸入/輸出系統(tǒng)224(BIOS)包含有助于諸如啟動(dòng)時(shí)在計(jì)算機(jī)241中元件之間傳遞信息的基本例程,它通常存儲(chǔ)在ROM 223中。RAM 260通常包含處理單元259可以立即訪(fǎng)問(wèn)和/或目前正在操作的數(shù)據(jù)和/或程序模塊。作為示例,而非限制,圖6示出了操作系統(tǒng)225、應(yīng)用程序226、其它程序模塊227和程序數(shù)據(jù)228。
計(jì)算機(jī)241也可以包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅作為示例,圖6示出了從不可移動(dòng)、非易失性磁介質(zhì)中讀取或向其寫(xiě)入的硬盤(pán)驅(qū)動(dòng)器238,從可移動(dòng)、非易失性磁盤(pán)254中讀取或向其寫(xiě)入的磁盤(pán)驅(qū)動(dòng)器239,以及從諸如CD ROM或其它光學(xué)介質(zhì)等可移動(dòng)、非易失性光盤(pán)253中讀取或向其寫(xiě)入的光盤(pán)驅(qū)動(dòng)器240??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,盒式磁帶、閃存卡、數(shù)字多功能盤(pán)、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等。硬盤(pán)驅(qū)動(dòng)器238通常由不可移動(dòng)存儲(chǔ)器接口,諸如接口234連接至系統(tǒng)總線(xiàn)221,磁盤(pán)驅(qū)動(dòng)器239和光盤(pán)驅(qū)動(dòng)器240通常由可移動(dòng)存儲(chǔ)器接口,諸如接口235連接至系統(tǒng)總線(xiàn)221。
以上描述和在圖6中示出的驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)241提供了對(duì)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例如,在圖6中,硬盤(pán)驅(qū)動(dòng)器238被示為存儲(chǔ)操作系統(tǒng)258、應(yīng)用程序257、其它程序模塊256和程序數(shù)據(jù)255。注意,這些組件可以與操作系統(tǒng)225、應(yīng)用程序226、其它程序模塊227和程序數(shù)據(jù)228相同或不同。操作系統(tǒng)258、應(yīng)用程序257、其它程序模塊256和程序數(shù)據(jù)255在這里被標(biāo)注了不同的標(biāo)號(hào)是為了說(shuō)明至少它們是不同的副本。用戶(hù)可以通過(guò)輸入設(shè)備,諸如鍵盤(pán)251和定點(diǎn)設(shè)備252(通常指鼠標(biāo)、跟蹤球或觸摸墊)向計(jì)算機(jī)241輸入命令和信息。其它輸入設(shè)備(未示出)可以包括麥克風(fēng)、操縱桿、游戲墊、圓盤(pán)式衛(wèi)星天線(xiàn)、掃描儀等。這些和其它輸入設(shè)備通常由耦合至系統(tǒng)總線(xiàn)的用戶(hù)輸入接口236連接至處理單元259,但也可以由其它接口或總線(xiàn)結(jié)構(gòu),諸如并行端口、游戲端口或通用串行總線(xiàn)(USB)連接。監(jiān)視器242或其它類(lèi)型的顯示設(shè)備也經(jīng)由接口,諸如視頻接口232連接至系統(tǒng)總線(xiàn)221。除監(jiān)視器以外,計(jì)算機(jī)也可以包括其它外圍輸出設(shè)備,諸如揚(yáng)聲器244和打印機(jī)243,它們可以通過(guò)輸出外圍接口233連接。
計(jì)算機(jī)241可使用至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),諸如遠(yuǎn)程計(jì)算機(jī)246的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)246可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它常見(jiàn)網(wǎng)絡(luò)節(jié)點(diǎn),且通常包括上文相對(duì)于計(jì)算機(jī)241描述的許多或所有元件,盡管在圖6中只示出存儲(chǔ)器存儲(chǔ)設(shè)備247。圖6中所示邏輯連接包括局域網(wǎng)(LAN)245和廣域網(wǎng)(WAN)249,但也可以包括其它網(wǎng)絡(luò)。這樣的網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見(jiàn)的。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)241通過(guò)網(wǎng)絡(luò)接口或適配器237連接至LAN 245。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)241通常包括調(diào)制解調(diào)器250或用于通過(guò)諸如因特網(wǎng)等WAN 249建立通信的其它裝置。調(diào)制解調(diào)器250可以是內(nèi)置或外置的,它可以通過(guò)用戶(hù)輸入接口236或其它合適的機(jī)制連接至系統(tǒng)總線(xiàn)221。在網(wǎng)絡(luò)化環(huán)境中,相對(duì)于計(jì)算機(jī)241所描述的程序模塊或其部分可以存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例,而非限制,圖6示出了遠(yuǎn)程應(yīng)用程序248駐留在存儲(chǔ)器設(shè)備247上??梢岳斫猓镜木W(wǎng)絡(luò)連接是示例性的,且可以使用在計(jì)算機(jī)之間建立通信鏈路的其它手段。
應(yīng)該理解,此處描述的各種技術(shù)可以結(jié)合硬件或軟件或兩者的適當(dāng)組合來(lái)實(shí)現(xiàn)。這樣,本發(fā)明的方法和裝置或其某些方面或部分,可以采用包含在有形介質(zhì)中的程序代碼(即,指令)的形式,有形介質(zhì)諸如軟盤(pán)、CD-ROM、硬盤(pán)或任何其它機(jī)器可讀存儲(chǔ)介質(zhì),其中,當(dāng)程序代碼被加載至諸如計(jì)算機(jī)等機(jī)器并由其運(yùn)行時(shí),該機(jī)器成為用于實(shí)現(xiàn)本發(fā)明的裝置。在程序代碼在可編程計(jì)算機(jī)上運(yùn)行的情形中,計(jì)算設(shè)備一般包括處理器、該處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性的存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備。一個(gè)或多個(gè)程序可以例如,通過(guò)使用API、可重用控件等實(shí)現(xiàn)或利用結(jié)合本發(fā)明描述的過(guò)程。這樣的程序較佳地用高級(jí)過(guò)程語(yǔ)言或面向?qū)ο缶幊陶Z(yǔ)言來(lái)實(shí)現(xiàn),以與計(jì)算機(jī)系統(tǒng)通信。然而,如果需要,可以用匯編語(yǔ)言或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)程序。在任何情形中,語(yǔ)言可以是編譯的或解釋的語(yǔ)言,且與硬件實(shí)現(xiàn)相結(jié)合。
盡管示例性實(shí)施例涉及在一個(gè)或多個(gè)獨(dú)立計(jì)算機(jī)系統(tǒng)的環(huán)境中利用本發(fā)明的各方面,但本發(fā)明不受此限制,而是可以結(jié)合任何計(jì)算環(huán)境,諸如網(wǎng)絡(luò)或分布式計(jì)算環(huán)境來(lái)實(shí)現(xiàn)。而且,本發(fā)明的各方面可以在多個(gè)處理芯片或設(shè)備中實(shí)現(xiàn)或跨多個(gè)處理芯片或設(shè)備實(shí)現(xiàn),且存儲(chǔ)可以類(lèi)似地跨多個(gè)設(shè)備來(lái)實(shí)現(xiàn)。這樣的設(shè)備可以包括,個(gè)人計(jì)算機(jī)、網(wǎng)絡(luò)計(jì)算機(jī)、手持式設(shè)備、超級(jí)計(jì)算機(jī)或集成至諸如汽車(chē)和飛機(jī)等其它系統(tǒng)的計(jì)算機(jī)。
在圖7中提供了示例性的網(wǎng)絡(luò)化計(jì)算環(huán)境。本領(lǐng)域的普通技術(shù)人員可以理解,網(wǎng)絡(luò)可以連接任何計(jì)算機(jī)或其它客戶(hù)機(jī)或服務(wù)器設(shè)備,或處于分布式計(jì)算環(huán)境中。就此,含有任何數(shù)量的處理、存儲(chǔ)器或存儲(chǔ)單元,以及同時(shí)發(fā)生的任何數(shù)量的應(yīng)用程序和進(jìn)程的任何計(jì)算機(jī)系統(tǒng)或環(huán)境被認(rèn)為適用于本發(fā)明所提供的系統(tǒng)和方法。
分布式計(jì)算通過(guò)計(jì)算設(shè)備和系統(tǒng)之間的交換提供了計(jì)算機(jī)資源和服務(wù)的共享。這些資源和服務(wù)包括信息的交換、文件的高速緩存存儲(chǔ)和磁盤(pán)存儲(chǔ)。分布式計(jì)算利用網(wǎng)絡(luò)連接,允許客戶(hù)機(jī)利用它們的集體力量來(lái)使整個(gè)企業(yè)受益。就此,各種設(shè)備可以含有可以包含此處所描述的過(guò)程的應(yīng)用程序、對(duì)象或資源。
圖7提供了示例性的網(wǎng)絡(luò)化或分布式計(jì)算環(huán)境的示意圖。環(huán)境包括計(jì)算設(shè)備271、272、276和277,以及對(duì)象273、274和275,還有數(shù)據(jù)庫(kù)278。這些實(shí)體271、272、273、274、275、276、277和278中的每一個(gè)可以包括或使用程序、方法、數(shù)據(jù)存儲(chǔ)、可編程邏輯等。實(shí)體271、272、273、274、275、276、277和278可以跨諸如PDA、音頻/視頻設(shè)備、MP3播放器、個(gè)人計(jì)算機(jī)等的相同或不同設(shè)備的各部分。每一實(shí)體271、272、273、274、275、276、277和278可以經(jīng)由通信網(wǎng)絡(luò)270與另一實(shí)體271、272、273、274、275、276、277和278通信。就此,任何實(shí)體可以負(fù)責(zé)維護(hù)和更新數(shù)據(jù)庫(kù)278或其它存儲(chǔ)元件。
網(wǎng)絡(luò)270本身可以包括向圖7的系統(tǒng)提供服務(wù)的其它計(jì)算實(shí)體,且其本身可以表示多個(gè)互連的網(wǎng)絡(luò)。根據(jù)本發(fā)明的一方面,每一實(shí)體271、272、273、274、275、276、277和278可以包括可使用API或其它對(duì)象、軟件、固件和/或硬件來(lái)請(qǐng)求其它實(shí)體271、272、273、274、275、276、277和278中的一個(gè)或多個(gè)的服務(wù)的離散的功能性程序模塊。
也可以理解,諸如275等對(duì)象可以主存于另一計(jì)算設(shè)備276上。這樣,盡管所示的物理環(huán)境可以將所連接的設(shè)備示為計(jì)算機(jī),但是這樣的說(shuō)明僅是示例性的,該物理環(huán)境可以被替換地描述或描繪成含有諸如PDA、電視機(jī)、MP3播放器等的各種數(shù)字設(shè)備,以及諸如接口、COM對(duì)象等軟件對(duì)象。
存在支持分布式計(jì)算環(huán)境的各種系統(tǒng)、組件和網(wǎng)絡(luò)配置。例如,計(jì)算系統(tǒng)可以由有線(xiàn)或無(wú)線(xiàn)系統(tǒng)、本地網(wǎng)絡(luò)或廣泛分布的網(wǎng)絡(luò)連接在一起。目前,多個(gè)網(wǎng)絡(luò)被耦合至因特網(wǎng),因特網(wǎng)為廣泛分布的計(jì)算提供基礎(chǔ)架構(gòu)并包含多個(gè)不同的網(wǎng)絡(luò)。無(wú)論是否被耦合至因特網(wǎng),任何這樣的基礎(chǔ)架構(gòu)可以用于本發(fā)明所提供的系統(tǒng)和方法。
網(wǎng)絡(luò)基礎(chǔ)架構(gòu)可以允許諸如客戶(hù)機(jī)/服務(wù)器、對(duì)等或混合體系結(jié)構(gòu)等各種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)?!翱蛻?hù)機(jī)”是使用它無(wú)關(guān)的另一類(lèi)或組的服務(wù)的一個(gè)類(lèi)或組中的成員。在計(jì)算中,客戶(hù)機(jī)是進(jìn)程,即大致上是請(qǐng)求由另一程序提供的服務(wù)的一組指令或任務(wù)??蛻?hù)機(jī)進(jìn)程利用所請(qǐng)求的服務(wù),而不必“知道”關(guān)于其它程序或服務(wù)本身的任何工作細(xì)節(jié)。在客戶(hù)機(jī)/服務(wù)器體系結(jié)構(gòu)中,尤其在網(wǎng)絡(luò)化系統(tǒng)中,客戶(hù)機(jī)通常是訪(fǎng)問(wèn)由例如服務(wù)器等另一計(jì)算機(jī)提供的共享的網(wǎng)絡(luò)資源的計(jì)算機(jī)。在圖7的示例中,取決于環(huán)境,任何實(shí)體271、272、273、274、275、276、277和278可以被認(rèn)為是客戶(hù)機(jī)、服務(wù)器或兩者。
服務(wù)器通常,但不必須是可通過(guò)諸如因特網(wǎng)等遠(yuǎn)程或本地網(wǎng)絡(luò)訪(fǎng)問(wèn)的遠(yuǎn)程計(jì)算機(jī)系統(tǒng)??蛻?hù)機(jī)進(jìn)程可以在第一計(jì)算機(jī)系統(tǒng)中活動(dòng),而服務(wù)器進(jìn)程可以在第二計(jì)算機(jī)系統(tǒng)中活動(dòng),它們通過(guò)通信介質(zhì)彼此通信,從而提供分布式功能并允許多個(gè)客戶(hù)機(jī)利用服務(wù)器的信息收集能力。任何軟件對(duì)象可以跨多個(gè)計(jì)算設(shè)備或?qū)ο蠓植肌?br>
客戶(hù)機(jī)和服務(wù)器利用由協(xié)議層提供的功能來(lái)彼此通信。例如,超文本傳輸協(xié)議(HTTP)是用于萬(wàn)維網(wǎng)(WWW)或“Web”的常見(jiàn)協(xié)議。通常,諸如網(wǎng)際協(xié)議(IP)地址或諸如統(tǒng)一資源定位器(URL)等其它引用的計(jì)算機(jī)網(wǎng)絡(luò)地址可以用于彼此標(biāo)識(shí)服務(wù)器或客戶(hù)計(jì)算機(jī)。網(wǎng)絡(luò)地址可以被稱(chēng)為URL地址??梢酝ㄟ^(guò)通信介質(zhì)來(lái)提供通信,例如客戶(hù)機(jī)和服務(wù)器可以通過(guò)用于大容量通信的TCP/IP連接來(lái)彼此耦合。
考慮到可以根據(jù)圖6中提供的通用架構(gòu)構(gòu)建的各種計(jì)算環(huán)境,以及在諸如圖7的網(wǎng)絡(luò)環(huán)境中的計(jì)算中可能發(fā)生的變化,此處提供的系統(tǒng)和方法不能被解釋為以任何方式限于特定的計(jì)算體系結(jié)構(gòu)。而是,本發(fā)明不應(yīng)限于任何單個(gè)實(shí)施例,而是應(yīng)該根據(jù)所附權(quán)利要求書(shū)的寬度和范圍來(lái)解釋。
結(jié)論
此處描述的各種系統(tǒng)、方法和技術(shù)可以使用硬件或軟件或兩者的恰當(dāng)組合來(lái)實(shí)現(xiàn)。這樣,本發(fā)明的方法和設(shè)備,或其某些方面或部分,可以采包含在有形介質(zhì)中的程序代碼(即,指令)的形式,有形介質(zhì)諸如軟盤(pán)、CD-ROM、硬盤(pán)或任何其它機(jī)器可讀存儲(chǔ)介質(zhì),其中,當(dāng)程序代碼被加載至諸如計(jì)算機(jī)等的機(jī)器并由其運(yùn)行時(shí),該機(jī)器成為用于實(shí)現(xiàn)本發(fā)明的裝置。在程序代碼在可編程計(jì)算機(jī)上運(yùn)行的情形中,計(jì)算機(jī)一般包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性的存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備。這樣的程序較佳地用高級(jí)過(guò)程語(yǔ)言或面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)實(shí)現(xiàn),以與計(jì)算機(jī)系統(tǒng)通信。然而,如果需要,可以用匯編語(yǔ)言或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)程序。在任何情形中,語(yǔ)言可以是編譯的或解釋的語(yǔ)言,且與硬件實(shí)現(xiàn)相結(jié)合。
本發(fā)明的方法和裝置也可以具體化為通過(guò)諸如電線(xiàn)或電纜、光纖或任何其它形式的傳輸?shù)饶承﹤鬏斀橘|(zhì)傳輸?shù)某绦虼a形式,其中,當(dāng)程序代碼由諸如EPROM、門(mén)陣列、可編程邏輯器件(PLD)、客戶(hù)計(jì)算機(jī)、錄影機(jī)等機(jī)器接收、加載并運(yùn)行時(shí),該機(jī)器成為用于實(shí)現(xiàn)本發(fā)明的裝置。當(dāng)在通用處理器上實(shí)現(xiàn)時(shí),程序模塊結(jié)合處理器來(lái)提供用于執(zhí)行本發(fā)明的索引功能的獨(dú)特裝置。
盡管結(jié)合各附圖的較佳實(shí)施例描述了本發(fā)明,但是可以理解,可以使用其它類(lèi)似的實(shí)施例,或可以對(duì)所述實(shí)施例進(jìn)行修改或添加,來(lái)用于實(shí)現(xiàn)本發(fā)明的相同的功能而不背離本發(fā)明。例如,盡管在模擬個(gè)人計(jì)算機(jī)功能的數(shù)字設(shè)備的環(huán)境中描述本發(fā)明的示例性實(shí)施例,但是本領(lǐng)域的技術(shù)人員可以認(rèn)識(shí)到,本發(fā)明不限于這樣的數(shù)字設(shè)備,如在本申請(qǐng)中所述,本發(fā)明可以應(yīng)用于任何數(shù)量的現(xiàn)有或新興計(jì)算設(shè)備或環(huán)境,諸如游戲控制臺(tái)、手持式計(jì)算機(jī)、便攜式計(jì)算機(jī)等,無(wú)論它們是有線(xiàn)還是無(wú)線(xiàn)的,且可以被應(yīng)用于通過(guò)通信網(wǎng)絡(luò)連接并跨該網(wǎng)絡(luò)交互的任何數(shù)量的這樣的計(jì)算設(shè)備。而且,應(yīng)該強(qiáng)調(diào),此處構(gòu)想了各種計(jì)算機(jī)平臺(tái),包括手持式設(shè)備操作系統(tǒng)和其它應(yīng)用程序?qū)S糜布?軟件接口設(shè)備,尤其是當(dāng)無(wú)線(xiàn)網(wǎng)絡(luò)化設(shè)備的數(shù)量持續(xù)增長(zhǎng)的時(shí)候。從而,本發(fā)明不應(yīng)該限于任何單個(gè)實(shí)施例,而應(yīng)根據(jù)所附權(quán)利要求書(shū)的寬度和范圍解釋。
最后,此處所述的所揭示的實(shí)施例可以適于在其它處理器體系結(jié)構(gòu)、基于計(jì)算機(jī)的系統(tǒng)或系統(tǒng)虛擬化中使用,且此處進(jìn)行的揭示明確地預(yù)期這樣的實(shí)施例,從而,本發(fā)明不應(yīng)限于此處描述的特定實(shí)施例,而可以被最廣泛地解釋。同樣,用于除處理器虛擬化之外的目的的合成指令的使用也可以由此處進(jìn)行的揭示所預(yù)期,且在除了處理器虛擬化之外的環(huán)境中,任何這樣的合成指令的使用可以最廣泛地對(duì)此處進(jìn)行的揭示添加另外的意義。
附錄A定義和術(shù)語(yǔ)
權(quán)利要求
1.一種用于捕捉數(shù)據(jù)模型的結(jié)構(gòu)的方法,包含基于所述數(shù)據(jù)模型內(nèi)的至少一個(gè)實(shí)體結(jié)構(gòu)來(lái)創(chuàng)建實(shí)體模式。
2.如權(quán)利要求1所述的方法,其特征在于,還包括提供用于確認(rèn)所述實(shí)體模式的應(yīng)用來(lái)確保所述應(yīng)用遵循所述實(shí)體模式的機(jī)制。
3.如權(quán)利要求2所述的方法,其特征在于,所述提供確認(rèn)機(jī)制的動(dòng)作包括
提供用于保存實(shí)體模式信息作為所述實(shí)體模式的應(yīng)用的一部分的機(jī)制;以及
提供用于使用所述保存的實(shí)體模式信息檢查所述應(yīng)用是否依附所述實(shí)體模式的機(jī)制。
4.如權(quán)利要求2所述的方法,其特征在于,所述實(shí)體模式含有用于檢查所述應(yīng)用是否依附于所述實(shí)體模式的至少一個(gè)實(shí)體角色。
5.如權(quán)利要求4所述的方法,其特征在于,還包括
為所述實(shí)體角色生成相應(yīng)的類(lèi),所述類(lèi)具有由所述實(shí)體角色描述的結(jié)構(gòu),其中,第一類(lèi)允許導(dǎo)航至所述實(shí)體模式的其它角色。
6.如權(quán)利要求2所述的方法,其特征在于,所述創(chuàng)建實(shí)體模式的動(dòng)作包括
生成聲明性地應(yīng)用的編程模型作為設(shè)計(jì)所述實(shí)體模式的一部分;以及
結(jié)合所述編程模型,編寫(xiě)定義所述實(shí)體模式的軟件代碼,而無(wú)需對(duì)所述實(shí)體模式的應(yīng)用的了解。
7.如權(quán)利要求6所述的方法,其特征在于,還包括在所述實(shí)體模式中包含聲明性地應(yīng)用的功能。
8.一種其上存儲(chǔ)用于執(zhí)行用于捕捉數(shù)據(jù)模型的結(jié)構(gòu)的方法的指令的計(jì)算機(jī)可讀介質(zhì),所述方法包括基于所述數(shù)據(jù)模型內(nèi)的至少一個(gè)實(shí)體結(jié)構(gòu)來(lái)創(chuàng)建實(shí)體模式。
9.如權(quán)利要求8所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,其上存儲(chǔ)的指令還用于執(zhí)行確認(rèn)所述實(shí)體模式的應(yīng)用來(lái)確保所述所述應(yīng)用遵循所述實(shí)體模式的動(dòng)作。
10.如權(quán)利要求9所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述確認(rèn)動(dòng)作包括
保存實(shí)體模式信息作為所述實(shí)體模式的應(yīng)用的一部分;以及
使用所述保存的實(shí)體模式信息檢查所述應(yīng)用是否依附所述實(shí)體模式。
11.如權(quán)利要求9所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述實(shí)體模式含有用于檢查所述應(yīng)用是否依附于所述實(shí)體模式的至少一個(gè)實(shí)體角色。
12.如權(quán)利要求11所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括在其上存儲(chǔ)的指令,用于
為所述實(shí)體角色生成相應(yīng)的類(lèi),所述類(lèi)具有由所述實(shí)體角色描述的結(jié)構(gòu),其中,第一類(lèi)允許導(dǎo)航至所述實(shí)體模式的其它角色。
13.如權(quán)利要求9所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述創(chuàng)建實(shí)體模式的動(dòng)作包括
生成聲明性地應(yīng)用的編程模型作為設(shè)計(jì)所述實(shí)體模式的一部分;以及
結(jié)合所述編程模型,創(chuàng)建定義所述實(shí)體模式的軟件代碼,而無(wú)需對(duì)所述實(shí)體模式的應(yīng)用的了解。
14.如權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括用于在實(shí)體模式中包含聲明性地應(yīng)用的功能的其上存儲(chǔ)的指令。
15.一種用于使用數(shù)據(jù)模型的結(jié)構(gòu)的方法,包括
基于所述數(shù)據(jù)模型內(nèi)的至少一個(gè)實(shí)體結(jié)構(gòu)創(chuàng)建實(shí)體模式;以及
提供用于生成實(shí)體模式專(zhuān)用代碼的機(jī)制。
16.如權(quán)利要求15所述的方法,其特征在于,還包括提供實(shí)體角色訂閱由實(shí)體模式的應(yīng)用激發(fā)的事件的機(jī)制,其中,所述實(shí)體角色含有與所定義的特性和關(guān)系對(duì)應(yīng)的類(lèi)。
17.如權(quán)利要求15所述的方法,其特征在于,還包括提供向所述實(shí)體結(jié)構(gòu)的實(shí)例查詢(xún)所應(yīng)用的實(shí)體角色的列表的機(jī)制。
18.如權(quán)利要求15所述的方法,其特征在于,還包括提供向所述實(shí)體結(jié)構(gòu)的實(shí)例查詢(xún)特定實(shí)體角色的存在的機(jī)制。
19.如權(quán)利要求15所述的方法,其特征在于,還包括提供用于確認(rèn)所述實(shí)體模式的應(yīng)用來(lái)確保所述應(yīng)用遵循所述實(shí)體模式的機(jī)制。
20.如權(quán)利要求15所述的方法,其特征在于,還包括基于所述實(shí)體模式的元素自動(dòng)生成用戶(hù)界面(UI)。
21.如權(quán)利要求20所述的方法,其特征在于,所述生成UI的動(dòng)作包括
將UI的布局鏈接至所述實(shí)體模式;以及
檢查所述實(shí)體模式的所應(yīng)用的實(shí)體角色來(lái)提供一致的UI。
22.如權(quán)利要求15所述的方法,其特征在于,還包括
定義自定義元數(shù)據(jù)作為所述實(shí)體模式的定義的一部分;
提供當(dāng)應(yīng)用所述實(shí)體模式時(shí)指定所述元數(shù)據(jù)的機(jī)制;以及
提供在運(yùn)行時(shí)讀取所述自定義元數(shù)據(jù)的機(jī)制。
23.如權(quán)利要求15所述的方法,其特征在于,還包括,使用基于所述數(shù)據(jù)模型內(nèi)的至少一個(gè)實(shí)體結(jié)構(gòu)創(chuàng)建的實(shí)體模式的元素來(lái)自動(dòng)生成用戶(hù)界面(UI)。
24.一種其上存儲(chǔ)用于執(zhí)行用于使用數(shù)據(jù)模型的結(jié)構(gòu)的方法的指令的計(jì)算機(jī)可讀介質(zhì),所述方法包括
基于所述數(shù)據(jù)模型內(nèi)的至少一個(gè)實(shí)體結(jié)構(gòu)來(lái)創(chuàng)建實(shí)體模式;以及
提供用于生成實(shí)體模式專(zhuān)用的代碼的機(jī)制。
25.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,其上存儲(chǔ)的指令還用于執(zhí)行提供實(shí)體角色訂閱由實(shí)體模式的應(yīng)用激發(fā)的事件的機(jī)制的其它動(dòng)作,其中,所述實(shí)體角色含有與所定義的特性和關(guān)系對(duì)應(yīng)的類(lèi)。
26.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,其上存儲(chǔ)的指令還用于提供向所述實(shí)體結(jié)構(gòu)的實(shí)例查詢(xún)所應(yīng)用的實(shí)體角色列表的機(jī)制的動(dòng)作。
27.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,其上存儲(chǔ)的指令還用于執(zhí)行提供向所述實(shí)體結(jié)構(gòu)的實(shí)例查詢(xún)特定實(shí)體角色的存在的機(jī)制的動(dòng)作。
28.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,其上存儲(chǔ)的指令還用于執(zhí)行提供用于確認(rèn)所述實(shí)體模式的應(yīng)用以確保所述應(yīng)用遵循所述實(shí)體模式的動(dòng)作。
29.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,其上存儲(chǔ)的指令還用于執(zhí)行基于所述實(shí)體模式的元素自動(dòng)生成用戶(hù)界面(UI)的動(dòng)作。
30.如權(quán)利要求29所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述自動(dòng)生成UI的動(dòng)作包括
將UI的布局鏈接至所述實(shí)體模式;以及
檢查所述實(shí)體模式的所應(yīng)用的實(shí)體角色來(lái)提供一致的UI。
31.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,其上存儲(chǔ)的指令還用于執(zhí)行以下動(dòng)作
定義自定義元數(shù)據(jù)作為所述實(shí)體模式的定義的一部分;
提供當(dāng)應(yīng)用所述實(shí)體模式時(shí)指定所述元數(shù)據(jù)的機(jī)制;以及
提供在運(yùn)行時(shí)讀取所述自定義元數(shù)據(jù)的機(jī)制。
32.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括,其上存儲(chǔ)的指令還用于執(zhí)行使用基于所述數(shù)據(jù)模型內(nèi)的至少一個(gè)實(shí)體結(jié)構(gòu)創(chuàng)建的實(shí)體模式的元素來(lái)自動(dòng)生成用戶(hù)界面(UI)的動(dòng)作。
全文摘要
提供了針對(duì)使用實(shí)體模式來(lái)捕捉數(shù)據(jù)模型的結(jié)構(gòu)的系統(tǒng)和方法,其中實(shí)體模式是抽象,例如在MICROSOFT BUSINESS FRAMEWORK(MBF)中,該抽象在框架的模型編輯器在根層次上的表面,并包含共同定義模型的結(jié)構(gòu)模式的一個(gè)或多個(gè)實(shí)體角色。實(shí)體模式可以被認(rèn)為是上位模型,或模型的模型模板。向?qū)嶓w的設(shè)計(jì)、所需的特性以及與其它實(shí)體(實(shí)體角色)的關(guān)系添加規(guī)定的規(guī)則。在設(shè)計(jì)時(shí)確認(rèn)實(shí)體模式的應(yīng)用。運(yùn)行時(shí)框架支持任何所應(yīng)用的模式并調(diào)用該模式專(zhuān)用的代碼。一般的優(yōu)點(diǎn)是運(yùn)行時(shí)操作是模型驅(qū)動(dòng)的,并在運(yùn)行時(shí)解釋模型。應(yīng)用以及模式的使用是應(yīng)用程序/軟件程序的模型的一部分。
文檔編號(hào)G06F17/30GK1811752SQ20051000351
公開(kāi)日2006年8月2日 申請(qǐng)日期2005年12月28日 優(yōu)先權(quán)日2005年1月28日
發(fā)明者E·N·克利斯托夫森, L·哈瑪, M·R·皮特森, H·H·克勞森, T·黑爾斯伯格 申請(qǐng)人:微軟公司