專(zhuān)利名稱(chēng):模型效果分析的制作方法
本申請(qǐng)要求1998年10月16日提交的題為“建模工具的系統(tǒng)和方法”的美國(guó)專(zhuān)利申請(qǐng)No.60/104,682的申請(qǐng)日的權(quán)益。
本申請(qǐng)涉及共同待審的題為“用于建模工具的裝置和方法”的美國(guó)專(zhuān)利申請(qǐng)No.__(代理人卷號(hào)#22074661-25535),在此將其全部引入作為參考。
本申請(qǐng)涉及共同待審的題為“確定兩個(gè)或多個(gè)模型之間區(qū)別的方法”的美國(guó)專(zhuān)利申請(qǐng)No.__(代理人卷號(hào)#22074661-25531),在此將其全部引入作為參考。
本申請(qǐng)涉及共同待審的題為“可擴(kuò)展宏語(yǔ)言的方法和系統(tǒng)”的美國(guó)專(zhuān)利申請(qǐng)No.__(代理人卷號(hào)#22074661-25533),在此將其全部引入作為參考。
本申請(qǐng)涉及共同待審的題為“用于通過(guò)SQL輸入對(duì)分級(jí)數(shù)據(jù)存儲(chǔ)進(jìn)行訪問(wèn)的方法及裝置”的美國(guó)專(zhuān)利申請(qǐng)No.__(代理人卷號(hào)#22074661-25534),在此將其全部引入作為參考。
圖2顯示了本發(fā)明一個(gè)典型實(shí)施例的功能框圖。
圖3顯示了根據(jù)本發(fā)明元模型的一個(gè)典型實(shí)施例的數(shù)據(jù)模型。
圖4的流程圖顯示了根據(jù)本發(fā)明的用于啟動(dòng)一個(gè)對(duì)象語(yǔ)義的方法的典型實(shí)施例。
圖5的流程圖顯示了根據(jù)本發(fā)明的用于啟動(dòng)一個(gè)特性語(yǔ)義的方法的典型實(shí)施例。
圖6的流程圖顯示了根據(jù)本發(fā)明的用于構(gòu)筑一個(gè)建模工具的方法的典型實(shí)施例。
圖7的流程圖顯示了根據(jù)本發(fā)明的執(zhí)行示范功能的典型實(shí)施例。
圖8的流程圖顯示了根據(jù)本發(fā)明的用于確定作為事務(wù)結(jié)果的模型凈變化的方法的典型實(shí)施例。
圖9的流程圖顯示了根據(jù)本發(fā)明用于從作為事務(wù)結(jié)果的模型變化記錄中確定凈操作類(lèi)型變化的方法的典型實(shí)施例。
圖10顯示了根據(jù)本發(fā)明用于從事務(wù)的模型變化記錄中確定凈操作類(lèi)型變化的規(guī)則的一個(gè)示范集。
圖11的流程圖顯示了根據(jù)本發(fā)明用于從為事務(wù)結(jié)果的模型變化記錄中確定作凈數(shù)據(jù)變化的方法的典型實(shí)施例。
圖12顯示了根據(jù)本發(fā)明用于從事務(wù)的模型變化記錄中確定凈數(shù)據(jù)變化的規(guī)則的一個(gè)示范集。
詳細(xì)說(shuō)明圖1顯示了一個(gè)采用了本發(fā)明的傳統(tǒng)計(jì)算機(jī)系統(tǒng)101。在一個(gè)典型實(shí)施例中,本發(fā)明在例如由SUN MICROSYSTEMSTM制造的SUNTM工作站上得以實(shí)現(xiàn)。另外的實(shí)施例可在例如由IBM公司制造的IBMTM個(gè)人電腦或由APPLETM計(jì)算機(jī)公司制造的MACINTOSHTM計(jì)算機(jī)上實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員應(yīng)該理解,也可以采用其它的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)。一般來(lái)說(shuō),這種如圖1所示的計(jì)算機(jī)系統(tǒng)包括用于傳送信息的總線(xiàn)102、與總線(xiàn)102相連用于處理信息的處理器103(如中央處理器)、以及與總線(xiàn)102相連用于為處理器103存儲(chǔ)信息和指令的主存儲(chǔ)器104。只讀存儲(chǔ)器105被連接在總線(xiàn)102上,用于保存處理器103的信息和指令。與總線(xiàn)102相連的顯示設(shè)備106用于為例如開(kāi)發(fā)者顯示信息。
一字母數(shù)字輸入設(shè)備107(如鍵盤(pán))與總線(xiàn)102相連,用于將信息和命令選擇發(fā)送給處理器103。調(diào)制解調(diào)器110與總線(xiàn)102相連,用于提供例如與其它計(jì)算機(jī)系統(tǒng)或數(shù)據(jù)庫(kù)以及海量存儲(chǔ)介質(zhì)108(如與總線(xiàn)102相連用于保存信息和指令的磁盤(pán)或相應(yīng)的磁盤(pán)驅(qū)動(dòng)器)之間的通信。含有數(shù)字信息的數(shù)據(jù)存儲(chǔ)介質(zhì)109被設(shè)置成例如能夠與海量存儲(chǔ)介質(zhì)協(xié)同工作以允許處理器103通過(guò)總線(xiàn)102存取數(shù)據(jù)存儲(chǔ)介質(zhì)109上的數(shù)字信息。另外,也可采用一個(gè)用于保存高分辨率圖像的CD-ROM(未示出)以供在顯示設(shè)備106上顯示圖像。
本發(fā)明的一個(gè)實(shí)施例是由(例如)一種用C++編程語(yǔ)言編寫(xiě)的軟件模塊實(shí)現(xiàn)的,該軟件模塊可在如計(jì)算機(jī)系統(tǒng)101的計(jì)算機(jī)系統(tǒng)中以傳統(tǒng)的方式得到執(zhí)行。利用眾所周知的技術(shù),應(yīng)用軟件可被保存在數(shù)據(jù)存儲(chǔ)介質(zhì)109中,隨后被調(diào)入計(jì)算機(jī)系統(tǒng)101中并得到執(zhí)行。一旦被啟動(dòng),本優(yōu)選實(shí)施例所述的軟件將以如下說(shuō)明的方式進(jìn)行操作。統(tǒng)一建模結(jié)構(gòu)(UMA)是一種數(shù)據(jù)驅(qū)動(dòng)建模引擎,它能夠在各種基于元模型外部定義的問(wèn)題域中工作,上述元模型可由開(kāi)發(fā)者提供并擴(kuò)充以提供一個(gè)基于UMA的產(chǎn)品。元模型的外部定義是例如對(duì)要在問(wèn)題域中被尋找的對(duì)象類(lèi)型以及與各對(duì)象相關(guān)的特性的一系列說(shuō)明。這些說(shuō)明可通過(guò)調(diào)用一套由具體實(shí)現(xiàn)(implementation)所公開(kāi)的功能來(lái)提供,并且可通過(guò)函數(shù)參數(shù)傳入說(shuō)明性信息。典型的問(wèn)題域可包括數(shù)據(jù)建模,如數(shù)據(jù)庫(kù)列表、數(shù)列以及索引;過(guò)程建模,如活動(dòng)和箭頭;訪問(wèn)建模,如數(shù)據(jù)控制語(yǔ)言語(yǔ)句和文件;以及組件建模,如接口、實(shí)現(xiàn)以及從屬關(guān)系。
在本發(fā)明的一個(gè)典型實(shí)施例中,基于UMA的產(chǎn)品是一種建模工具。該基于UMA的產(chǎn)品可以是一個(gè)基于UMA的應(yīng)用程序,如一個(gè)含有UMA的用戶(hù)接口?;赨MA的產(chǎn)品也可含有一個(gè)例如由開(kāi)發(fā)者提供的基于元模型的外部定義的對(duì)象/特性模型的一個(gè)例子。
如圖2所示,在本發(fā)明的一個(gè)典型實(shí)施例中,UMA200包括一個(gè)元模型210、對(duì)象和特性廠家注冊(cè)表260、對(duì)象/特性接口280、事務(wù)管理程序285、日志文件295以及對(duì)象/特性模型290。元模型210可包括含有多個(gè)語(yǔ)義集230的語(yǔ)義注冊(cè)表220以及一個(gè)含有對(duì)象/特性說(shuō)明250的元數(shù)據(jù)管理程序240。對(duì)象/特性說(shuō)明250是多套用于描述對(duì)象或特性的特征的信息。在描述對(duì)象的情況下,它包括了對(duì)象的名稱(chēng)、可由人讀取的說(shuō)明性文本、一般化信息以及與其中可能包含的其它類(lèi)型的對(duì)象有關(guān)的信息。一般化信息描述了例如細(xì)化部分/子分類(lèi),如同義詞信息。
對(duì)象/特性說(shuō)明可由開(kāi)發(fā)者或用戶(hù)提供以作為外部定義的元模型。元模型210是對(duì)求解問(wèn)題域的對(duì)象和特性以及多套語(yǔ)義集230的描述說(shuō)明,這些語(yǔ)義集對(duì)在對(duì)象和特性被請(qǐng)求改變時(shí),要被分別調(diào)用以改變這些對(duì)象和特性。
圖3顯示了本發(fā)明元模型210的一個(gè)典型實(shí)施例。如圖3所示,該元模型201包括多個(gè)類(lèi),如對(duì)象、特性和語(yǔ)義,并且建立了對(duì)象、特性以及語(yǔ)義之間的關(guān)系。類(lèi)型310與一個(gè)類(lèi)型代碼鍵、名稱(chēng)屬性以及定義屬性相關(guān)。類(lèi)型310可以是例如一個(gè)目錄330或者也可是一個(gè)項(xiàng)目320。目錄330與類(lèi)型代碼鍵相關(guān)并且包括多個(gè)項(xiàng)目。目錄成員340與目錄鍵和成員鍵相關(guān)。項(xiàng)目320與類(lèi)型代碼鍵相關(guān)并且可以是特性或?qū)ο蟆?br>
特性350與類(lèi)型代碼鍵、缺省值屬性以及數(shù)據(jù)類(lèi)型屬性相關(guān)。特性350也與特性用途375相關(guān)。對(duì)象360與類(lèi)型代碼鍵、對(duì)象實(shí)現(xiàn)屬性以及超類(lèi)型屬性相關(guān)。超類(lèi)型屬性為對(duì)象360提供了進(jìn)一步的規(guī)定性。對(duì)象360可以擁有(例如,含有一個(gè)組件)其它對(duì)象也可被其它對(duì)象擁有。對(duì)象所有權(quán)370與擁有者鍵和被擁有者鍵相關(guān)。特性用途375與特性鍵和對(duì)象鍵相關(guān)。
特性用途375也將特性350和對(duì)象360關(guān)聯(lián)起來(lái)。對(duì)象語(yǔ)義用途390與類(lèi)型代碼鍵和身份(ID)鍵相關(guān)聯(lián)。對(duì)象語(yǔ)義用途390將對(duì)象360和對(duì)象語(yǔ)義395關(guān)聯(lián)起來(lái)。對(duì)象語(yǔ)義395與ID鍵相關(guān)聯(lián)。特性語(yǔ)義用途380與ID鍵、特性鍵以及對(duì)象鍵相關(guān)聯(lián)。對(duì)象語(yǔ)義用途390將特性語(yǔ)義385與特性用途375關(guān)聯(lián)起來(lái)。特性語(yǔ)義385與語(yǔ)義ID鍵相關(guān)聯(lián)。
如圖2所示,元模型210的元數(shù)據(jù)管理程序240通過(guò)一個(gè)基于UMA的應(yīng)用程序225接收例如從開(kāi)發(fā)者發(fā)出的元數(shù)據(jù)(例如,對(duì)象和特性的描述)。元數(shù)據(jù)由開(kāi)發(fā)者提供用來(lái)解決其問(wèn)題域的對(duì)象和特性。元數(shù)據(jù)管理程序240從對(duì)象和特性廠家注冊(cè)表260中接收有效創(chuàng)建請(qǐng)求。
如圖2所示,元模型210的語(yǔ)義注冊(cè)表220包括多個(gè)語(yǔ)義集230,這些語(yǔ)義集230可以含有例如一個(gè)預(yù)定集以及由開(kāi)發(fā)者通過(guò)基于UMA的應(yīng)用程序所提供的附加集。語(yǔ)義230是封裝進(jìn)語(yǔ)義對(duì)象的建模規(guī)則,語(yǔ)義對(duì)象對(duì)外有一個(gè)接口,如一個(gè)純粹虛擬的類(lèi),它從語(yǔ)義230的細(xì)節(jié)中隱含了建模引擎。預(yù)定義語(yǔ)義集可提供規(guī)則以加強(qiáng)建模工具基礎(chǔ)的完整性,而且在本發(fā)明的一個(gè)典型實(shí)施例中,預(yù)定語(yǔ)義集不能夠被開(kāi)發(fā)者改動(dòng)。由開(kāi)發(fā)者提供的額外語(yǔ)義集可以被開(kāi)發(fā)者改動(dòng)。語(yǔ)義的一個(gè)例子是一個(gè)對(duì)規(guī)則“單一數(shù)據(jù)庫(kù)中的兩個(gè)列不能具有相同的名稱(chēng)”進(jìn)行加強(qiáng)的語(yǔ)義。
語(yǔ)義230通過(guò)對(duì)象/特性接口280獲取對(duì)于對(duì)象/特性模型290的訪問(wèn)。語(yǔ)義注冊(cè)表220可以包括一個(gè)對(duì)象語(yǔ)義注冊(cè)表以用于確定是否有一個(gè)特定的對(duì)象語(yǔ)義集存在、以及在存在該語(yǔ)義集的情況下對(duì)各對(duì)象語(yǔ)義集進(jìn)行定位。語(yǔ)義注冊(cè)表220也可包括一個(gè)特性語(yǔ)義注冊(cè)表以用于確定是否有一個(gè)特定的特性語(yǔ)義集存在、并在當(dāng)存在該語(yǔ)義集的情況下對(duì)各特性語(yǔ)義集進(jìn)行定位。語(yǔ)義注冊(cè)表220通過(guò)例如對(duì)象/特性接口280找出被請(qǐng)求使用的各個(gè)語(yǔ)義集。語(yǔ)義注冊(cè)表220根據(jù)調(diào)入的語(yǔ)義來(lái)對(duì)各個(gè)對(duì)象和特性做出修改,并向?qū)ο?特性接口280提供經(jīng)修改的對(duì)象和特性。語(yǔ)義注冊(cè)表220還提供了對(duì)對(duì)象/特性接口280的處理操作的狀態(tài)。例如,被調(diào)入用于一個(gè)操作的語(yǔ)義之一可能被違反,這就表示該操作已經(jīng)失敗。
對(duì)象和特性廠家注冊(cè)表260可以包括廠家270,如對(duì)象廠家和特性廠家。對(duì)象和特性廠家注冊(cè)表260通過(guò)一基于UMA的應(yīng)用程序225接收(例如)開(kāi)發(fā)者所發(fā)出的創(chuàng)建對(duì)象和特性的請(qǐng)求。廠家270能夠創(chuàng)建對(duì)象和特性。對(duì)象和特性廠家注冊(cè)表260能夠確定是否有一個(gè)特定的廠家存在,并且能夠在當(dāng)存在該廠家的情況下找出各個(gè)廠家以創(chuàng)建被請(qǐng)求的各個(gè)對(duì)象和特性。對(duì)象和特性廠家注冊(cè)表260還可向元數(shù)據(jù)管理程序240提供一個(gè)有效創(chuàng)建請(qǐng)求。其有效性可以包括(例如)創(chuàng)建對(duì)象或特性的請(qǐng)求是否成功。對(duì)象和特性廠家注冊(cè)表260能夠舉例分別說(shuō)明對(duì)象和特性,并能夠?qū)⑦@些對(duì)象和特性提供給對(duì)象/特性接口280。
如圖2所示,對(duì)象/特性280通過(guò)基于UMA的應(yīng)用程序225接收(例如)開(kāi)發(fā)者所發(fā)出的用于修改和刪除對(duì)象及特性的請(qǐng)求。這些請(qǐng)求調(diào)用可使從元模型210的語(yǔ)義注冊(cè)表220提供給對(duì)象/特性接口280的對(duì)象和特性發(fā)生改變的元模型210中的各個(gè)語(yǔ)義。對(duì)象/特性280可以從多個(gè)分立事件(例如,在表1中所顯示的多個(gè)事件)中識(shí)別一個(gè)分立的事件,并且能夠確定應(yīng)該調(diào)用一個(gè)語(yǔ)義或者一個(gè)語(yǔ)義集。上述分立事件指的是其中對(duì)象/特性模型290可被修改的情況。在本發(fā)明的一個(gè)典型實(shí)施例中,UMA的作者可以提供多個(gè)分立事件。
表1常量 說(shuō)明PostCreation 正在創(chuàng)建一個(gè)對(duì)象PreDestmction正在破壞一個(gè)對(duì)象PreEdit 將創(chuàng)建和/或修改一個(gè)特性PostEdit 剛創(chuàng)建和/或修改一個(gè)特性PreNull 將破壞一個(gè)特性PreOwnerDestruction 將破壞擁有一個(gè)特性的對(duì)象對(duì)象/特性接口280可根據(jù)調(diào)入的各個(gè)語(yǔ)義集的結(jié)果而提供由語(yǔ)義注冊(cè)表220處理操作的狀態(tài)。例如,如果一個(gè)操作使得任何一套調(diào)入的語(yǔ)義集被違反,則語(yǔ)義注冊(cè)表220將提供一個(gè)指示以說(shuō)明操作是失敗的。但是,如果一個(gè)操作并未使得任何一套調(diào)入的語(yǔ)義集被違反,則語(yǔ)義注冊(cè)表220將提供一個(gè)指示以說(shuō)明操作是成功的。對(duì)象/特性接口280向事務(wù)管理程序285提供對(duì)象和特性的變化,并且如果對(duì)象/特性接口280確定一個(gè)操作已失敗,則它將提供一個(gè)指示以說(shuō)明該操作不能處理管理程序285。對(duì)象/特性接口280還向?qū)ο?特性模型290提供了對(duì)象和特性。對(duì)象/特性接口280接口還能從對(duì)象/特性模型290中檢索對(duì)象和特性,從而例如根據(jù)請(qǐng)求將這些對(duì)象和特性提供給一個(gè)基于UMA的應(yīng)用程序225。
圖4顯示了對(duì)象/特性接口280用于啟動(dòng)一個(gè)對(duì)象語(yǔ)義的典型方法的流程圖。在410中,對(duì)象/特性接口280打開(kāi)與事務(wù)管理程序285的事務(wù)處理。對(duì)模型的各個(gè)變化都要打開(kāi)一個(gè)事務(wù)處理,如果變化被發(fā)現(xiàn)是無(wú)效的,則它將被取消。在415中,對(duì)象/特性接口280與對(duì)象本身進(jìn)行通信。所有的對(duì)象都獲知它們的類(lèi)型用以確定此對(duì)象的類(lèi)型。在420中,對(duì)象/特性接口280從元模型210中以(例如)從上向下的順序?yàn)橐粋€(gè)對(duì)象獲取完整的超類(lèi)型路徑。在425中,第一對(duì)象類(lèi)型(最終超類(lèi)型)被對(duì)象/特性接口280從元模型中獲取。在430中,對(duì)象/特性接口280從對(duì)象語(yǔ)義注冊(cè)表220中為對(duì)象類(lèi)型獲取語(yǔ)義列表。在435中,對(duì)象/特性接口280與語(yǔ)義注冊(cè)表進(jìn)行交流以確定列表中是否還有更多的語(yǔ)義。如果是,則對(duì)象/特性接口280將在455中獲取并在460中啟動(dòng)下一個(gè)語(yǔ)義。在465中,對(duì)象/特性接口280確定語(yǔ)義是否失敗。如果是,則在470中,事務(wù)處理將按照對(duì)象/特性接口280所發(fā)出的請(qǐng)求而被事務(wù)管理程序285重新運(yùn)行(roll back)。但是,如果語(yǔ)義并未失敗,則在435中,對(duì)象/特性接口280將再次確定列表中是否還有更多的語(yǔ)義。
如果列表中沒(méi)有更多的語(yǔ)義,則在440中,對(duì)象/特性接口280將與元模型進(jìn)行通信,并且確定父路徑中是否還有更多的對(duì)象類(lèi)型。如果確定為沒(méi)有,則在450中,事務(wù)處理將被省略。如果在父路徑中還有更多的對(duì)象類(lèi)型,則在445中,下一個(gè)對(duì)象類(lèi)型將被獲取并且對(duì)象/特性接口280將再次在430中從對(duì)象語(yǔ)義注冊(cè)表中為對(duì)象類(lèi)型獲取語(yǔ)義列表。
圖5的流程圖顯示了對(duì)象/特性接口280用于啟動(dòng)一個(gè)特性語(yǔ)義的典型方法的流程圖。在510中,對(duì)象/特性接口280打開(kāi)與事務(wù)管理程序285的事務(wù)處理。在515中,對(duì)象/特性接口280與對(duì)象進(jìn)行通信以確定對(duì)象的類(lèi)型。在520中,對(duì)象/特性接口280從元模型210中以(例如)從上向下的順序?yàn)楦鱾€(gè)對(duì)象獲取完整的超類(lèi)型路徑。在525中,第一對(duì)象類(lèi)型(最終超類(lèi)型)被對(duì)象/特性接口280從元模型中獲取。在527中,對(duì)象/特性接口280為對(duì)象和特性類(lèi)型構(gòu)筑一個(gè)對(duì)象/特性對(duì)。在530中,對(duì)象/特性接口280從特性語(yǔ)義注冊(cè)表530中為對(duì)象/特性對(duì)類(lèi)型獲取語(yǔ)義列表。
在535中,對(duì)象/特性接口280確定列表中是否有更多的語(yǔ)義。如果是,則對(duì)象/特性接口280將在555中獲取并在560中啟動(dòng)下一個(gè)語(yǔ)義。在565中,如果對(duì)象/特性接口280確定語(yǔ)義已經(jīng)失敗,則在570中,事務(wù)處理將被重新運(yùn)行。但是,如果語(yǔ)義并未失敗,對(duì)象/特性接口280將返回至535以再次確定列表中是否還有更多的語(yǔ)義。
如果列表中沒(méi)有更多的語(yǔ)義,則在540中,對(duì)象/特性接口280將與元模型進(jìn)行通信并確定父路徑中是否還有更多的對(duì)象類(lèi)型。如果沒(méi)有,則在550中,事務(wù)處理將被省略。如果父路徑中還有更多的對(duì)象類(lèi)型,則在545中,下一個(gè)對(duì)象類(lèi)型將被獲取并且對(duì)象/特性接口280將再次在527中為對(duì)象和特性類(lèi)型構(gòu)筑一個(gè)對(duì)象特性對(duì)。
在本發(fā)明的一個(gè)典型實(shí)施例中,對(duì)象/特性模型290包括預(yù)先定義的對(duì)象和特性集。該預(yù)先定義的對(duì)象和特性集可以由例如UMA的開(kāi)發(fā)者來(lái)提供以減少產(chǎn)品開(kāi)發(fā)者的工作量。對(duì)象/特性模型290還從對(duì)象/特性接口280檢索對(duì)象特性。從對(duì)象/特性接口接收到的對(duì)象和特性是以由開(kāi)發(fā)者提供的元數(shù)據(jù)的外部定義為根據(jù)的。在對(duì)象/特性模型290中包含的是由例如開(kāi)發(fā)者請(qǐng)求創(chuàng)建和修改的對(duì)象和特性。另外,對(duì)象/特性模型290通過(guò)對(duì)象/特性接口280將事務(wù)管理程序285的模型改變記錄下來(lái)。
但是,在本發(fā)明的一個(gè)典型實(shí)施例中,對(duì)象/特性模型290中作為操作失敗結(jié)果的對(duì)象和特性被從對(duì)象/特性模型290中刪除。因此,在本發(fā)明的一個(gè)典型實(shí)施例中,由開(kāi)發(fā)者提供的保留在對(duì)象/特性模型290之中的對(duì)象和特性是作為操作成功結(jié)果的對(duì)象和特性。這樣,開(kāi)發(fā)者就不需要直接訪問(wèn)并且也不能夠直接改變對(duì)象/特性模型290。所以,對(duì)模型的改變就被建模引擎獲知,并且一致性和有效狀態(tài)也可在所有時(shí)間上得到保證。如果開(kāi)發(fā)者已經(jīng)直接訪問(wèn)基本數(shù)據(jù)結(jié)構(gòu),則不正確的修改將會(huì)在模型中產(chǎn)生無(wú)效的狀態(tài)。
事務(wù)管理程序285將各個(gè)對(duì)象和特性置于它們被一個(gè)錯(cuò)誤操作改變之前的狀態(tài)。例如,當(dāng)對(duì)象/特性接口280的操作失敗時(shí),事務(wù)管理程序285將被提供一個(gè)標(biāo)志以表明操作已經(jīng)失敗。任何失敗的操作都會(huì)被撤銷(xiāo)或清除。事務(wù)管理程序285可以通過(guò)例如將對(duì)象/特性模型290的改變記錄進(jìn)日志文件295、從日志文件295中獲取撤銷(xiāo)數(shù)據(jù)、并根據(jù)事務(wù)處理中由對(duì)象/特性接口280所確定的操作成功和失敗狀態(tài)來(lái)執(zhí)行撤銷(xiāo)操作,從而完成上述工作。因此對(duì)象/特性模型290就被保持處于有效狀態(tài)。在本發(fā)明的一個(gè)典型實(shí)施例中,事務(wù)管理程序285也可接收一個(gè)從基于UMA的應(yīng)用程序225所發(fā)出的請(qǐng)求以撤銷(xiāo)或重復(fù)一個(gè)操作。如果一個(gè)重復(fù)操作被請(qǐng)求執(zhí)行,則事務(wù)管理程序285可以請(qǐng)求從日志文件295中獲取重復(fù)信息并且按照已知的方式來(lái)執(zhí)行重復(fù)操作。
事務(wù)處理可由例如開(kāi)發(fā)者通過(guò)用一個(gè)基于UMA的應(yīng)用程序225識(shí)別出各個(gè)事務(wù)的開(kāi)始和結(jié)尾而被提供。事務(wù)處理包括一個(gè)或多個(gè)活動(dòng),每個(gè)活動(dòng)都可改變例如基于UMA的應(yīng)用程序225的對(duì)象/特性模型290。事務(wù)管理程序285能夠通過(guò)例如建立一個(gè)起始位置而在事務(wù)日志文件295中識(shí)別出事務(wù)處理的開(kāi)始。在本發(fā)明的一個(gè)典型實(shí)施例中,事務(wù)管理程序285將事務(wù)中各個(gè)改變對(duì)象/特性模型290的活動(dòng)都作為一個(gè)模型變化而記錄在事務(wù)日志文件295中。事務(wù)管理程序285還能夠通過(guò)例如建立一個(gè)結(jié)束位置而在事務(wù)日志文件295中識(shí)別出事務(wù)處理的結(jié)尾。在本發(fā)明的一個(gè)典型實(shí)施例中,各個(gè)事務(wù)的起始和結(jié)束位置都被保存在一個(gè)位置上,通過(guò)對(duì)該位置進(jìn)行搜索就可獲取各個(gè)事務(wù)的所在位置以及它們?cè)谑聞?wù)日志文件295中的相應(yīng)模型變化記錄。因此,就可在事務(wù)日志文件295中識(shí)別出一個(gè)或多個(gè)事務(wù)。這樣,作為一個(gè)或多個(gè)事務(wù)處理結(jié)果的對(duì)象/特性模型290的凈變化就可被確定。
在本發(fā)明的一個(gè)典型實(shí)施例中,UMA工作于一個(gè)訪問(wèn)建模問(wèn)題域(例如數(shù)據(jù)控制語(yǔ)言語(yǔ)句(DML)和文件)中。對(duì)象/特性模型290可以包括例如多個(gè)對(duì)象、表A、表B,DML語(yǔ)句(例如從A、B中選取A.X+B.Y,其中,A為表A,A.X指的是表A中的第X列,B為表B,B.Y指的是表B中的第Y列)以及文件C(一個(gè)使用DML語(yǔ)句“從A、B中選取A.X+B.Y”的文件)。這些對(duì)象將被例如包含在對(duì)象/特性模型290之中。元數(shù)據(jù)210的語(yǔ)義230將包括例如說(shuō)明對(duì)象/特性模型290的變化是如何影響各個(gè)DML語(yǔ)句的語(yǔ)義。例如,語(yǔ)義(1)可提供這樣一個(gè)說(shuō)明,即,對(duì)一個(gè)表格的刪除將導(dǎo)致所有與該表格有關(guān)的內(nèi)容都被刪除,并且應(yīng)對(duì)各個(gè)DML語(yǔ)句進(jìn)行語(yǔ)法修正。語(yǔ)義(2)可提供這樣一個(gè)說(shuō)明,即,對(duì)象/特性模型290中的所有代表使用被修改或刪除了的DML語(yǔ)句的文件的對(duì)象都被指定為正在接觸的對(duì)象。一個(gè)正在接觸的對(duì)象或特性被標(biāo)記為經(jīng)過(guò)邏輯修改,即使它并未受到實(shí)際修改。
向?qū)ο?特性接口280提供一個(gè)包含有破壞一個(gè)對(duì)象(如DELETETable A刪除表A)的事務(wù)是一個(gè)分立的事件(PreDestruction)。因此,各個(gè)語(yǔ)義(例如,語(yǔ)義(1)和語(yǔ)義(2))都將被調(diào)用。所以,根據(jù)語(yǔ)義(1),對(duì)象的內(nèi)容(從A、B中選取A.X+B.Y)被修改為從B中選取B.Y。另外,根據(jù)語(yǔ)義(2),含有文件C的對(duì)象被指定為正在接觸的對(duì)象。這樣,對(duì)象/特性模型290就被改變。當(dāng)語(yǔ)義獲得成功時(shí),變化將不被重新運(yùn)行。作為“刪除表A”這個(gè)事務(wù)處理的結(jié)果,以下各個(gè)活動(dòng)(1)刪除表A、(2)含有“從A、B中選取A.X+B.Y”內(nèi)容的對(duì)象被修改以及(3)含有文件C的對(duì)象被指定為正在接觸一都被包含在事務(wù)日志文件295當(dāng)中,作為模型變化記錄。另外,事務(wù)和開(kāi)頭和結(jié)尾也在事務(wù)日志文件295中被指定。
在本發(fā)明的一個(gè)典型實(shí)施例中,UMA200還可包括一個(gè)內(nèi)部服務(wù)單元以及一個(gè)外部服務(wù)接口。內(nèi)部服務(wù)單元可以含有例如公開(kāi)給開(kāi)發(fā)者用以協(xié)助創(chuàng)建和控制一個(gè)模型并且用于解決開(kāi)發(fā)者的問(wèn)題域的服務(wù)或功能。在本發(fā)明的一個(gè)典型實(shí)施例中,內(nèi)部服務(wù)可以包括附錄1中所描述的那些服務(wù)或功能。
外部服務(wù)接口是一個(gè)允許外部服務(wù)與UMA200進(jìn)行通信的接口。外部服務(wù)接口可以是例如一個(gè)連接和植入有一個(gè)附加應(yīng)用程序接口的對(duì)象,它允許第三方模塊擴(kuò)展工具的建模能力,從而通過(guò)擴(kuò)展建模環(huán)境和建模規(guī)則來(lái)增加功能(如可自動(dòng)由用戶(hù)定義的功能)。因此,開(kāi)發(fā)者也可訪問(wèn)UMA200的內(nèi)部服務(wù)之外的服務(wù)。外部服務(wù)可以是例如一個(gè)以由用戶(hù)輸入的全部姓名為基礎(chǔ)的用于增強(qiáng)協(xié)作命名標(biāo)準(zhǔn)的模塊。另外,當(dāng)用戶(hù)接口(如基于UMA的應(yīng)用程序225)被和語(yǔ)義分離開(kāi)之后,UMA200是可測(cè)量的。
圖6顯示了根據(jù)本發(fā)明用于構(gòu)筑建模工具的方法的一個(gè)典型實(shí)施例。在610中,通過(guò)為開(kāi)發(fā)者所提供的對(duì)象/特性定義一個(gè)第一類(lèi)集以作為元數(shù)據(jù),完成對(duì)一個(gè)對(duì)象/特性模型290構(gòu)筑。在本發(fā)明的一個(gè)典型實(shí)施例中,對(duì)象/特性模型290可以包括一套預(yù)定的一個(gè)或多個(gè)對(duì)象和特性。對(duì)象為施加給它的特性提供存儲(chǔ)機(jī)制。在本發(fā)明的一個(gè)典型實(shí)施例中,一個(gè)用于對(duì)象的接口類(lèi)可以是(例如)UMEObjectI。特性可以被用作一個(gè)基本類(lèi),它需要編程人員再進(jìn)行細(xì)分類(lèi)。在本發(fā)明的一個(gè)典型實(shí)施例中,基本類(lèi)可以提供不含數(shù)據(jù)存儲(chǔ)的管理服務(wù)。在本發(fā)明的一個(gè)典型實(shí)施例中,開(kāi)發(fā)者可以提供一個(gè)子類(lèi)以說(shuō)明用于創(chuàng)建一個(gè)訪問(wèn)程序所需的數(shù)據(jù)單元和方法。
在620中,元模型210是(例如)通過(guò)定義一個(gè)第二類(lèi)集而被構(gòu)筑成的。該第二類(lèi)集被設(shè)計(jì)用來(lái)保存對(duì)特性、對(duì)象和語(yǔ)義的說(shuō)明。例如,在本發(fā)明的一個(gè)典型實(shí)施例中,有兩個(gè)語(yǔ)義接口類(lèi)被指定。第一個(gè)語(yǔ)義接口類(lèi)(例如UMEObjectSemanticI)是用于能夠影響一個(gè)對(duì)象的創(chuàng)建或破壞的任何語(yǔ)義的接口。第二個(gè)語(yǔ)義接口類(lèi)(例如UMEPropertySemanticI)則是用于能夠影響一個(gè)特性的創(chuàng)建、破壞或修改的任何語(yǔ)義的接口。在本發(fā)明的一個(gè)典型實(shí)施例中,元模型210的表示的實(shí)現(xiàn)包括一個(gè)單元素對(duì)象集合,它公開(kāi)了用于注冊(cè)元數(shù)據(jù)和語(yǔ)義的靜態(tài)方法。
建模規(guī)則(例如,語(yǔ)義230)可被結(jié)合進(jìn)元模型210的語(yǔ)義注冊(cè)表220中,以象在640中那樣,作為一個(gè)預(yù)定語(yǔ)義集和/或是附加語(yǔ)義集,該附加語(yǔ)義集例如由開(kāi)發(fā)者在啟動(dòng)時(shí)或者在啟動(dòng)之后的任何時(shí)間提供。為了將一個(gè)建模規(guī)則結(jié)合進(jìn)元模型210以用于一個(gè)對(duì)象,開(kāi)發(fā)者可對(duì)適當(dāng)?shù)恼{(diào)用(例如,用于對(duì)象建模規(guī)則的UMEObjectSemanticI以及用于特性建模規(guī)則的UMEPropertySemanticI)進(jìn)行細(xì)分類(lèi)。開(kāi)發(fā)者還能夠利用一種啟動(dòng)方法來(lái)對(duì)對(duì)象/特性模型290執(zhí)行所需的操作和檢查。一個(gè)數(shù)值將被返回以說(shuō)明操作是否成功。例如,一個(gè)TRUE(真)返回值說(shuō)明操作已經(jīng)成功,而一個(gè)FALSE(假)返回值則說(shuō)明該操作不能被成功地執(zhí)行或者是模型正處于一種無(wú)效狀態(tài)。訪問(wèn)點(diǎn)(例如,對(duì)象/特性模型修改點(diǎn))也可被包含進(jìn)元模型210以用于調(diào)用語(yǔ)義230。各個(gè)模型修改點(diǎn)(例如,CreateObject)都能夠在適當(dāng)?shù)狞c(diǎn)上調(diào)用各個(gè)語(yǔ)義。如果從語(yǔ)義的啟動(dòng)中接收到表明有一個(gè)或多個(gè)語(yǔ)義不能成功完成的標(biāo)志(例如,F(xiàn)ALSE),則操作將退出。
在630中,類(lèi)型代碼被與第一和第二類(lèi)集相關(guān)聯(lián)起來(lái)。類(lèi)型代碼是一個(gè)獨(dú)特的標(biāo)識(shí)符,它指定了元數(shù)據(jù)所代表的類(lèi)型。元模型中所規(guī)定的每個(gè)項(xiàng)目(對(duì)象和特性)都只有一個(gè)唯一的類(lèi)型代碼。在本發(fā)明的一個(gè)典型實(shí)施例中,UMA200含有一個(gè)變量類(lèi)型TypeCode_t,它被聲明用來(lái)保存類(lèi)型代碼。在640中,一個(gè)預(yù)定義的語(yǔ)義集被提供給元模型210的語(yǔ)義注冊(cè)表220。
在650中,多個(gè)分立的事件(例如,如表1中所示)被識(shí)別出來(lái)。這些分立事件表示對(duì)象/特性模型290可能被修改的情況。在本發(fā)明的一個(gè)典型實(shí)施例中,各個(gè)分立事件都被分配了一個(gè)代表其自身的常量,而且聲明了一個(gè)變量類(lèi)型(例如,Event_t)用來(lái)保存事件常量。
在660中,提供對(duì)象/特性接口280。對(duì)象/特性接口280能夠例如防止開(kāi)發(fā)者直接訪問(wèn)對(duì)象/特性模型290,并且可以限制開(kāi)發(fā)者修改對(duì)象/特性模型290時(shí)必須使用的代碼路徑數(shù)。例如,如果一個(gè)開(kāi)發(fā)者想要破壞對(duì)象/特性模型290中的一個(gè)對(duì)象,則必須向?qū)ο?特性接口280發(fā)出一個(gè)請(qǐng)求,例如附錄1中所列出的UMEObjectI:DestroyObject。
圖7顯示了對(duì)象/特性接口280執(zhí)行DestroyObject(對(duì)象破壞)請(qǐng)求的一個(gè)典型實(shí)施例,如圖7所示,對(duì)對(duì)象/特性模型290的訪問(wèn)受到控制著DestroyObject請(qǐng)求的對(duì)象/特性接口280的限制。例如,在710中,在接收到一個(gè)破壞對(duì)象的請(qǐng)求之后,對(duì)象/特性接口280將與事務(wù)管理程序285進(jìn)行通信以打開(kāi)一個(gè)事務(wù)處理進(jìn)程(例如,DestroyObject功能)。在715中,對(duì)象/特性接口280與對(duì)象/特性模型290進(jìn)行通信以找出被請(qǐng)求破壞的對(duì)象。在720中,對(duì)象/特性接口280將確定是否已找到這個(gè)對(duì)象。如果沒(méi)有,則在725中,事務(wù)管理程序285將按照對(duì)象/特性接口280的請(qǐng)求重新運(yùn)行事務(wù)處理,并且在730中,事務(wù)管理程序?qū)⑾蛘{(diào)用模塊(例如,用戶(hù)界面)返回一個(gè)故障代碼。但是,在735中,如果該對(duì)象被找到,則對(duì)象/特性接口280將為事務(wù)管理程序285提供對(duì)象破壞信息,并且事務(wù)管理程序285會(huì)將對(duì)象破壞情況記錄進(jìn)事務(wù)處理日志295。在740中,對(duì)象/特性接口280在各個(gè)對(duì)象的所有特性上啟動(dòng)PreOwnerDestruetion語(yǔ)義。在745中,對(duì)象/特性接口280確定是否全部語(yǔ)義都已成功。如果沒(méi)有,則在725中,事務(wù)管理程序285將按照對(duì)象/特性接口280的請(qǐng)求撤回事務(wù)處理,并且在730中,事務(wù)管理程序?qū)⑾蛘{(diào)用模塊返回一個(gè)故障代碼。
如果所有的PreOwnerDestruction語(yǔ)義都已成功,則在750中,對(duì)象/特性接口280將啟動(dòng)PreDestruction語(yǔ)義。在755中,對(duì)象/特性接口280確定是否全部PreDestruction語(yǔ)義都已成功。如果是,則對(duì)象將在760中被破壞,然后,在765中,對(duì)象/特性接口280與事務(wù)管理程序285進(jìn)行通信以結(jié)束該事務(wù)處理,并且在770和730中,事務(wù)管理程序285將向調(diào)用模塊返回一個(gè)成功代碼。但是,如果PreDestruction語(yǔ)義失敗,則在725中,事務(wù)管理程序285將按照對(duì)象/特性接口280的請(qǐng)求撤回事務(wù)處理,并且在730中,事務(wù)管理程序?qū)⑾蛘{(diào)用模塊返回一個(gè)故障代碼。
為了限制對(duì)象的構(gòu)筑和破壞,例如,對(duì)象的構(gòu)筑者或破壞者將受到保護(hù)以防止開(kāi)發(fā)者直接啟用或破壞對(duì)象。為了限制特性的創(chuàng)建、破壞及修改,例如,特性的數(shù)據(jù)組成將被做成私人性的。在本發(fā)明的一個(gè)典型實(shí)施例中,UMA200包括一個(gè)被稱(chēng)為訪問(wèn)程序的類(lèi),它含有一個(gè)接口類(lèi),例如,UMEAccessorI。訪問(wèn)程序接口類(lèi)是一個(gè)對(duì)特性友好的類(lèi),而且正是通過(guò)訪問(wèn)程序才使數(shù)據(jù)成員獲得訪問(wèn)。訪問(wèn)程序裝有數(shù)據(jù)值以及指令(例如,“設(shè)定數(shù)值”或“刪除特性”),并且被植入到特性當(dāng)中。訪問(wèn)程序執(zhí)行它們的活動(dòng)并且返回一個(gè)說(shuō)明活動(dòng)成功或失敗的標(biāo)志。訪問(wèn)程序是通過(guò)要求特性提供一個(gè)訪問(wèn)程序而被形成的。這樣就允許用特性來(lái)構(gòu)筑一個(gè)能夠控制特性的數(shù)據(jù)類(lèi)型的訪問(wèn)程序。一個(gè)特性上的所有操作都是通過(guò)訪問(wèn)程序來(lái)執(zhí)行的。因此,語(yǔ)義所需的任何代碼都可被放置在所提供的訪問(wèn)程序基本類(lèi)中。對(duì)訪問(wèn)程序進(jìn)行細(xì)分的開(kāi)發(fā)者只需簡(jiǎn)單地提供一個(gè)數(shù)據(jù)單元和方法就可對(duì)其執(zhí)行讀和寫(xiě)。方法是被提供到訪問(wèn)程序基本類(lèi)上的,這樣就允許將其與一個(gè)特性捆綁在一起。
如圖6所示,在670中,提供一個(gè)事務(wù)管理程序285。該事務(wù)管理程序285管理著事務(wù)處理的活動(dòng),而且如果活動(dòng)失敗,則可使該活動(dòng)被撤銷(xiāo)或清除。通過(guò)在模型操縱的初始階段啟動(dòng)一個(gè)事務(wù)處理,然后對(duì)各個(gè)語(yǔ)義的出錯(cuò)狀態(tài)進(jìn)行監(jiān)視,事務(wù)管理程序285就可使對(duì)象/特性模型290保持在一個(gè)有效狀態(tài)中。在本發(fā)明的一個(gè)典型實(shí)施例中,事務(wù)管理程序285在根據(jù)活動(dòng)而實(shí)現(xiàn)修改之前記錄下了對(duì)象/特性模型290的一個(gè)確切圖像。如果活動(dòng)已獲成功,則各個(gè)變化就被允許保留。如果出現(xiàn)錯(cuò)誤,則事務(wù)管理程序285將恢復(fù)舊的圖像。事務(wù)管理程序285可以隨著模型的變化而遞增地保存圖像。
作為一個(gè)例子,在一個(gè)用戶(hù)將要?jiǎng)?chuàng)建一個(gè)對(duì)象并為其設(shè)定名稱(chēng)的單一事務(wù)處理中,當(dāng)對(duì)象創(chuàng)建成功時(shí),對(duì)象被創(chuàng)建的實(shí)事以及對(duì)該對(duì)象的控制被保存進(jìn)事務(wù)處理日志295。如果用戶(hù)隨后將該對(duì)象的名稱(chēng)設(shè)定為“Customer”,則特性的創(chuàng)建也被記錄下來(lái),并且舊的數(shù)值(空數(shù)值)被保存進(jìn)日志。如果用戶(hù)隨后又將名稱(chēng)設(shè)定為“Cust”,則舊的數(shù)值(“Customer”)也會(huì)被保存進(jìn)日志。如果這一切全部成功,則會(huì)存在一個(gè)名為“Cust”的對(duì)象。但是,如果對(duì)象創(chuàng)建失敗,則事務(wù)管理程序285將開(kāi)始重新運(yùn)行首先,將名稱(chēng)從“Cust”改回“Customer”;其次,將已存在的名稱(chēng)特性一起刪除;最后,刪除對(duì)象。此舉可將對(duì)象/特性模型290恢復(fù)至失敗的事務(wù)處理運(yùn)行之前所處的狀態(tài)。
在本發(fā)明的一個(gè)典型實(shí)施例中,作為一次活動(dòng)結(jié)果的被改動(dòng)的對(duì)象和特性通過(guò)對(duì)象/特性接口280被提供給對(duì)象/特性模型290。如果該活動(dòng)所涉及到的語(yǔ)義出錯(cuò),則對(duì)象/特性接口280將通知事務(wù)管理程序285以撤銷(xiāo)該操作。結(jié)果,對(duì)象/特性模型290被恢復(fù)至作為失敗操作結(jié)果的受改動(dòng)的對(duì)象和特性被從對(duì)象/特性接口280提供給對(duì)象/特性模型290之前所處的狀態(tài)。
圖8的流程圖顯示了根據(jù)本發(fā)明用于確定作為事務(wù)處理結(jié)果的對(duì)象/特性模型290凈變化的方法的一個(gè)典型實(shí)施例。在810中,事務(wù)管理程序285例如為作為事務(wù)處理結(jié)果的對(duì)象/特性模型290的凈變化接收一個(gè)請(qǐng)求。該作為事務(wù)處理結(jié)果的對(duì)象/特性模型290的凈變化指的是例如對(duì)象/特性模型290在事務(wù)處理結(jié)束時(shí)與開(kāi)始事務(wù)處理之前的差異。在820中,事務(wù)管理程序285識(shí)別出與該事務(wù)有關(guān)的多個(gè)模型變化記錄。在830中,事務(wù)管理程序285根據(jù)與該事務(wù)有關(guān)的多個(gè)模型變化記錄中的每一個(gè)記錄來(lái)確定對(duì)象/特性模型290的凈變化。在本發(fā)明的一個(gè)典型實(shí)施例中,在840中,對(duì)象/特性模型290的凈變化可通過(guò)顯示在一顯示器上而被提供給一個(gè)請(qǐng)求者,如基于UMA的應(yīng)用程序225。事務(wù)管理程序285可以例如通過(guò)為事務(wù)的多個(gè)模型變化記錄中的每一個(gè),記錄確定一個(gè)與對(duì)象交互作用的各模型變化記錄中活動(dòng)的凈活動(dòng)類(lèi)型變化、以及確定一個(gè)與該對(duì)象相關(guān)的數(shù)據(jù)的凈數(shù)據(jù)變化,從而確定對(duì)象/特性模型290的凈變化。
活動(dòng)的類(lèi)型是例如一個(gè)用于識(shí)別一個(gè)事務(wù)的活動(dòng)的數(shù)字代碼。各模型變化記錄中活動(dòng)的凈活動(dòng)類(lèi)型變化是由事務(wù)管理程序285的一個(gè)功能(即,活動(dòng)一類(lèi)型功能)所確定的活動(dòng)類(lèi)型名稱(chēng),它與各個(gè)模型變化記錄的活動(dòng)相關(guān)聯(lián),并且被保存在與該事務(wù)相關(guān)的delta位置中。在本發(fā)明的一個(gè)典型實(shí)施例中,delta位置中含有對(duì)象/特性模型290的凈模型變化,該凈模型變化是事務(wù)的各個(gè)模型變化記錄中每個(gè)記錄的事務(wù)管理程序285都完成檢查所得到的事務(wù)處理結(jié)果。
與對(duì)象相關(guān)的數(shù)據(jù)指的是保存在delta位置中的數(shù)據(jù),它可包括對(duì)象本身、執(zhí)行與對(duì)象交互作用的各模型變化記錄的活動(dòng)之前對(duì)象的圖像(pre-image)、執(zhí)行與對(duì)象交互作用的各模型變化記錄的活動(dòng)之后對(duì)象的圖像(post-image)、以及對(duì)象的特性。對(duì)象的凈數(shù)據(jù)變化指的是由事務(wù)管理程序285的一個(gè)功能(例如,數(shù)據(jù)功能)所確定的數(shù)據(jù),它通過(guò)各模型變化記錄的活動(dòng)而與有關(guān)的對(duì)象相關(guān)聯(lián)起來(lái),并且被保存在與該事務(wù)有關(guān)的delta位置中。在本發(fā)明的一個(gè)典型實(shí)施例中,delta位置中含有對(duì)象/特性模型290的凈模型變化,該凈模型變化是事務(wù)的各個(gè)模型變化記錄中每個(gè)記錄的事務(wù)管理程序285都完成檢查所得到的事務(wù)處理結(jié)果。務(wù)管理程序285將前進(jìn)至940。但是,如果有與該對(duì)象有關(guān)的先前活動(dòng)被記錄在delta位置中,則在930中,事務(wù)管理程序285將在(例如)該delta位置中識(shí)別出此先前活動(dòng)的先前活動(dòng)類(lèi)型。先前活動(dòng)類(lèi)型指的是與先前活動(dòng)有關(guān)的活動(dòng)類(lèi)型。先前活動(dòng)則指的是與同一對(duì)象有關(guān)并且在執(zhí)行各個(gè)模型變化記錄的活動(dòng)之前受到事務(wù)管理程序285檢查的模型變化記錄的活動(dòng)。
在940中,事務(wù)管理程序285根據(jù)當(dāng)前活動(dòng)類(lèi)型、先前活動(dòng)是否被記錄入delta位置以及先前活動(dòng)類(lèi)型而執(zhí)行一個(gè)活動(dòng)類(lèi)型功能。該活動(dòng)類(lèi)型功能可以包括以下內(nèi)容中的至少一項(xiàng),即為各模型變化記錄確定一個(gè)新的活動(dòng)類(lèi)型,在delta位置中記錄新的活動(dòng)類(lèi)型,從delta位置中刪除先前活動(dòng)類(lèi)型,在delta位置中保留先前活動(dòng)類(lèi)型,在delta位置中記錄當(dāng)前活動(dòng)類(lèi)型以及在delta位置中記錄活動(dòng)無(wú)效。
delta位置可以是例如一個(gè)其中保存有模型變化信息的對(duì)象或文件,它可用于例如一個(gè)事務(wù)或多個(gè)事務(wù)。在事務(wù)管理程序285檢查各事務(wù)的每個(gè)模型變化記錄時(shí),delta位置的內(nèi)容可以發(fā)生變化。在事務(wù)管理程序285完成對(duì)所有的模型變化的檢查之后,delta位置的內(nèi)容可導(dǎo)致對(duì)象/特性模型290發(fā)生作為事務(wù)處理結(jié)果的凈變化。在本發(fā)明的一個(gè)典型實(shí)施例中,事務(wù)管理程序285對(duì)事務(wù)的各個(gè)模型變化記錄重復(fù)執(zhí)行910至940。在本發(fā)明的一個(gè)典型實(shí)施例中,當(dāng)事務(wù)的所有模型變化記錄完成之后,delta位置的內(nèi)容就包含了作為事務(wù)處理結(jié)果的活動(dòng)類(lèi)型變化。
圖10顯示了根據(jù)本發(fā)明用于從事務(wù)的模型變化記錄中確定凈操作類(lèi)型變化的規(guī)則的一個(gè)示范集。在圖10中,列A、行b、c和d含有示范性的當(dāng)前活動(dòng)類(lèi)型(添加、更新、刪除),它們可以分別對(duì)應(yīng)于與一個(gè)對(duì)象交互作用的各個(gè)模型變化記錄的活動(dòng)。行a、列C、D和E含有先前活動(dòng)類(lèi)型,它們可以分別對(duì)應(yīng)于記錄在與該對(duì)象交互作用的delta位置中的先前活動(dòng)。行a、列B含有先前活動(dòng)是否存在于delta位置之中。行b、列B、C、D和E;行c、列B、C、D和E;行d、列B、C、D和E包括了一個(gè)可由事務(wù)管理程序285執(zhí)行的活動(dòng)類(lèi)型功能的示范集。
在對(duì)作為上述示范性DELETE表A事務(wù)處理結(jié)果的凈活動(dòng)變化的確定過(guò)程中,事務(wù)管理程序285檢查“DELETE Table A”事務(wù)的第一模型變化記錄(刪除表A)以識(shí)別當(dāng)前活動(dòng)類(lèi)型(如添加、更新或刪除之一)。因?yàn)榛顒?dòng)是刪除A,所以當(dāng)前活動(dòng)類(lèi)型就是刪除。事務(wù)管理程序285確定是否一個(gè)與對(duì)象(表A)相匹配的先前活動(dòng)被記錄在與“DELETE Table A”事務(wù)相關(guān)的delta位置中。由于delta位置當(dāng)前是空的,所以先前活動(dòng)并不存在于delta位置中。因此,參考圖10,事務(wù)管理程序285將執(zhí)行一個(gè)活動(dòng)類(lèi)型功能(列B、行d),從而為該活動(dòng)確定一個(gè)新的類(lèi)型“刪除”,并將“DELETE Table A”記錄入delta位置。
這個(gè)功能是根據(jù)作為一個(gè)刪除(列A、行d)類(lèi)型的當(dāng)前活動(dòng)類(lèi)型以及先前活動(dòng)未被記錄入delta位置(列B、行a)中而完成的。事務(wù)管理程序285對(duì)“DELETE Table A”事務(wù)中剩余的兩個(gè)模型變化記錄重復(fù)進(jìn)行分析。當(dāng)事務(wù)管理程序285對(duì)最后一個(gè)模型變化記錄完成分析之后,delta位置的內(nèi)容中將包含對(duì)象/特性模型290的凈活動(dòng)類(lèi)型變化以作為“DELETE Table A”事務(wù)的處理結(jié)果。
圖11的流程圖顯示了根據(jù)本發(fā)明用于從模型變化記錄中確定作為事務(wù)處理結(jié)果的凈數(shù)據(jù)變化的方法的一個(gè)典型實(shí)施例。在圖11中,事務(wù)管理程序285為與對(duì)象有關(guān)的數(shù)據(jù)確定凈數(shù)據(jù)變化。在1110中,事務(wù)管理程序285為與對(duì)象交互作用的各個(gè)模型變化記錄的活動(dòng)確定一個(gè)當(dāng)前活動(dòng)類(lèi)型。
在1120中,事務(wù)管理程序285確定出是否有先前活動(dòng)被記錄在與該事務(wù)有關(guān)的delta位置中。如果沒(méi)有,則事務(wù)管理程序285將前進(jìn)至1150。如果有先前活動(dòng)被記錄在delta位置中,則在1130中,事務(wù)管理程序285將在delta位置中識(shí)別出此先前活動(dòng)的先前活動(dòng)類(lèi)型。如果有先前活動(dòng)被記錄在與該事務(wù)相關(guān)的delta位置中,則在1140中,事務(wù)管理程序285還將在與對(duì)象相關(guān)聯(lián)的delta位置中識(shí)別出先前活動(dòng)所產(chǎn)生的數(shù)據(jù)。
在1150中,事務(wù)管理程序285根據(jù)delta位置中的當(dāng)前活動(dòng)類(lèi)型、先前活動(dòng)是否被記錄在delta位置中、先前活動(dòng)類(lèi)型以及與對(duì)象有關(guān)的數(shù)據(jù)來(lái)執(zhí)行一個(gè)數(shù)據(jù)功能。數(shù)據(jù)功能可包含以下內(nèi)容中的至少一項(xiàng),即從delta位置中刪除與對(duì)象有關(guān)的數(shù)據(jù)、在delta位置中記錄該活動(dòng)無(wú)效、在delta位置中替換與對(duì)象有關(guān)的數(shù)據(jù)、以及在delta位置中記錄與對(duì)象相對(duì)應(yīng)的新的數(shù)據(jù)。
新的數(shù)據(jù)可以包括(例如)pre-image(當(dāng)前受到檢查的模型變化記錄活動(dòng)執(zhí)行之前的對(duì)象圖像)和post-image(當(dāng)前受到檢查的模型變化記錄活動(dòng)執(zhí)行之后的對(duì)象圖像)中的至少一個(gè)。在本發(fā)明的一個(gè)典型實(shí)施例中,事務(wù)管理程序285對(duì)事務(wù)的各個(gè)模型變化記錄重復(fù)執(zhí)行1110至1150。在本發(fā)明的一個(gè)典型實(shí)施例中,當(dāng)事務(wù)的全部模型變化記錄完成之后,delta位置的內(nèi)容中將包含凈數(shù)據(jù)變化以作為事務(wù)處理的結(jié)果。
圖12顯示了根據(jù)本發(fā)明用于從事務(wù)的模型變化記錄中確定凈數(shù)據(jù)變化的規(guī)則的一個(gè)示范集。在圖12中,列V、行w、x和y包含了示范性的當(dāng)前活動(dòng)類(lèi)型(添加、更新、刪除),它們可以分別對(duì)應(yīng)于與一個(gè)對(duì)象交互作用的各模型變化記錄的活動(dòng)。行v、列X、Y和Z包含有先前活動(dòng)的類(lèi)型,它們分別被與記錄在和對(duì)象交互作用的delta位置中的先前活動(dòng)相關(guān)聯(lián)。行v、列W包含有與各模型變化記錄的對(duì)象有關(guān)的先前活動(dòng)是否存在于delta位置中。行w、列W、X、Y和Z;行x、列W、X、Y和Z;行y、列W、X、Y和Z包含了可由事務(wù)管理程序285執(zhí)行的數(shù)據(jù)功能的一個(gè)示范集。
在對(duì)作為上述示范性“DELETE Table A”事務(wù)處理結(jié)果的凈活動(dòng)變化的確定過(guò)程中,事務(wù)管理程序285檢查“DELETE Table A”事務(wù)的第一模型變化記錄(刪除表A)以識(shí)別當(dāng)前活動(dòng)類(lèi)型(如添加、更新或刪除之一)。因?yàn)榛顒?dòng)是刪除A,所以當(dāng)前活動(dòng)類(lèi)型就是刪除。事務(wù)管理程序285確定是否一個(gè)與對(duì)象(表A)交互作用的先前活動(dòng)被記錄在與“DELETE Table A”事務(wù)相關(guān)的delta位置中。由于delta位置中并不存在與表A有關(guān)的先前活動(dòng)已被確定,因此,參考圖12,事務(wù)管理程序285將執(zhí)行一個(gè)數(shù)據(jù)類(lèi)型功能(列W、行y),從而在delta位置中為該活動(dòng)記錄一個(gè)“DELETE Table A”的pre-image。
這個(gè)功能是根據(jù)當(dāng)前活動(dòng)類(lèi)型是一個(gè)刪除(列V、行y)類(lèi)型以及先前活動(dòng)未被記錄入delta位置(列W、行v)中而完成的。事務(wù)管理程序?qū)Α癉ELETE Table A”事務(wù)中剩余的兩個(gè)模型變化記錄重復(fù)進(jìn)行分析。當(dāng)事務(wù)管理程序285對(duì)最后一個(gè)模型變化記錄完成分析之后,delta位置的內(nèi)容中將包含對(duì)象/特性模型290的凈數(shù)據(jù)變化以作為“DELETE Table A”事務(wù)的處理結(jié)果。
上述實(shí)施例是本發(fā)明的說(shuō)明性范例,不應(yīng)將這些特定實(shí)施例看作是對(duì)本發(fā)明的限制。本領(lǐng)域的技術(shù)人員可對(duì)其做出各種變換和修改,但它們都不會(huì)脫離由所附權(quán)利要求所定義的本發(fā)明的精神或范圍。
權(quán)利要求
1.一種方法,包括以下步驟接收一個(gè)對(duì)作為事務(wù)結(jié)果的模型凈變化的請(qǐng)求;對(duì)與事務(wù)相關(guān)的多個(gè)模型變化記錄進(jìn)行識(shí)別;根據(jù)與事務(wù)相關(guān)的多個(gè)模型變化記錄中的各個(gè)記錄來(lái)確定模型的凈變化。
2.如權(quán)利要求1所述的方法,還包括以下步驟顯示模型的凈變化。
3.如權(quán)利要求1所述的方法,其中上述對(duì)與事務(wù)相關(guān)的多個(gè)模型變化記錄進(jìn)行識(shí)別的步驟包括在事務(wù)日志上找出與事務(wù)的開(kāi)頭相對(duì)應(yīng)的起始位置;在事務(wù)日志上找出與事務(wù)的結(jié)尾相對(duì)應(yīng)的結(jié)束位置;以及對(duì)起始位置與結(jié)束位置之間的多個(gè)模型變化記錄之中的每個(gè)記錄進(jìn)行識(shí)別。
4.如權(quán)利要求3所述的方法,其中上述為事務(wù)的多個(gè)模型變化記錄中的每個(gè)記錄確定模型凈變化的步驟包括為與對(duì)象有關(guān)的各模型變化記錄的活動(dòng)確定凈活動(dòng)類(lèi)型變化;和為與該對(duì)象有關(guān)的數(shù)據(jù)確定凈數(shù)據(jù)變化。
5.如權(quán)利要求4所述的方法,其中上述為事務(wù)的多個(gè)模型變化記錄中的每一個(gè)記錄的活動(dòng)確定凈活動(dòng)類(lèi)型變化的步驟包括為與對(duì)象有關(guān)的各模型變化記錄的活動(dòng)識(shí)別出一個(gè)當(dāng)前活動(dòng)類(lèi)型;確定與該對(duì)象有關(guān)的先前活動(dòng)是否被記錄在與該事務(wù)有關(guān)的delta位置之中,如果是的話(huà),在delta位置中為先前活動(dòng)識(shí)別出先前活動(dòng)類(lèi)型;以及根據(jù)當(dāng)前活動(dòng)類(lèi)型、先前活動(dòng)是否被記錄在delta位置中以及先前活動(dòng)類(lèi)型來(lái)執(zhí)行一個(gè)活動(dòng)類(lèi)型功能。
6.如權(quán)利要求5所述的方法,其中上述活動(dòng)類(lèi)型功能包括以下內(nèi)容中的至少一項(xiàng)為各模型變化記錄的活動(dòng)確定一個(gè)新的活動(dòng)類(lèi)型,在delta位置中記錄新的活動(dòng)類(lèi)型,從delta位置中刪除先前活動(dòng)類(lèi)型,在delta位置中保留先前活動(dòng)類(lèi)型,在delta位置中記錄當(dāng)前活動(dòng)類(lèi)型以及在delta位置中記錄活動(dòng)無(wú)效。
7.如權(quán)利要求4所述的方法,其中上述為事務(wù)的多個(gè)模型變化記錄中的每一個(gè)記錄中與該對(duì)象有關(guān)的數(shù)據(jù)確定凈數(shù)據(jù)變化的步驟包括為與對(duì)象交互作用的各模型變化記錄的活動(dòng)識(shí)別當(dāng)前活動(dòng)類(lèi)型;確定與該對(duì)象有關(guān)的先前活動(dòng)是否被記錄在與該事務(wù)有關(guān)的delta位置之中,如果是的話(huà),在delta位置中為先前活動(dòng)識(shí)別出先前活動(dòng)類(lèi)型;在與對(duì)象有關(guān)的delta位置中識(shí)別出先前活動(dòng)所產(chǎn)生的數(shù)據(jù);以及根據(jù)當(dāng)前活動(dòng)類(lèi)型、先前活動(dòng)是否被記錄在delta位置中、先前活動(dòng)類(lèi)型以及delta位置中與對(duì)象有關(guān)的數(shù)據(jù)來(lái)執(zhí)行數(shù)據(jù)功能。
8.如權(quán)利要求7所述的方法,其中上述數(shù)據(jù)功能包括以下內(nèi)容中的至少一項(xiàng)從delta位置中刪除與對(duì)象有關(guān)的數(shù)據(jù),在delta位置中記錄該活動(dòng)無(wú)效,在delta位置中替換與對(duì)象有關(guān)的數(shù)據(jù),以及在delta位置中記錄與對(duì)象相對(duì)應(yīng)的新的數(shù)據(jù)。
9.如權(quán)利要求8所述的方法,其中上述記錄在delta位置中的新的數(shù)據(jù)至少包括活動(dòng)執(zhí)行之前對(duì)象的pre-image和活動(dòng)執(zhí)行之后對(duì)象的post-image之中的一個(gè)。
全文摘要
本發(fā)明提供了一種方法以用來(lái)確定作為事務(wù)結(jié)果的模型的凈變化。該方法包括接收一個(gè)對(duì)于作為事務(wù)結(jié)果的模型凈變化的請(qǐng)求的步驟(圖中,250)。該方法還包括對(duì)與事務(wù)相關(guān)的多個(gè)模型變化記錄進(jìn)行識(shí)別的步驟。該方法還包括根據(jù)與事務(wù)相關(guān)的多個(gè)模型變化記錄中的各個(gè)記錄來(lái)確定并顯示模型的凈變化的步驟(圖中,225)。
文檔編號(hào)G06F17/30GK1323416SQ99812225
公開(kāi)日2001年11月21日 申請(qǐng)日期1999年10月15日 優(yōu)先權(quán)日1998年10月16日
發(fā)明者塔德A·德弗勒, 馬克A·魯索, 托馬斯R·比爾博維爾 申請(qǐng)人:聯(lián)合想象計(jì)算機(jī)公司