專利名稱:協(xié)同設計中維持關聯(lián)操作語義一致性的方法
技術領域:
本發(fā)明涉及計算機支持的協(xié)同設計工作領域,特別涉及一種協(xié)同設計中維持關聯(lián)操作語義一致性的方法。
背景技術:
在采用復制式架構的二維協(xié)同設計系統(tǒng)中存在兩種類型的操作:獨立操作和關聯(lián)操作。獨立操作例如Line、B0X等不需要參照其它實體信息就能夠獨立完成參數設定,而關聯(lián)操作例如Mirror、Array、Copy-Paste等則需要通過參照其它實體信息來完成參數設定。傳統(tǒng)的無鎖一致性維護算法例如操作轉換策略算法及地址空間轉換算法等對獨立操作的處理采用直接執(zhí)行,而對關聯(lián)操作的處理采用先分解后執(zhí)行。在分解過程中由于沒有保留各分解操作之間的關聯(lián)約束關系,導致各分解操作之間以相互獨立的狀態(tài)執(zhí)行,因此參照實體及被參照實體之間的關聯(lián)關系無法得到保證,破壞了關聯(lián)操作的意愿??紤]以下例子:人員甲、人員乙正在針對一個建筑的外觀進行協(xié)同設計。當人員甲完成了窗戶的外形設計后,人員乙發(fā)起了鏡像關聯(lián)操作(Mirror )用于在某個對稱的位置創(chuàng)建另外一個窗戶。在人員乙進行鏡像關聯(lián)操作(Miiror)對象選取和參照直線設定過程中,人員甲修改了窗戶的高度。由于缺乏對鏡像關聯(lián)操作(Miiror)的語義一致性的維持,操作結束之后得到兩個具有不同高度的窗戶實體。關聯(lián)操作的意愿被破壞會增大設計人員的工作量,缺陷體現(xiàn)在:設計過程中,需對所參照的對象保持緊密關注度,一旦發(fā)現(xiàn)參照對象發(fā)生了修改,目標對象也要執(zhí)行相應的修改操作;完成實體的意愿修改需要更多步驟。如圖1所示,該場景中含有第一實體對象I(Objl),人員甲欲以該第一實體對象(Objl)為參照對象通過Mirror鏡像關聯(lián)操作產生另外一個對稱對象為第二實體對象(Ob j2)。當人員甲在選擇鏡像關聯(lián)操作(Miiror)的參照對象時,人員乙同時發(fā)出了對第一實體對象(Objl)的屬性修改操作。當人員甲、人員乙兩個操作都完成,鏡像關聯(lián)操作(Mirror)后2,鏡像對象的第一實體對象(Objl)與被參照的第二實體對象(0bj2)之間的屬性即、高度并不一致。為達到屬性一致的目的,必須再次執(zhí)行更新操作3 (Update)。維持關聯(lián)操作的語義一致性存有以下可能的解決方案:第一種策略是采用加鎖策略(Lock Strategy),當關聯(lián)操作開始前,通過加鎖申請鎖定參照實體,以避免其它用戶修改或者刪除該參照實體。加鎖策略算法雖然簡單且易于實施,然而鎖的引入卻與復制式架構提高并發(fā)度的宗旨相違背,降低了系統(tǒng)的響應度;第二種策略是延遲轉發(fā)策略(Delay-Send Strategy),該策略延遲關聯(lián)操作的分解操作的轉發(fā),直到原操作在本地全部執(zhí)行完成。該延遲轉發(fā)策略策略(Delay-Send Strategy)跟上述加鎖策略(Lock Strategy)相比具有較好的并發(fā)度,但仍然存在下述不足之處,首先,在關聯(lián)操作的執(zhí)行過程中,由于時間較長,其它站點會產生較多的并發(fā)操作,因此導致處理過程更加復雜;其次,該策略僅能維持不同的目標實體之間的一致性,卻不能夠維持參照實體和目標實體之間的約束關聯(lián)關系。例如,在粘貼復制(Copy-Paste)操作中,該策略能夠保證所有的由拷貝產生的實體都是相同的,但卻不能保證被拷貝實體與原實體之間是相同的。
發(fā)明內容
為了克服上述缺點,本發(fā)明的目的在于提供一種維持關聯(lián)操作語義一致性的方法。采用了一種“消解以前-避免將來”策略(Check Iast-Avoid future,CLAF)0該策略中“撤銷-轉換-執(zhí)行-轉換-重新執(zhí)行”(Und0-VT-D0-VT-Red0)過程被引入到操作轉換策略框架(OT框架)中用于控制遠程操作的執(zhí)行過程。本發(fā)明提供的一種協(xié)同設計中維持關聯(lián)操作語義一致性的方法,具有這樣的特征,具有以下步驟:將關聯(lián)操作分解為至少一個本地執(zhí)行操作及至少一個全局執(zhí)行操作;在操作轉換策略框架中,添加第一操作歷史序列、第二操作歷史序列,將關聯(lián)操作、本地執(zhí)行操作分別存放在第一操作歷史序列、第二操作歷史序列中,存放全局執(zhí)行操作在已有操作歷史序列中,利用第一操作歷史序列、第二操作歷史序列以及已有操作歷史序列來維持原有的關聯(lián)操作、本地執(zhí)行操作以及全局執(zhí)行操作之間的關聯(lián)關系;以及釋放遠程編輯操作后,執(zhí)行消解以前沖突步驟和避免將來沖突步驟,其中,當消解以前沖突步驟檢測到遠程編輯操作的目標對象是前面某個全局執(zhí)行操作的參照對象時,執(zhí)行以下步驟:撤銷掉全局執(zhí)行操作,即、Undo撤銷過程;將虛擬轉換函數應用在遠程編輯操作上,用于根據并發(fā)操作來進行相應的虛擬轉換,遠程編輯操作轉換為轉換遠程編輯操作,即、更新VT轉換過程;執(zhí)行轉換遠程編輯操作,即、Do執(zhí)行過程;針對遠程編輯操作,將虛擬轉換函數應用在全局執(zhí)行操作上,將全局執(zhí)行操作轉換為轉換全局執(zhí)行操作,即、全局VT轉換過程;以及執(zhí)行轉換全局執(zhí)行操作,即、Redo重新執(zhí)行過程,避免將來沖突步驟,執(zhí)行以下步驟:某個全局執(zhí)行操作所對應的本地執(zhí)行操作將被應用虛擬轉換函數并被重新執(zhí)行,更新本地內存空間。在本發(fā)明的中協(xié)同設計中維持關聯(lián)操作語義一致性的方法,還可以具有這樣的特征:還具有以下步驟,從用戶界面釋放一個操作后,生成過程將操作轉化成為操作轉換算法能夠直接處理的格式;當操作為原子操作時,將被立即被執(zhí)行,并存放到已有操作歷史序列中;當操作為關聯(lián)操作的分解操作時,分以下兩種情況,當為本地執(zhí)行操作時,被立即執(zhí)行并被存放到第二操作歷史序列中,當為全局執(zhí)行操作,被執(zhí)行并被存放到已有操作歷史序列中;然后,將針對本地執(zhí)行本地操作的操作進行包含轉換,以更新第二操作歷史序列中操作對象的位置信息。在本發(fā)明的中協(xié)同設計中維持關聯(lián)操作語義一致性的方法,還可以具有這樣的特征:其中,操作轉換策略框架能處理的有插入全局執(zhí)行操作、刪除全局執(zhí)行操作、更新全局執(zhí)行操作、選擇本地執(zhí)行操作以及復制本地執(zhí)行操作。在本發(fā)明的中協(xié)同設計中維持關聯(lián)操作語義一致性的方法,還可以具有這樣的特征:其中,虛擬轉換函數用于將第一操作的執(zhí)行效果包含在第二操作中,可修改目標對象的屬性值,虛擬轉換函數的前體條件為:第二操作限制并發(fā)于第一操作,后續(xù)條件為:第一操作的目標對象的屬性值被更新為第二操作修正后的新值。在本發(fā)明的中協(xié)同設計中維持關聯(lián)操作語義一致性的方法,還可以具有這樣的特征:其中,包含轉換用于將第一操作的執(zhí)行效果包含在第二操作中,可修改目標對象的位置信息,包含轉換的前體條件為:第二操作并發(fā)于第一操作,后續(xù)條件為:第一操作的參照對象和目標對象的位置值都隨著第二操作的執(zhí)行而做出相應的變換。
本發(fā)明的效果在于:本發(fā)明提供的協(xié)同設計中維持關聯(lián)操作語義一致性的方法使所有的站點都取得了一致狀態(tài),并且無論其中的關聯(lián)操作還是獨立操作都能保持語義一致,避免由遠程編輯操作引起的意愿沖突,本發(fā)明提出的“消解以前-避免之后(CLAF)”策略使關聯(lián)操作語義得到了一致保持。
圖1是本發(fā)明的對象修改過程;圖2是本發(fā)明的在操作轉換策略框架中添加本地執(zhí)行操作和原有關聯(lián)操作的示意圖;圖3是本發(fā)明的GOTO算法中操作歷史列表執(zhí)行操作轉換前后對比圖;圖4是本發(fā)明的G0T02算法中操作歷史列表執(zhí)行操作轉換前后對比圖;圖5是本發(fā)明的G0T02算法中7種可能的情況分析圖;圖6是本發(fā)明的僅使用GOTO算法的限制并發(fā)依賴關系的傳遞性圖;圖7是本發(fā)明的使用G0T02算法之后的限制并發(fā)依賴關系的傳遞性圖;圖8是本發(fā)明的從線性操作歷史序列到限制并發(fā)依賴樹的映射過程;圖9是本發(fā)明的含N個操作組成的環(huán)的版本將被分解為N個不同的版本;圖10是本發(fā)明中詳細實施例中初始文檔狀態(tài);圖11是本發(fā)明中詳細實施例中不同站點的操作執(zhí)行順序;圖12是本發(fā)明中詳細實施例中各站點執(zhí)行不同操作之后的文檔狀態(tài);圖13是本發(fā)明中操作
的限制并發(fā)依賴關系圖;圖14是本發(fā)明中操作Oi在
操作之前到達圖;圖15是本發(fā)明中操作Oi在序列
之間到達圖;圖16是本發(fā)明中操作Oi在序列
之后到達圖。具體實施案例 下面結合實施例和附圖對本發(fā)明進一步說明。圖2是本發(fā)明的實施例中在操作轉換策略框架中添加本地執(zhí)行操作和原有關聯(lián)操作的示意圖。原有的剪切粘貼(Cut-Paste)關聯(lián)操作被分解為一個選擇(Select)本地執(zhí)行操作、一個復制(Copy)本地執(zhí)行操作、一個刪除(Delete)全局執(zhí)行操作以及四個插入(Insert)全局執(zhí)行操作。如圖2所示,在操作轉換策略(OT)框架4中添加第一操作歷史序列5、第二操作歷史序列6,分別用于存放關聯(lián)操作7和分解后的本地執(zhí)行操作8。操作轉換策略(OT)框架中原來已有操作歷史序列9用于存放全局執(zhí)行操作10。第一操作歷史序列
5、第二操作歷史序列6以及已有操作歷史序列9用于維持原有的關聯(lián)操作7和分解后的本地執(zhí)行操作8、全局執(zhí)行操作10之間的關聯(lián)關系。當遠程編輯操作中的一個更新(Update)操作從遠程站點被釋放后,以下消解以前沖突步驟和避免將來沖突步驟將被執(zhí)行,消解以前沖突(Check-last)步驟:當該步驟檢測到遠程編輯操作的更新(Update)操作的目標對象是前面某個插入(Insert)操作的參照對象,其中,遠程編輯操作不僅為更新操作,也可為插入、刪除等操作,執(zhí)行以下步驟:
(I)該插入(Insert)操作被撤銷(Undo)掉,即、撤銷(Undo)過程;(2)由于更新(Update)操作本身也有可能受到全局執(zhí)行操作(All-exe)的原有操作歷史序列中并發(fā)操作的影響,因此,需利用虛擬轉換函數,將虛擬轉換函數(VT函數)應用在更新(Update)操作上,用于根據并發(fā)操作執(zhí)行相應的虛擬轉換,更新(Update)操作被轉換為轉換更新(V-update)操作,即、針對更新操作的VT轉換過程;(3)執(zhí)行轉換更新(V-update)操作,即、執(zhí)行(Do)過程);(4)針對更新(Update)操作,也將虛擬轉換函數(VT函數)應用在插入(Insert)操作上,全局執(zhí)行操作即、該插入(Insert)操作被轉換為轉換插入(V_insert)操作,即、針對全局執(zhí)行操作的VT轉換過程;(5)再來執(zhí)行上述轉換插入(V-1nsert)操作,即重新執(zhí)行(Redo)過程。避免將來沖突(Avoid-future)步驟中,執(zhí)行以下步驟:該插入(Insert)操作所對應的原操作的本地分解操作(Select及Copy)將被應用虛擬轉換函數(VT函數)后并重新執(zhí)行,以更新本地內存空間,避免了由更新(Update)操作引起的意愿沖突,經過處理以后的插入(Insert)操作都將包含更新(Update)操作的執(zhí)行效果,避免以后沖突的發(fā)生。另外,當一個操作從用戶界面釋放后,生成(Generate)過程負責將該操作轉化成為(OT)算法能夠直接處理的格式,如以下函數I所示,存在一個修改操作產生過程。如果該操作是一個原子操作,它將被立即被執(zhí)行,并附加到全局執(zhí)行操作的已有操作歷史序列(All-exe Op HB)中;如果該操作是一個關聯(lián)操作的分解操作,有兩種情況可能發(fā)生:如果為一個本地執(zhí)行操作(Local-exe Op),則該操作被立即執(zhí)行,并被附加本地執(zhí)行操作的第二操作歷史序列(Local-exe Op HB)中;如果為一個全局執(zhí)行操作(All-exe0p),則該操作被執(zhí)行,并被附加到全局執(zhí)行操作的已有操作歷史序列(All-exe Op HB)中,此后,將包含轉換(IT轉換)應用在本地執(zhí)行操作(Local-exe Op)中的操作,以更新用于存放本地執(zhí)行操作的第二操作歷史序列(Local-exe Op HB)中操作對象的位置信息。
權利要求
1.一種協(xié)同設計中維持關聯(lián)操作語義一致性的方法,其特征在于,具有以下步驟: 將關聯(lián)操作分解為至少一個本地執(zhí)行操作及至少一個全局執(zhí)行操作; 在操作轉換策略框架中,添加第一操作歷史序列、第二操作歷史序列,將所述關聯(lián)操作、所述本地執(zhí)行操作分別存放在所述第一操作歷史序列、所述第二操作歷史序列中,存放所述全局執(zhí)行操作在已有操作歷史序列中,利用所述第一操作歷史序列、所述第二操作歷史序列以及所述已有操作歷史序列來維持原有的所述關聯(lián)操作、所述本地執(zhí)行操作以及所述全局執(zhí)行操作之間的關聯(lián)關系;以及 釋放遠程編輯操作后,執(zhí)行消解以前沖突步驟和避免將來沖突步驟, 其中,當所述消解以前沖突步驟檢測到所述遠程編輯操作的目標對象是前面某個所述全局執(zhí)行操作的參照對象時,執(zhí)行以下步驟: 撤銷掉所述全局執(zhí)行操作,BP > Undo撤銷過程; 將虛擬轉換函數應用在所 述遠程編輯操作上,用于根據所述并發(fā)操作來進行相應的虛擬轉換,所述遠程編輯操作轉換為轉換遠程編輯操作,即、更新VT轉換過程; 執(zhí)行所述轉換遠程編輯操作,即、Do執(zhí)行過程; 針對所述遠程編輯操作,將所述虛擬轉換函數應用在所述全局執(zhí)行操作上,將所述全局執(zhí)行操作轉換為轉換全局執(zhí)行操作,即、全局VT轉換過程;以及執(zhí)行所述轉換全局執(zhí)行操作,BP> Redo重新執(zhí)行過程, 所述避免將來沖突步驟,執(zhí)行以下步驟: 某個所述全局執(zhí)行操作所對應的所述本地執(zhí)行操作將被應用所述虛擬轉換函數并被重新執(zhí)行,更新本地內存空間。
2.根據權利要求1中所述協(xié)同設計中維持關聯(lián)操作語義一致性的方法,其特征在于,還具有以下步驟: 從用戶界面釋放一個操作后,生成過程將所述操作轉化成為操作轉換算法能夠直接處理的格式; 當所述操作為原子操作時,將被立即被執(zhí)行,并存放到所述已有操作歷史序列中; 當所述操作為所述關聯(lián)操作的分解操作時,分以下兩種情況,當為所述本地執(zhí)行操作時,被立即執(zhí)行并被存放到所述第二操作歷史序列中,當為所述全局執(zhí)行操作,被執(zhí)行并被存放到所述已有操作歷史序列中; 然后,將針對所述本地執(zhí)行本地操作的所述操作進行包含轉換,以更新所述第二操作歷史序列中操作對象的位置信息。
3.根據權利要求1中所述協(xié)同設計中維持關聯(lián)操作語義一致性的方法,其特征在于: 其中,所述操作轉換策略框架能處理的有插入全局執(zhí)行操作、刪除全局執(zhí)行操作、更新全局執(zhí)行操作、選擇本地執(zhí)行操作以及復制本地執(zhí)行操作。
4.根據權利要求1中所述協(xié)同設計中維持關聯(lián)操作語義一致性的方法,其特征在于,還具有以下步驟: 其中,所述虛擬轉換函數用于將第一操作的執(zhí)行效果包含在第二操作中,可修改目標對象的屬性值,所述虛擬轉換函數的前體條件為:所述第二操作限制并發(fā)于所述第一操作,后續(xù)條件為:所述第一操作的所述目標對象的屬性值被更新為所述第二操作修正后的新值。
5.根據權利要求2中所述協(xié)同設計中維持關聯(lián)操作語義一致性的方法,其特征在于,還具有以下步驟: 其中,所述包含轉換用于將第一操作的執(zhí)行效果包含在第二操作中,可修改目標對象的位置信息,所述包含轉換的前體條件為:所述第二操作并發(fā)于所述第一操作,后續(xù)條件為:所述第一操作的參照對象和所述目標對象的位置值都隨著所述第二操作的執(zhí)行而做出相應的變換。`
全文摘要
本發(fā)明提供了一種協(xié)同設計中維持關聯(lián)操作語義一致性的方法,其特征在于將關聯(lián)操作分解為本地操作及全局操作;操作轉換框架中,添加兩個操作歷史序列,將關聯(lián)操作、本地操作分別存放在兩個操作歷史序列中,存放全局操作在已有操作歷史序列中,三個操作歷史序列維持關聯(lián)操作和分解操作關聯(lián)關系;釋放遠程編輯操作后,執(zhí)行消解以前沖突步驟和避免將來沖突步驟,其中,“撤銷-轉換-執(zhí)行-轉換-重新執(zhí)行”(Undo-VT-Do-VT-Redo)過程被引入到操作轉換策略框架中,用于控制遠程操作的執(zhí)行過程,避免將來沖突步驟某個全局執(zhí)行操作所對應的本地執(zhí)行操作將被應用虛擬轉換函數并被重新執(zhí)行,更新本地內存空間。
文檔編號G06F9/44GK103186383SQ20131013047
公開日2013年7月3日 申請日期2013年4月16日 優(yōu)先權日2013年4月16日
發(fā)明者高麗萍, 楊輝, 陳慶奎, 郭淑嫻, 張玉本 申請人:上海理工大學