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