專(zhuān)利名稱(chēng):能對(duì)于電子文檔通過(guò)多個(gè)計(jì)算機(jī)系統(tǒng)執(zhí)行近實(shí)時(shí)合作的方法、系統(tǒng)和裝置的制作方法
相關(guān)申請(qǐng)的交叉引用本聲明要求于2004年4月20日提交的序號(hào)為60/563.685、發(fā)明名稱(chēng)為“OneNote共享會(huì)話特性”的美國(guó)臨時(shí)專(zhuān)利申請(qǐng)的優(yōu)先權(quán),該專(zhuān)利申請(qǐng)整體引用在此作為參考。
背景技術(shù):
隨著因特網(wǎng)的到來(lái)和發(fā)展,產(chǎn)生了允許遠(yuǎn)程計(jì)算機(jī)用戶(hù)對(duì)于共同的任務(wù)而一起工作的網(wǎng)絡(luò)計(jì)算應(yīng)用。例如,存在允許遠(yuǎn)程用戶(hù)觀看共同的白板、對(duì)于一個(gè)幻燈片放映進(jìn)行觀看和互動(dòng)、相互之間的聊天、以及以合作的方式執(zhí)行其它功能。對(duì)于需要協(xié)同工作但又相隔遙遠(yuǎn)的用戶(hù)來(lái)說(shuō),這種程序方法通常提高了工作效率。
先前通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)來(lái)對(duì)一項(xiàng)任務(wù)進(jìn)行協(xié)作的解決方案的一個(gè)缺點(diǎn)是在用戶(hù)協(xié)作工作期間,不能提供滿意的用戶(hù)體驗(yàn)。例如,由于大量的數(shù)據(jù)要不斷地發(fā)送到所有的參與者,先前所述的解決方案一般會(huì)使網(wǎng)絡(luò)的性能下降。在許多情況下,當(dāng)數(shù)據(jù)正在傳輸,應(yīng)用程序會(huì)急劇減慢或者甚至阻礙用戶(hù)進(jìn)行輸入。在這種情況下,用戶(hù)將明顯地察覺(jué)到共享過(guò)程正在進(jìn)行,并且也許甚至變得對(duì)應(yīng)用軟件感到失望。
用戶(hù)體驗(yàn)變?cè)愕牧硪粋€(gè)事實(shí)起源于,當(dāng)通過(guò)先前的解決方案進(jìn)行合作時(shí),對(duì)于一組給定的合作者,他們可用的網(wǎng)絡(luò)帶寬和等待延時(shí)是有很大差異的。比如,在一個(gè)給定的合作會(huì)話中,幾個(gè)用戶(hù)可能連接到高速局域網(wǎng)連接,而其他的用戶(hù)可能被低速的撥號(hào)網(wǎng)絡(luò)連接所限制。運(yùn)用先前的解決方案,通過(guò)撥號(hào)連接的用戶(hù)在接收和更新共享文件可能會(huì)有極大的困難。這個(gè)對(duì)用戶(hù)來(lái)說(shuō)也是非常沮喪的。
本發(fā)明的各種實(shí)施例正是基于這些因素和其它的考慮而作出的。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的具體實(shí)施方式
,以上所述的和其它的問(wèn)題通過(guò)由兩個(gè)或兩個(gè)以上的計(jì)算機(jī)系統(tǒng)對(duì)電子文件進(jìn)行近實(shí)時(shí)合作的方法,系統(tǒng)和裝置來(lái)解決。發(fā)明的實(shí)時(shí)方式允許兩個(gè)或兩個(gè)以上用戶(hù)參與一個(gè)共享會(huì)話,通過(guò)計(jì)算機(jī)網(wǎng)絡(luò),交互地產(chǎn)生或者修改電子文件。電子文件的更改以一種即使在高等待時(shí)間,低帶寬的網(wǎng)絡(luò)情況下,依然允許合作近實(shí)時(shí)發(fā)生的方式被識(shí)別,打包和傳送給每個(gè)用戶(hù)。此外,由于文件的更改被打包成為增量的修訂版本,然后傳送給參與者,沒(méi)有必要傳送大量數(shù)據(jù)使近實(shí)時(shí)合作成為可能。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種通過(guò)兩個(gè)或兩個(gè)以上計(jì)算機(jī)來(lái)對(duì)電子文檔實(shí)行近實(shí)時(shí)合作的方法。根據(jù)所述方法,一種代表共享文件內(nèi)容的數(shù)據(jù)結(jié)構(gòu)在每個(gè)參與合作會(huì)話的計(jì)算機(jī)系統(tǒng)上都可維持。當(dāng)用戶(hù)修改文件的輸入被上述計(jì)算機(jī)系統(tǒng)之一接收到時(shí),數(shù)據(jù)結(jié)構(gòu)就被更新以反映此修改。為了響應(yīng)修改,數(shù)據(jù)結(jié)構(gòu)的改變被周期性地識(shí)別和收集成作為編輯結(jié)果的修訂版,此版本只識(shí)別作出的更改。修訂版識(shí)別對(duì)作為任何編輯結(jié)果的文件的核心數(shù)據(jù)模型作出的改變。
為了確保編輯狀態(tài)中的正確進(jìn)程,在將修訂版?zhèn)魉徒o其它參與者時(shí)要先判定在諸參與者中接受編輯的計(jì)算機(jī)系統(tǒng)上維持的數(shù)據(jù)結(jié)構(gòu)的備份是否是最新版本。如果所述數(shù)據(jù)結(jié)構(gòu)不是當(dāng)前版本,應(yīng)從其他參與者中檢索出需要使所述數(shù)據(jù)結(jié)構(gòu)成為當(dāng)前的所需要的版本的修訂版本,并且應(yīng)用到上述數(shù)據(jù)結(jié)構(gòu)中去。一旦數(shù)據(jù)結(jié)構(gòu)是當(dāng)前的,修訂版本就被打包,傳送到每個(gè)參與共享會(huì)話的參與者。修訂版本被頻繁地接收,以確保修訂版本足夠小到以便通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)快速傳送。
當(dāng)其他參與會(huì)話的計(jì)算機(jī)系統(tǒng)接收到修訂版時(shí),這些修訂版本就被合并成存儲(chǔ)在參與計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)的備份。然后,該數(shù)據(jù)結(jié)構(gòu)被用來(lái)刷新共享文件的顯示,從而表明任何參與會(huì)話的計(jì)算機(jī)系統(tǒng)中的近實(shí)時(shí)修改。編輯可以被任一參與會(huì)話的計(jì)算機(jī)系統(tǒng)接收,并且以相似的方式傳送給其他參與者。
為了進(jìn)一步地確保在不同參與者中的編輯的有效進(jìn)程,同步令牌可以被運(yùn)用。同步令牌是一種在參與者之間傳送的數(shù)據(jù)結(jié)構(gòu)。只有擁有同步令牌的計(jì)算機(jī)系統(tǒng)才被允許對(duì)數(shù)據(jù)結(jié)構(gòu)產(chǎn)生新的修訂。因此,在作任何修訂之前,參與計(jì)算機(jī)系統(tǒng)必須冼先確認(rèn)它是否擁有了同步令牌。如果它擁有了同步令牌,它可以制定新的修訂版本,并且將修訂版本傳送給其它參與者。如果它不擁有同步令牌,那么它必須向此時(shí)擁有同步令牌的參與計(jì)算機(jī)系統(tǒng)提出請(qǐng)求,請(qǐng)求同步令牌。
為了確保同步令牌在參與會(huì)話的計(jì)算機(jī)系統(tǒng)之間傳遞的公正性,對(duì)于令牌的請(qǐng)求包含了表明請(qǐng)求的計(jì)算機(jī)系統(tǒng)已經(jīng)等待令牌的時(shí)間的數(shù)據(jù)。如果對(duì)于請(qǐng)求沒(méi)有接收到響應(yīng),另一個(gè)請(qǐng)求可以被發(fā)送表明計(jì)算機(jī)系統(tǒng)一直在等待該令牌的延長(zhǎng)持續(xù)時(shí)間。當(dāng)同步令牌擁有者接收到索要令牌的請(qǐng)求,它會(huì)檢測(cè)每個(gè)請(qǐng)求,來(lái)確定在等待接收令牌中等待時(shí)間最長(zhǎng)的參與者,然后將令牌傳送給那個(gè)計(jì)算機(jī)系統(tǒng)。
其它機(jī)制也被用來(lái)確保在所有的參與者中,一個(gè)并且只有一個(gè)令牌存在。例如,如果一個(gè)對(duì)于令牌的請(qǐng)求在預(yù)定的時(shí)間內(nèi)沒(méi)有完成,一個(gè)新的令牌會(huì)被產(chǎn)生。這種情況在以下例子中會(huì)發(fā)生,如果一個(gè)擁有令牌的計(jì)算機(jī)系統(tǒng)從網(wǎng)絡(luò)中斷開(kāi)連接。另一方面,會(huì)周期性地檢測(cè)是否在參與者中存在兩個(gè)或兩個(gè)以上的令牌。如果有兩個(gè)同步令牌存在,一個(gè)確定性的算法會(huì)在每個(gè)擁有令牌的計(jì)算機(jī)系統(tǒng)上運(yùn)行,以決定哪個(gè)令牌應(yīng)該被廢除。
一個(gè)機(jī)制也被提供用來(lái)確保通過(guò)低帶寬連接的計(jì)算機(jī)系統(tǒng)能被公平地授予令牌。多個(gè)令牌也可以存在,但是是被用來(lái)最小化復(fù)制。根據(jù)這個(gè)機(jī)制,當(dāng)接收到需要令牌的請(qǐng)求時(shí),一個(gè)判斷是否令牌已經(jīng)被傳送給另外一個(gè)參與者的判定被做出。如果令牌已經(jīng)被傳送,請(qǐng)求中“生存次數(shù)”的值將減少。如果生存次數(shù)沒(méi)有過(guò)期,索要令牌的請(qǐng)求被轉(zhuǎn)發(fā)給新的同步令牌的擁有者。通過(guò)這種方法,來(lái)自低帶寬連接參與者的請(qǐng)求被有效地注入高帶寬網(wǎng)絡(luò)。
本發(fā)明可以被實(shí)現(xiàn)為一計(jì)算機(jī)過(guò)程、一計(jì)算裝置或者是作為如計(jì)算機(jī)程序產(chǎn)品和計(jì)算機(jī)可讀介質(zhì)的一種制品。計(jì)算機(jī)程序產(chǎn)品可以是計(jì)算機(jī)系統(tǒng)可讀的計(jì)算機(jī)存儲(chǔ)介質(zhì),和用于執(zhí)行計(jì)算機(jī)程序進(jìn)行的對(duì)計(jì)算機(jī)程序指令的編碼的程序。
結(jié)合附圖閱讀以下詳細(xì)的描述,可以明顯理解本發(fā)明的上述和其它方面、特征和優(yōu)點(diǎn)。
附圖簡(jiǎn)介
圖1是就本發(fā)明的各種實(shí)施例示出了說(shuō)明性運(yùn)行環(huán)境的各方面的計(jì)算機(jī)網(wǎng)絡(luò)圖。
圖2是就本發(fā)明的各種實(shí)施例所提供和使用的計(jì)算機(jī)系統(tǒng)的各方面的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)圖。
圖3A是計(jì)算機(jī)軟件架構(gòu)圖,說(shuō)明了有關(guān)本發(fā)明的各種實(shí)施例所使用的一些軟件部分的各方面。
圖3B是流程圖,說(shuō)明了根據(jù)本發(fā)明的一個(gè)實(shí)施例而初始化一個(gè)新的共享會(huì)話的過(guò)程。
圖4A是計(jì)算機(jī)軟件架構(gòu)圖,說(shuō)明了當(dāng)加入一現(xiàn)存的共享會(huì)話時(shí),被使用的軟件組分的各方面。
圖4B是流程圖,說(shuō)明了根據(jù)本發(fā)明中的一個(gè)實(shí)施例,加入一個(gè)現(xiàn)存的共享會(huì)話的過(guò)程。
圖5A是屏幕圖,說(shuō)明了在本發(fā)明實(shí)施例中所運(yùn)用到的屏幕顯示。
圖5B是數(shù)據(jù)結(jié)構(gòu)圖,說(shuō)明了在本發(fā)明實(shí)施例中所運(yùn)用到的圖形數(shù)據(jù)結(jié)構(gòu)的各方面。
圖6A和圖6B是數(shù)據(jù)結(jié)構(gòu)圖,說(shuō)明了在本發(fā)明不同實(shí)施例中產(chǎn)生修訂版本的過(guò)程。
圖7是計(jì)算機(jī)軟件架構(gòu)圖,說(shuō)明了在本發(fā)明不同實(shí)施例中使用的一些軟件部件的各方面。
圖8-12是狀態(tài)圖,說(shuō)明了根據(jù)本發(fā)明不同實(shí)施例對(duì)于電子文檔提供靠近實(shí)時(shí)合作的一些步驟。
發(fā)明內(nèi)容
現(xiàn)在參照附圖,圖中相似的編號(hào)代表相似的元件,本發(fā)明的各個(gè)方面將被描述。特別是,圖1和相應(yīng)的討論是用來(lái)提供對(duì)適于本發(fā)明實(shí)現(xiàn)的運(yùn)算環(huán)境的簡(jiǎn)短而一般的描述。盡管本發(fā)明將在程序模塊的一般上下文中描述,此程序模塊和運(yùn)行在個(gè)人計(jì)算機(jī)上的操作系統(tǒng)連同執(zhí)行,本領(lǐng)域的技術(shù)人員會(huì)認(rèn)識(shí)到本發(fā)明也可以結(jié)合其它類(lèi)型的計(jì)算機(jī)系統(tǒng)和程序模塊來(lái)實(shí)現(xiàn)。
一般而言,程序模塊包括例行程序、程序、組件、數(shù)據(jù)結(jié)構(gòu)以及其它類(lèi)型的執(zhí)行特殊任務(wù)或者運(yùn)行特殊抽象數(shù)據(jù)類(lèi)型的結(jié)構(gòu)。此外,本領(lǐng)域中的那些技術(shù)人員將理解本發(fā)明也可用其它計(jì)算機(jī)系統(tǒng)配置來(lái)實(shí)施,這些配置包括手持設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程的消費(fèi)者電子設(shè)備、小型機(jī)、主機(jī),以及類(lèi)似的配置。本發(fā)明也可在分布式計(jì)算環(huán)境中實(shí)施,其中任務(wù)由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理裝置執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊既可以安置在本地也可安置在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)裝置中。
現(xiàn)在參照?qǐng)D1,描述本發(fā)明的幾個(gè)具體實(shí)施例的說(shuō)明性運(yùn)行環(huán)境。如圖1所示,網(wǎng)絡(luò)4把許多計(jì)算機(jī)系統(tǒng)(2A-2D)相互聯(lián)結(jié)起來(lái)。應(yīng)該認(rèn)識(shí)到網(wǎng)絡(luò)4可以包含任何類(lèi)型的計(jì)算機(jī)網(wǎng)絡(luò),包括局域網(wǎng)(LAN)或者如因特網(wǎng)之類(lèi)的廣域網(wǎng)(WAN)。網(wǎng)絡(luò)4提供使2A-2D的計(jì)算機(jī)系統(tǒng)中任何成員間的通信成為可能的介質(zhì),也將使和通過(guò)網(wǎng)絡(luò)4連接的其它計(jì)算機(jī)網(wǎng)絡(luò)間的通訊成為可能。根據(jù)本發(fā)明的一個(gè)具體實(shí)施方式
,網(wǎng)絡(luò)4包含了一諸如因特網(wǎng)的傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP)網(wǎng)絡(luò)。
每個(gè)在2A-2D中的計(jì)算機(jī)系統(tǒng)包含了通用臺(tái)式機(jī)、便攜式計(jì)算機(jī)、寫(xiě)字板或者其它能執(zhí)行一個(gè)或多個(gè)應(yīng)用程序的計(jì)算機(jī)。特別是,根據(jù)本發(fā)明的各種實(shí)施例,計(jì)算機(jī)2執(zhí)行記筆記的應(yīng)用。本領(lǐng)域的技術(shù)人員都了解,筆記應(yīng)用程序提供捕獲和組織包括文本、手寫(xiě)筆跡、圖像、繪畫(huà)、語(yǔ)音和其它信息的紀(jì)錄的功能。
根據(jù)本發(fā)明的實(shí)施例,筆記應(yīng)用程序也允許對(duì)由筆記應(yīng)用產(chǎn)生的文件的近實(shí)時(shí)合作。就像此處描述的一樣,近實(shí)時(shí)是指使在參與合作會(huì)話的每個(gè)計(jì)算機(jī)系統(tǒng)(2A-2D)上的文件的刷新可以做到和網(wǎng)絡(luò)4所允許的一樣快。當(dāng)用高帶寬網(wǎng)絡(luò)將計(jì)算機(jī)系統(tǒng)2A-2D連接到網(wǎng)絡(luò)4的情況下,響應(yīng)時(shí)間將接近實(shí)時(shí)。當(dāng)用較慢的網(wǎng)絡(luò)連接時(shí),響應(yīng)時(shí)間將變慢。然后,就像將要在下面更詳細(xì)描述的那樣,提供許多機(jī)制以確保通過(guò)較慢連接的參與共享會(huì)話的計(jì)算機(jī)系統(tǒng)也會(huì)享受很好的響應(yīng)性能,而不致于對(duì)使用較高帶寬連接的參與者的性能受到負(fù)面影響。
用來(lái)確保即使用戶(hù)在慢連接時(shí)也將擁有響應(yīng)經(jīng)驗(yàn)的一種方法包括同步令牌6的公平傳遞。同步令牌6在參與共享會(huì)話的計(jì)算機(jī)系統(tǒng)2A-2B之間傳遞。同步令牌6是一種數(shù)據(jù)結(jié)構(gòu),它授權(quán)計(jì)算機(jī)系統(tǒng)使得擁有它的計(jì)算機(jī)系統(tǒng)可將共享文件刷新至當(dāng)前狀態(tài)。令牌的擁有權(quán)將不阻止用戶(hù)做局部更改。有關(guān)運(yùn)用同步令牌6來(lái)提供近實(shí)時(shí)合作的更多細(xì)節(jié)將在以下關(guān)于圖2-11中提供。
應(yīng)當(dāng)理解,根據(jù)本發(fā)明的一個(gè)實(shí)施例,筆記應(yīng)用包含來(lái)自華盛頓州雷蒙德的微軟公司的ONENOTE筆記應(yīng)用程序。然而應(yīng)當(dāng)理解,在此描述的本發(fā)明的各個(gè)方面也可以和來(lái)自其它制造者的的筆記應(yīng)用程序一起運(yùn)用。此外,雖然在此描述的本發(fā)明的多個(gè)方面是以筆記應(yīng)用程序的上下文中被介紹,應(yīng)當(dāng)理解其它類(lèi)型的應(yīng)用程序也可以用來(lái)實(shí)施本發(fā)明的各個(gè)方面。例如,本發(fā)明的各個(gè)方面可以和文字處理程序、電子制表程序、繪圖程序、計(jì)算機(jī)輔助設(shè)計(jì)程序、顯示程序、和任何可以被用來(lái)對(duì)文檔內(nèi)容與一個(gè)或多個(gè)用戶(hù)合作的其它類(lèi)型的計(jì)算機(jī)程序一起使用。
現(xiàn)在參照?qǐng)D2,將描述運(yùn)用在本發(fā)明的各種實(shí)施例中的計(jì)算機(jī)2的說(shuō)明性計(jì)算機(jī)架構(gòu)。圖2所示的計(jì)算機(jī)架構(gòu)示出了常規(guī)的臺(tái)式計(jì)算機(jī)、便攜式計(jì)算機(jī)、或者是筆記本計(jì)算機(jī),包括中央處理器(CPU)8、包含了隨機(jī)存取存儲(chǔ)器(RAM)18和只讀存儲(chǔ)器(ROM)20的系統(tǒng)存儲(chǔ)12以及把存儲(chǔ)器和CPU8相連的系統(tǒng)總線10。一個(gè)包含幫助在計(jì)算機(jī)內(nèi)部部件中諸如在啟動(dòng)期間傳送信息的基本程序的基本輸入/輸出系統(tǒng)存儲(chǔ)在ROM20中。此外,計(jì)算機(jī)2還包括用來(lái)存儲(chǔ)操作系統(tǒng)32、應(yīng)用程序和其它程序模塊的大容量存貯器器件14,下面將作詳細(xì)描述。
大容量存貯器器件14通過(guò)連接至總線10上的大容量存貯控制器(未顯示)連接到CPU8。大容量存貯器器件14及與其相聯(lián)系的計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)2提供非易失性存儲(chǔ)。雖然這里對(duì)于計(jì)算機(jī)可讀介質(zhì)的描述是指諸如硬盤(pán)或光盤(pán)驅(qū)動(dòng)器之類(lèi)的大容量存貯器器件,那些本領(lǐng)域中的技術(shù)人員應(yīng)該認(rèn)為,計(jì)算機(jī)可讀介質(zhì)可以是任何可被計(jì)算機(jī)2訪問(wèn)的介質(zhì)。
作為例子,而非限制,計(jì)算機(jī)可讀介質(zhì)可以包含計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括任何用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的方法或技術(shù)中所運(yùn)用的易失性和非易失性、可移動(dòng)性和非可移動(dòng)性的介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但非局限于,RAM、ROM、EPROM、EEPROM、閃存或其它固態(tài)存儲(chǔ)技術(shù),CD-ROM、數(shù)字化視頻光盤(pán)(DVD)、或其它光學(xué)存貯器,盒式磁帶、磁帶、磁盤(pán)存儲(chǔ)器或其它磁性存儲(chǔ)器件,或者任何其它可以被用于存儲(chǔ)所需要的信息并且可以被計(jì)算機(jī)2存取的介質(zhì)。
根據(jù)本發(fā)明的各種具體實(shí)施方式
,計(jì)算機(jī)2可以在一個(gè)采用通過(guò)TCP/IP網(wǎng)絡(luò)4,諸如因特網(wǎng)的邏輯連接到遠(yuǎn)程計(jì)算機(jī)的聯(lián)網(wǎng)環(huán)境中運(yùn)行。計(jì)算機(jī)2可以通過(guò)一個(gè)連接到總線10的網(wǎng)絡(luò)接口單元16連接到網(wǎng)絡(luò)4。應(yīng)該理解網(wǎng)絡(luò)接口單元16也可以用來(lái)連接到其它類(lèi)型的網(wǎng)絡(luò)和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)2也可包括用來(lái)接收和處理來(lái)自許多其它包括鍵盤(pán)、鼠標(biāo)或者電子輸入筆(在圖2中未顯示出)器件的輸入的輸入/輸出控制器22。類(lèi)似地,輸入/輸出控制器22可提供到顯示屏、打印機(jī)或者其它類(lèi)型的輸出器件輸出。
就像以上簡(jiǎn)短提及的,許多程序模塊和數(shù)據(jù)文件,包括諸如來(lái)自美國(guó)華盛頓州雷蒙德微軟公司的WINDOWS XP操作系統(tǒng)的適于控制聯(lián)網(wǎng)的個(gè)人計(jì)算機(jī)操作的操作系統(tǒng)32,可以存儲(chǔ)在計(jì)算機(jī)2中的大容量存貯器件14和RAM18中。大容量存貯器件14和RAM18也可以存儲(chǔ)一個(gè)或多個(gè)程序模塊。特別是如上所述,大容量存貯器件14和RAM18可以存儲(chǔ)筆記應(yīng)用程序24。就像以上簡(jiǎn)短描述的筆記應(yīng)用24包含捕獲和組織可包括文本、手寫(xiě)筆跡、圖片、繪畫(huà)、語(yǔ)音或者其它信息的記錄的應(yīng)用程序。
記錄可以被筆記應(yīng)用24組織到筆記本、文件夾、頁(yè)和節(jié)中。在一個(gè)頁(yè)面中,注記可以被隨處放置并且隨后可被重新定位。此外,可通過(guò)加著重號(hào)和列表方式,也可用標(biāo)記和高亮方式而對(duì)注記予以強(qiáng)調(diào)。字體、式樣、大小和顏色,也可完全控制。當(dāng)用戶(hù)退出筆記應(yīng)用24時(shí),筆記本中的內(nèi)容可存儲(chǔ)在在大容量存貯器件14上的筆記文檔26中。有關(guān)ONENOTE筆記應(yīng)用程序操作的其它詳情可從華盛頓州雷蒙德微軟公司公開(kāi)獲取。
為了創(chuàng)建共享會(huì)話文檔,筆記應(yīng)用24使用對(duì)等(“P2P”)應(yīng)用編程接口(“API”)28。P2P API 28運(yùn)用網(wǎng)絡(luò)端口API30來(lái)提供在傳輸協(xié)議層和會(huì)話協(xié)議層的與介質(zhì)無(wú)關(guān)的聯(lián)網(wǎng)服務(wù)。P2P API的介質(zhì)無(wú)關(guān)性是指合作會(huì)話可以在TCP/IP網(wǎng)絡(luò),IPX網(wǎng)絡(luò)以及其它經(jīng)直接連接的調(diào)制解調(diào)器和串行電纜上運(yùn)行。P2P API 28可以創(chuàng)建包括客戶(hù)/服務(wù)器和對(duì)等的聯(lián)網(wǎng)會(huì)話、群組管理、保證和非保證的消息傳輸、順序和非順序的消息傳輸、消息分割和重組、話務(wù)流量節(jié)制、報(bào)文優(yōu)先級(jí)、連接統(tǒng)計(jì)量和會(huì)話說(shuō)明查詢(xún)的p2p基礎(chǔ)結(jié)構(gòu)。
根據(jù)本發(fā)明的一項(xiàng)具體實(shí)施,P2P API 28包含來(lái)自微軟公司的DIRECTPLAYAPI。DIRECTPLAY API是一個(gè)公開(kāi)的API,更多有關(guān)它的使用和實(shí)現(xiàn)的其他詳情可從微軟公司公開(kāi)獲取。應(yīng)該認(rèn)為可從其它廠商獲取的其它技術(shù)也可以用以在計(jì)算機(jī)2A-2D間產(chǎn)生對(duì)等聯(lián)網(wǎng)會(huì)話。
大容量存貯器件14和RAM18也可以存儲(chǔ)電子郵件客戶(hù)應(yīng)用程序34。電子郵件應(yīng)用程序34可以用來(lái)發(fā)送和接收包含加入共享會(huì)話邀請(qǐng)的電子郵件。例如,計(jì)算機(jī)2A-2D之一的用戶(hù)可以在筆記應(yīng)用24內(nèi)開(kāi)始共享會(huì)話,其中筆記文檔26的一個(gè)或多個(gè)頁(yè)面被共享。為了邀請(qǐng)其他參與者共享會(huì)話,電子郵件客戶(hù)應(yīng)用34可以用來(lái)創(chuàng)建指向其他已打算參加的參與者的電子郵件。該電子郵件可包括一與筆記應(yīng)用程序24相關(guān)的附件,附件中包括對(duì)于連接到共享會(huì)話所需的信息(網(wǎng)絡(luò)協(xié)議地址等)。
當(dāng)其中一個(gè)打算參加會(huì)話的接收者收到從會(huì)話發(fā)起者發(fā)出的電子郵件消息時(shí),此消息中的附件即可被選擇并執(zhí)行。附件的執(zhí)行可以導(dǎo)致筆記應(yīng)用24執(zhí)行并用附件中所包含的數(shù)據(jù)連接到共享會(huì)話中。一旦連接到共享會(huì)話,每個(gè)參與者的計(jì)算機(jī)系統(tǒng)中都會(huì)有一份由共享文檔形成的副本。通過(guò)這個(gè)方式,當(dāng)用戶(hù)加入到共享的會(huì)話時(shí),頁(yè)面即可通過(guò)筆記應(yīng)用24插入到存儲(chǔ)在他們計(jì)算機(jī)中的筆記簿中。隨著共享會(huì)話中的各個(gè)參與者對(duì)于文檔已作了編輯,文檔的各種副本隨后便會(huì)彼此同步化。會(huì)話發(fā)起者可以規(guī)定用戶(hù)是否可以基于個(gè)人或全局編輯共享的文檔。
有關(guān)電子文檔更改的同步化的其他詳情將在下面提供。應(yīng)當(dāng)理解并不必需將電子郵件邀請(qǐng)傳送給共享會(huì)話的參與者。共享會(huì)話的網(wǎng)絡(luò)地址可以由參與者手動(dòng)地或是通過(guò)其它途徑提供。網(wǎng)絡(luò)地址隨后可用于以手動(dòng)方式與共享會(huì)話連接。
現(xiàn)在轉(zhuǎn)到圖3A,更多的有關(guān)創(chuàng)建新共享會(huì)話的細(xì)節(jié)將被提供。如圖3A所示,文檔26包括一個(gè)或多個(gè)可共享的頁(yè)面40A-40C。當(dāng)開(kāi)始新會(huì)話的請(qǐng)求被接收時(shí),諸如通過(guò)選擇用戶(hù)界面按鈕或者菜單選項(xiàng)46,請(qǐng)求即被傳送到由筆記應(yīng)用24提供的已被共享的會(huì)話API 44。共享會(huì)話API 44協(xié)調(diào)共享會(huì)話的創(chuàng)造與加入、管理會(huì)話,調(diào)用該P(yáng)2P API 28以執(zhí)行通訊;此外,API 44也執(zhí)行此處描述的其他功能。
當(dāng)創(chuàng)造新的共享會(huì)話時(shí),已被共享的會(huì)話API 44即對(duì)將要被共享的每個(gè)頁(yè)面40A-40C的創(chuàng)建一新的頁(yè)面同步化對(duì)象42A-42C。每個(gè)頁(yè)面同步化對(duì)象42A-42C連接到相應(yīng)的已共享頁(yè)面40A-40C。就像將要在下面進(jìn)行詳加描述的那樣,每個(gè)頁(yè)面同步對(duì)象42A-42C負(fù)責(zé)監(jiān)控每個(gè)頁(yè)面所基于的數(shù)據(jù)模型的更改,創(chuàng)建描述更改此數(shù)據(jù)模型的修訂版,并把修訂版?zhèn)魉徒o在每個(gè)參與會(huì)話的計(jì)算機(jī)系統(tǒng)上執(zhí)行的相應(yīng)的頁(yè)面同步對(duì)象。頁(yè)面同步對(duì)象42A-42C也負(fù)責(zé)接收、合并從其它計(jì)算機(jī)系統(tǒng)接收的修訂版,還負(fù)責(zé)執(zhí)行在此描述的其它功能。
參照?qǐng)D3B,現(xiàn)將描述一例行程序300,說(shuō)明由筆記應(yīng)用程序24執(zhí)行的用來(lái)初始化一個(gè)新的文檔共享會(huì)話的過(guò)程。當(dāng)讀到在此所表示的對(duì)例行程序和狀態(tài)機(jī)的討論時(shí),應(yīng)當(dāng)理解本發(fā)明的各種實(shí)施例中的邏輯操作被實(shí)現(xiàn)為(1)運(yùn)行在計(jì)算系統(tǒng)上的計(jì)算機(jī)實(shí)現(xiàn)的動(dòng)作的一個(gè)序列或程序模塊和/或(2)在計(jì)算系統(tǒng)內(nèi)相互連接的機(jī)器邏輯電路或電路模塊。該實(shí)現(xiàn)是一個(gè)根據(jù)實(shí)現(xiàn)本發(fā)明的計(jì)算系統(tǒng)運(yùn)行需求做出選擇的問(wèn)題。因此,在此所討論的說(shuō)明狀態(tài)圖的邏輯操作和在此描述的實(shí)現(xiàn)本發(fā)明的具體實(shí)施方式
,都是指各種操作、結(jié)構(gòu)器件、動(dòng)作或模塊。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到這些操作、結(jié)構(gòu)器件、動(dòng)作或模塊可以以軟件、固件、專(zhuān)用數(shù)字邏輯及其任何組合來(lái)實(shí)現(xiàn),而不偏離本權(quán)利說(shuō)明書(shū)中所列舉的本發(fā)明的精神和范圍。
例行程序300在操作302處開(kāi)始,此處諸如來(lái)自用戶(hù)的一個(gè)請(qǐng)求被接收,用以共享當(dāng)前筆記文件的一個(gè)或多個(gè)頁(yè)面。作為對(duì)請(qǐng)求的響應(yīng),例行程序300繼續(xù)到操作304,在此共享的會(huì)話API 44調(diào)用P2P API 28以創(chuàng)建一個(gè)新的對(duì)等會(huì)話。例行程序300從操作304,繼續(xù)到操作306,在此對(duì)于將在新會(huì)話中被共享的每個(gè)頁(yè)面40A-40C,創(chuàng)建一個(gè)新的頁(yè)面同步對(duì)象42A-42C。每個(gè)頁(yè)面同步對(duì)象42A-42C被鏈接到頁(yè)面40A到40C,并被連接到新的共享對(duì)話。應(yīng)當(dāng)理解當(dāng)一個(gè)參與者加入一先前創(chuàng)建的會(huì)話中時(shí),參與者計(jì)算機(jī)系統(tǒng)上的頁(yè)面同步對(duì)象也被初始化,以控制存儲(chǔ)在計(jì)算機(jī)系統(tǒng)上的頁(yè)面更新。
從操作306,例行程序300繼續(xù)到操作308,在此參與者可被邀請(qǐng)加入新的共享會(huì)話。就上所述,加入共享會(huì)話的邀請(qǐng)函可以通過(guò)電子郵件消息傳送給其他參與者?;蛘撸渌绞揭部捎脕?lái)邀請(qǐng)參與者和把共享會(huì)話的網(wǎng)絡(luò)地址傳送給其它參與者。例行程序300,從操作308再繼續(xù)到操作310,在此,確定是否其他參與者已經(jīng)加入到共享對(duì)話中。應(yīng)當(dāng)理解當(dāng)?shù)却渌麉⑴c者加入共享會(huì)話以及在共享會(huì)話的期間,筆記應(yīng)用24可以常規(guī)方式運(yùn)行。
如果,在操作310處,確定沒(méi)有其它參與者加入到共享會(huì)話中,例行程序300就返回到操作310,在此作出另一個(gè)相似的確定。然而,如果其他用戶(hù)已經(jīng)加入到新的共享會(huì)話中,例行程序300就繼續(xù)到操作312。在操作312中,每個(gè)共享頁(yè)面40A-40C的最新修訂版被傳送給每個(gè)新的參與者。如將在下面詳加描述的那樣,修訂版標(biāo)識(shí)了對(duì)于用來(lái)代表作為任何編輯結(jié)果的文檔26的核心數(shù)據(jù)模型的變更。因?yàn)橹皼](méi)有修訂版?zhèn)魉徒o參與者,第一個(gè)修訂版包含了共享文件的完整狀態(tài)。這在操作312被傳送給其它參與者。
例行程序300又從操作312,繼續(xù)到操作314,在此,由任何參與者作出的對(duì)共享文檔的變更被交換和同步化。通過(guò)以在此描述的方式交換修訂版并把修訂版合并到共享文檔中去,近實(shí)時(shí)合作可被執(zhí)行,即使用戶(hù)通過(guò)慢速網(wǎng)絡(luò)連接到網(wǎng)絡(luò)4。有關(guān)共享文件的同步化的其他細(xì)節(jié)將在下面對(duì)照?qǐng)D8-11提供。
從操作314,例行程序300繼續(xù)到判決操作316,在此已確定共享會(huì)話是否已結(jié)束。如果共享會(huì)話尚未結(jié)束,例行程序300轉(zhuǎn)回到操作314,在此繼續(xù)同步化進(jìn)程。如果會(huì)話已經(jīng)結(jié)束,例行程序300繼續(xù)到操作318,并在此結(jié)束。
現(xiàn)在參照?qǐng)D4A,有關(guān)加入先前創(chuàng)建的共享會(huì)話的更多細(xì)節(jié)將被提供。如上所述,電子郵件消息可當(dāng)做加入共享會(huì)話的邀請(qǐng)函被傳送。該電子郵件可以包括附件50,該附件包括共享會(huì)話的會(huì)話地址52。當(dāng)附件50被下載到一計(jì)算機(jī)系統(tǒng)時(shí),在具有會(huì)話地址52的共享會(huì)話API44上的一個(gè)加入方法54被調(diào)用。作為對(duì)調(diào)用加入方法54的響應(yīng),共享會(huì)話API 44用一條加入共享會(huì)話指令調(diào)用P2P API 28,作為響應(yīng),P2P API 28可通過(guò)網(wǎng)絡(luò)4連接到共享會(huì)話。有關(guān)這個(gè)過(guò)程的更多詳情在下面對(duì)照?qǐng)D4B描述。
圖4B表示了一說(shuō)明性的加入先前創(chuàng)建的共享會(huì)話的過(guò)程。例行程序400從操作402開(kāi)始,在此收到加入現(xiàn)存的共享會(huì)話的邀請(qǐng)函。當(dāng)該邀請(qǐng)被選中時(shí),例行程序400繼續(xù)到操作404,在此存儲(chǔ)在參與者計(jì)算機(jī)系統(tǒng)上的P2P API 28用加入現(xiàn)存共享會(huì)話的請(qǐng)求。然后,例行程序400繼續(xù)到操作406,在此確定到共享會(huì)話的連接是否已經(jīng)建立。如果連接不能建立,例行程序400繼續(xù)到操作414而結(jié)束。如果連接被建立,例行程序400就從操作406繼續(xù)到操作408。
在操作408處,共享文檔的當(dāng)前修訂版408被參與者計(jì)算機(jī)接收。因?yàn)橄惹皼](méi)有接受過(guò)的修訂版,第一個(gè)修訂版就包含當(dāng)參與者加入會(huì)話時(shí)文檔的狀態(tài)。一旦接受到當(dāng)前修訂版,例行程序400繼續(xù)到操作410,在此所有在共享會(huì)話中的參與者的共享頁(yè)面的內(nèi)容被同步化。更多有關(guān)共享頁(yè)面同步化的詳情將針對(duì)圖8-11提供。
從操作410,例行程序400繼續(xù)到判決操作412,在此作出共享會(huì)話是否已結(jié)束的確定。如果共享會(huì)話尚未結(jié)束,例行程序400返回到操作410,在此繼續(xù)同步進(jìn)程。如果會(huì)話已結(jié)束,例行程序400便繼續(xù)到操作414而結(jié)束。應(yīng)該理解不論多少參與者都可以針對(duì)4A和4B所描述的方法加入共享會(huì)話。
現(xiàn)在參照?qǐng)D5A和5B,有關(guān)筆記應(yīng)用24的操作和筆記應(yīng)用24用來(lái)代表頁(yè)面的數(shù)據(jù)結(jié)構(gòu)的更多詳情將被提供。圖5表示了由筆記應(yīng)用24提供的屏幕顯示的說(shuō)明性示例。如在圖5A上表出的示例頁(yè)面所示,該屏幕顯示代表一個(gè)用戶(hù)可以在上面做注記的頁(yè)面40D。特別是,用戶(hù)可以運(yùn)用筆記應(yīng)用24把輪廓對(duì)象60A添加到頁(yè)面40D上去。該輪廓對(duì)象60A可以包括一個(gè)或多個(gè)輪廓元素,諸如文本62A和手寫(xiě)筆跡62B。文本62A可以用鍵盤(pán)輸入,筆跡62B可以運(yùn)用電子筆得出。圖片64也可以插入頁(yè)面40D。應(yīng)該認(rèn)為圖5A中所示的顯示只是示例性的,其它類(lèi)型的數(shù)據(jù)也可添加進(jìn)頁(yè)面40D。
圖5B顯示了由筆記應(yīng)用24維持的用以代表圖5A所示的頁(yè)面40D的內(nèi)容的數(shù)據(jù)結(jié)構(gòu)。特別是,有向非循環(huán)圖(DAG)70A被用來(lái)在內(nèi)部代表頁(yè)面的內(nèi)容。在DAG70A的頂端,節(jié)點(diǎn)72A相應(yīng)于頁(yè)面40D創(chuàng)建。在節(jié)點(diǎn)72A下方,節(jié)點(diǎn)73A相應(yīng)于輪廓元素60A而創(chuàng)建,而節(jié)點(diǎn)80相應(yīng)于圖片64而創(chuàng)建。在節(jié)點(diǎn)73A的下方,節(jié)點(diǎn)74A和74B相應(yīng)于輪廓62A和62B而創(chuàng)建。在節(jié)點(diǎn)74A的下方,節(jié)點(diǎn)76A被創(chuàng)建用以存儲(chǔ)實(shí)際內(nèi)容,在這個(gè)情況中,對(duì)于輪廓62A,文本是”hello”,類(lèi)似的,在節(jié)點(diǎn)74B的下方,節(jié)點(diǎn)78被創(chuàng)建用以存儲(chǔ)在輪廓62B中的手寫(xiě)筆跡。以這種方式,筆記應(yīng)用24能代表具有隨便多少個(gè)數(shù)據(jù)對(duì)象和復(fù)雜程度隨便多高的頁(yè)面。應(yīng)當(dāng)理解DAG70A對(duì)由筆記應(yīng)用24維持的每個(gè)頁(yè)面而被創(chuàng)建。也應(yīng)當(dāng)理解DAG的內(nèi)容對(duì)于同步進(jìn)程并不重要。任何包含于DAG節(jié)點(diǎn)中的數(shù)據(jù)都可以被同步化。用這種方式,特征可以加到筆記應(yīng)用24中去,也可從筆記應(yīng)用24中移走,而不會(huì)影響同步化機(jī)制。如下面將更詳細(xì)描述,對(duì)每個(gè)頁(yè)面DAG的變更可被識(shí)別并當(dāng)做修訂版在共享會(huì)話中傳送給其他參與者。
現(xiàn)在參照?qǐng)D6A和圖6B,有關(guān)捕獲代表共享頁(yè)面的一個(gè)DAG修訂版的過(guò)程的詳情將被描述。圖6A示出一個(gè)包括輪廓對(duì)象60B和包含在輪廓對(duì)象中的文本62C的說(shuō)明性頁(yè)面40E。DAG 70B代表頁(yè)面40E的內(nèi)容。特別是,節(jié)點(diǎn)72B代表頁(yè)面對(duì)象,節(jié)點(diǎn)73B代表輪廓對(duì)象60B,節(jié)點(diǎn)76B代表文本62C。當(dāng)一個(gè)新的共享會(huì)話開(kāi)始時(shí),DAG的任何內(nèi)容均未傳送給其他參與者。因此,整個(gè)DAG被認(rèn)為是一個(gè)必須被傳送給其它參與者的修訂版80A。一旦其他參與者接收到DAG 70B,只有對(duì)DAG 70B做出的更改在參與者間交換。這一過(guò)程在圖6B中示出。
圖6B顯示出上述針對(duì)圖6A所描述的頁(yè)面40E,附加添加的文本62D。文本”BAR”已被用戶(hù)加到頁(yè)面40E中。結(jié)果,DAG70B已被更新而包括新的節(jié)點(diǎn)76C代表新的文本。為了把DAG 70B中的更改傳播給其他在共享會(huì)話中的參與者,一個(gè)新的修訂版80B被取作數(shù)據(jù)結(jié)構(gòu)。
新的修訂版80B只包含自最近的修訂版被取得后的由用戶(hù)更改的DAG的那部分。因此,新的修訂版80B只包含包括了新添加的文本的節(jié)點(diǎn)76C。如將在下面詳加描述的那樣,一旦被捕獲,修訂版76C可被串行化成字節(jié)流被傳播給其他參與者。當(dāng)修訂版76C被其他參與者接收時(shí),它的內(nèi)容被加到本地存儲(chǔ)的DAG70B的副本中,以在每個(gè)參與計(jì)算機(jī)系統(tǒng)處反映由用戶(hù)作出的更改。然后DAG70B被用來(lái)在每個(gè)計(jì)算機(jī)系統(tǒng)上呈現(xiàn)頁(yè)面,由此來(lái)反映更改,但參與者須具有所要求的相關(guān)修訂版。如果相關(guān)的修訂版不存在,它們必須被請(qǐng)求。因?yàn)槌尸F(xiàn)是遞增的,所以是有效而迅速的。有關(guān)修訂版的傳送、同步化和合并的更多詳情將在下面提供。
現(xiàn)在參照?qǐng)D7,有關(guān)用來(lái)在共享會(huì)話中的各個(gè)參與者中傳送和應(yīng)用修訂版的機(jī)制更多詳情將被提供。圖7說(shuō)明了參與共享會(huì)話的計(jì)算機(jī)系統(tǒng)2A和計(jì)算機(jī)系統(tǒng)2B。如上所述,計(jì)算機(jī)系統(tǒng)2A和2B均維持共享頁(yè)面40F和40G的副本。另外,計(jì)算機(jī)系統(tǒng)2A和2B每一個(gè)也均維持鏈接到共享頁(yè)面的頁(yè)面同步對(duì)象。計(jì)算機(jī)系統(tǒng)2A維持分別鏈接到頁(yè)面40F和40G對(duì)應(yīng)的頁(yè)面同步對(duì)象42F和42G。計(jì)算機(jī)系統(tǒng)2B維持分別鏈接到頁(yè)面40F和40G的頁(yè)面同步對(duì)象42H和42J。
為了簡(jiǎn)化共享會(huì)話中參與者之間的通信,對(duì)等網(wǎng)絡(luò)被劃分成許多通道。每個(gè)在參與者之間交換的信息被指定一個(gè)通道標(biāo)識(shí)號(hào),并且用以識(shí)別通道號(hào)的數(shù)據(jù)也隨消息一起傳送。每個(gè)頁(yè)面同步對(duì)象在自己的通道上“收聽(tīng)”信息。例如,如圖7所示,頁(yè)面同步對(duì)象42F和42H通過(guò)在第一條通信通道上傳遞一通道信息90A進(jìn)行通信。同樣地,頁(yè)面同步對(duì)象42G和42J通過(guò)在第二條通信通道上傳遞一通道消息90B進(jìn)行通信。其他頁(yè)面同步對(duì)象可以在其他通道上以相似的方式通信。
當(dāng)一個(gè)新參與者加入現(xiàn)存的共享會(huì)話時(shí),一條消息被傳送給使會(huì)話開(kāi)始的計(jì)算機(jī)系統(tǒng)。作為對(duì)接收該消息的響應(yīng),主機(jī)以上述描述的方式把當(dāng)前的修訂版?zhèn)魉徒o新的參與者。每個(gè)頁(yè)面都在一條新的通道上傳送。當(dāng)一個(gè)參與者在通道上接收到一條消息時(shí),就對(duì)此通道創(chuàng)建一個(gè)新的頁(yè)面同步對(duì)象。參與者還創(chuàng)建一個(gè)新的頁(yè)面并且把新的頁(yè)面鏈接到新的同步對(duì)象。當(dāng)當(dāng)前的修訂版第一次被傳送時(shí),和其它修訂版并無(wú)關(guān)聯(lián),所以接收到的修訂版可以被用來(lái)代替新創(chuàng)建的頁(yè)面。以這種方式,新的頁(yè)面和新的頁(yè)面同步對(duì)象在每個(gè)參與會(huì)話的計(jì)算機(jī)系統(tǒng)上以一種自動(dòng)的方式被創(chuàng)建。
也應(yīng)該理解,因?yàn)轫?yè)面消息是基于按通道為基礎(chǔ)傳送,用戶(hù)可同時(shí)編輯不同的頁(yè)面而不導(dǎo)致在編輯和修訂版中發(fā)生沖突的可能。然而,如果多個(gè)用戶(hù)同時(shí)編輯相同的頁(yè)面,包含每個(gè)用戶(hù)編輯的修訂版都會(huì)同時(shí)被取出并放在網(wǎng)絡(luò)上的可能性就會(huì)出現(xiàn)。這種可能導(dǎo)致另外一種可能即在網(wǎng)絡(luò)上出現(xiàn)的狀態(tài)不一致。為了避免這種可能性,本發(fā)明的各種具體實(shí)施方式
運(yùn)用在參與者中傳遞的同步令牌。該同步令牌是一種可以批準(zhǔn)擁有令牌者產(chǎn)生DAG數(shù)據(jù)結(jié)構(gòu)的下一個(gè)修訂版的數(shù)據(jù)結(jié)構(gòu)。當(dāng)且僅當(dāng)一個(gè)參與者擁有了同步令牌,才可以被批準(zhǔn)對(duì)數(shù)據(jù)結(jié)構(gòu)申報(bào)修訂。應(yīng)該理解要作出的本地性修改并不需要擁有同步令牌。運(yùn)用同步令牌的過(guò)程將針對(duì)圖8在下面描述。
現(xiàn)在參照?qǐng)D8,一個(gè)說(shuō)明對(duì)共享數(shù)據(jù)結(jié)構(gòu)指定一個(gè)新修訂版的過(guò)程的說(shuō)明性狀態(tài)機(jī)將被描述。狀態(tài)機(jī)開(kāi)始于狀態(tài)802,在此判定對(duì)于數(shù)據(jù)結(jié)構(gòu)是否已做出本地更改。如果尚未做出任何更改,就沒(méi)有必要申報(bào)新的修訂版。因此,如果尚未做出任何更改,狀態(tài)回到狀態(tài)802。如果有更改被做出,狀態(tài)機(jī)過(guò)渡到狀態(tài)803。在狀態(tài)803,在創(chuàng)建一個(gè)修訂版前要花費(fèi)一段預(yù)定的時(shí)間進(jìn)行等待。這確保修訂版不致過(guò)于頻繁地取出。
從狀態(tài)803,狀態(tài)機(jī)過(guò)渡到狀態(tài)808。在狀態(tài)808,判斷是否做出編輯的計(jì)算機(jī)系統(tǒng)是當(dāng)前同步令牌的擁有者。如果該計(jì)算機(jī)系統(tǒng)是當(dāng)前的擁有者,狀態(tài)機(jī)過(guò)渡到狀態(tài)804。如果該計(jì)算機(jī)系統(tǒng)不是當(dāng)前的擁有者,狀態(tài)機(jī)過(guò)渡到狀態(tài)810,在此索要令牌的請(qǐng)求被傳送給令牌的當(dāng)前擁有者。狀態(tài)機(jī)然后過(guò)渡到狀態(tài)812。
在狀態(tài)812,判斷是否同步令牌已被接收。如果令牌已被接收,狀態(tài)機(jī)過(guò)渡到狀態(tài)804。如果令牌尚未被接收到,狀態(tài)機(jī)過(guò)渡到狀態(tài)814。在狀態(tài)814,一直在等待接收同步令牌的計(jì)算機(jī)系統(tǒng)的時(shí)間被增加。如以下將要詳述的那樣,等待時(shí)間與請(qǐng)求同步令牌的時(shí)間包括在一起。當(dāng)決定同步令牌應(yīng)該發(fā)送到哪個(gè)計(jì)算機(jī)系統(tǒng)時(shí),該數(shù)據(jù)被一個(gè)參與者利用。特別的,等待同步令牌時(shí)間最長(zhǎng)的計(jì)算機(jī)系統(tǒng)被給予同步令牌。有關(guān)這個(gè)過(guò)程的更多詳情將在下面描述。
從狀態(tài)814,狀態(tài)機(jī)過(guò)渡到狀態(tài)816。在狀態(tài)816,判定是否在預(yù)定時(shí)間用完時(shí)還沒(méi)有得到任何關(guān)于同步令牌請(qǐng)求的回應(yīng)。如果一段延長(zhǎng)的時(shí)間周期已用完,這就可說(shuō)明令牌已經(jīng)丟失,例如令牌擁有者正從網(wǎng)絡(luò)4斷開(kāi)連接。因此,如果該時(shí)間周期已過(guò)去,狀態(tài)機(jī)過(guò)渡到狀態(tài)818,在此運(yùn)用當(dāng)前的修訂版/狀態(tài)作為基礎(chǔ)而創(chuàng)建一個(gè)新的令牌。如果該時(shí)間周期沒(méi)有過(guò)去,狀態(tài)返回狀態(tài)810,在此另外一個(gè)索要同步令牌的請(qǐng)求和更新過(guò)的等待時(shí)間被一起傳送。令牌擁有者也可以選擇拒絕請(qǐng)求,在這種情況下將接受到一個(gè)拒絕消息。請(qǐng)求者就要等待一段時(shí)間,然后再次請(qǐng)求,也就是轉(zhuǎn)回到狀態(tài)810。
從狀態(tài)818,狀態(tài)過(guò)渡到狀態(tài)804,在此判定DAG的當(dāng)前狀態(tài)是否趕上了所有其他的由其他參與者所做的修訂版。如果該圖表不是當(dāng)前最新的,狀態(tài)過(guò)渡到狀態(tài)806,在這里使數(shù)據(jù)結(jié)構(gòu)當(dāng)前化所必需的修訂版被請(qǐng)求,并從其他參與者那里被接收。一旦必需的修訂版已被接收,狀態(tài)機(jī)從狀態(tài)806返回到狀態(tài)804。
如果在狀態(tài)804,確定數(shù)據(jù)結(jié)構(gòu)是當(dāng)前的,狀態(tài)機(jī)轉(zhuǎn)移到狀態(tài)822,在此修訂版以上述方法被取出,并且被串行化以便通過(guò)網(wǎng)絡(luò)4傳送。然后狀態(tài)過(guò)渡到狀態(tài)826,其中一個(gè)以ID形式的參照被放入令牌。然后狀態(tài)過(guò)渡到狀態(tài)828,在此令牌和修訂版被推送給所有在共享會(huì)話中的參與者。如果用戶(hù)并未像下面所描述的那樣被限制,那么狀態(tài)就從狀態(tài)828返回到狀態(tài)802。根據(jù)本發(fā)明的具體實(shí)施方式
,存在限制機(jī)制,以使只有當(dāng)參與者已經(jīng)完成對(duì)其他所接收到的最近的修訂版的處理時(shí)修訂版才推向該參與人。當(dāng)參與者完成對(duì)其最近的修訂版的處理,最新的修訂版就隨之被發(fā)送。如果參與者不能和修訂的流程同步,那么某些修訂版將被漏過(guò)。這相當(dāng)于降低對(duì)于參與者的“幀速率”。有關(guān)把接收到的修訂版合并入數(shù)據(jù)結(jié)構(gòu)、檢測(cè)和校正多個(gè)令牌的存在、以一種公平的方式接收和響應(yīng)索要令牌的請(qǐng)求的細(xì)節(jié)將針對(duì)圖9-11在下面詳細(xì)描述。
現(xiàn)在轉(zhuǎn)到圖9,一個(gè)說(shuō)明性的狀態(tài)機(jī)900將被描述以說(shuō)明接收包含一個(gè)修訂版的令牌的過(guò)程。狀態(tài)機(jī)900開(kāi)始于狀態(tài)902,在此一份同步令牌通知被接收。令牌擁有者頻繁地傳播他們是令牌的擁有者的標(biāo)示。如果這樣的標(biāo)示被收到,狀態(tài)機(jī)900就會(huì)隨之繼續(xù)到操作904,在此確定在共享會(huì)話的參與者中是否存在兩個(gè)同步令牌。這個(gè)確定是用確定接收到該通知的參與者是否已經(jīng)擁有了令牌而作出的。如果是,那么就存在兩個(gè)令牌。如果不存在兩個(gè)令牌,狀態(tài)過(guò)渡到狀態(tài)912。如果確有兩個(gè)令牌存在,狀態(tài)便過(guò)渡到狀態(tài)906。
在狀態(tài)906,一場(chǎng)用來(lái)決定兩個(gè)令牌中哪個(gè)應(yīng)被運(yùn)用哪個(gè)應(yīng)被廢除的“競(jìng)爭(zhēng)”被執(zhí)行。該競(jìng)爭(zhēng)包含一個(gè)在兩個(gè)擁有同步令牌的計(jì)算機(jī)上都執(zhí)行的確定性算法。例如,該算法可以簡(jiǎn)單的比較指定給每個(gè)對(duì)等者的獨(dú)特的整數(shù)標(biāo)識(shí)號(hào)來(lái)決定哪個(gè)較大。有標(biāo)識(shí)號(hào)較大的對(duì)等者贏得競(jìng)爭(zhēng),而有標(biāo)識(shí)號(hào)較小的對(duì)等者則輸?shù)舾?jìng)爭(zhēng)。應(yīng)當(dāng)認(rèn)為其他類(lèi)型的確定性算法也可以運(yùn)用。
如果在狀態(tài)906,該計(jì)算機(jī)系統(tǒng)被判定已贏得競(jìng)爭(zhēng),狀態(tài)過(guò)渡到狀態(tài)908,在此一個(gè)指令對(duì)等者刪除其令牌的指令被傳送給其他擁有令牌的對(duì)等者體。狀態(tài)隨之轉(zhuǎn)移到狀態(tài)912,并在此結(jié)束。以這種方式,令牌的合法擁有者能以正常的方式繼續(xù)其進(jìn)程。
如在狀態(tài)906,該計(jì)算機(jī)系統(tǒng)已輸?shù)暨@一競(jìng)爭(zhēng),狀態(tài)過(guò)渡到狀態(tài)910,在此收到的令牌被刪除,狀態(tài)隨之過(guò)渡到狀態(tài)912,在此令牌擁有者以及最近修訂版的ID被記錄以便將來(lái)引用。這個(gè)信息以后被用來(lái)得知從誰(shuí)那里請(qǐng)求令牌。從狀態(tài)912,狀態(tài)機(jī)900過(guò)渡到狀態(tài)916并在此結(jié)束。應(yīng)該理解在圖8、9、10和12中所示的過(guò)程是被獨(dú)立地運(yùn)行,并且可能被并行運(yùn)行。
現(xiàn)在轉(zhuǎn)到圖10,以一種公平的方式接收和響應(yīng)索要同步令牌請(qǐng)求的說(shuō)明性狀態(tài)機(jī)1000將被描述。狀態(tài)機(jī)1000開(kāi)始于狀態(tài)1002,在此索要同步令牌的請(qǐng)求被接收。狀態(tài)機(jī)從狀態(tài)1002過(guò)渡到狀態(tài)1004,在此,在繼續(xù)之前要過(guò)一段預(yù)定的一個(gè)時(shí)間段。然后狀態(tài)過(guò)渡到狀態(tài)1006,在此確定同步令牌是否已經(jīng)被轉(zhuǎn)發(fā)給另外一對(duì)等者。如果同步令牌沒(méi)有被轉(zhuǎn)發(fā),狀態(tài)機(jī)1000過(guò)渡到狀態(tài)1008。
在狀態(tài)1008,如果接收到一個(gè)以上索要令牌的請(qǐng)求,作出確定哪個(gè)等令牌的請(qǐng)求時(shí)間最長(zhǎng)。狀態(tài)機(jī)1000隨后過(guò)渡到狀態(tài)1010,在此令牌被傳送到發(fā)送索要同步令牌請(qǐng)求后等待時(shí)間最長(zhǎng)的計(jì)算機(jī)系統(tǒng)。用這種方式,等令牌時(shí)間最長(zhǎng)的對(duì)等者將接收令牌。從狀態(tài)1010,狀態(tài)機(jī)1000過(guò)渡到1012并在此結(jié)束。
如果在狀態(tài)1006確定令牌已經(jīng)被發(fā)送給另一個(gè)對(duì)等者,狀態(tài)機(jī)過(guò)渡到狀態(tài)1014。在狀態(tài)1014,在索要同步令牌的請(qǐng)求中建立的“生存次數(shù)”值減1。生存次數(shù)值指在其過(guò)期之前,應(yīng)該給新的同步令牌擁有者轉(zhuǎn)發(fā)請(qǐng)求的次數(shù)。狀態(tài)機(jī)然后被過(guò)渡到狀態(tài)1016,在此判定是否請(qǐng)求已經(jīng)過(guò)期。如果請(qǐng)求已經(jīng)過(guò)期,狀態(tài)機(jī)從狀態(tài)1016過(guò)渡到狀態(tài)1012并在此結(jié)束。如果請(qǐng)求沒(méi)有過(guò)期,根據(jù)生存次數(shù)值,狀態(tài)過(guò)渡到狀態(tài)1018,在此請(qǐng)求(包括減少的生存次數(shù)值)被轉(zhuǎn)發(fā)給新的同步令牌擁有者。通過(guò)這種式,一個(gè)對(duì)于同步令牌晚到的請(qǐng)求也可以被注入到高速網(wǎng)絡(luò)中。從狀態(tài)1018,狀態(tài)過(guò)渡到狀態(tài)1012并在此結(jié)束。
現(xiàn)在轉(zhuǎn)到圖11,說(shuō)明性狀態(tài)機(jī)1100將被描述以顯示本發(fā)明對(duì)于給每個(gè)在合作會(huì)話中的對(duì)每個(gè)用戶(hù)分派單獨(dú)的撤消堆棧的特性。狀態(tài)機(jī)1100從狀態(tài)1102開(kāi)始,在此一個(gè)對(duì)于每個(gè)頁(yè)面的撤消堆棧在每個(gè)參與共享會(huì)話的計(jì)算機(jī)系統(tǒng)上被維持。該撤消堆棧跟蹤對(duì)DAG所作的更改,以致這些更改可在以后按照客戶(hù)的請(qǐng)求而“撤消”。
從狀態(tài)1102,狀態(tài)機(jī)1100過(guò)渡到狀態(tài)1104,在此確定是否已收到一個(gè)撤消請(qǐng)求。如果任何撤消請(qǐng)求均未收到,狀態(tài)機(jī)1100返回到狀態(tài)1102。如果收到撤消請(qǐng)求,狀態(tài)過(guò)渡到狀態(tài)1106,在此,對(duì)于DAG執(zhí)行反向合并以確定應(yīng)該被撤消的編輯。然后狀態(tài)過(guò)渡到狀態(tài)1108,在此創(chuàng)建一個(gè)包括撤消編輯的新的修訂版。狀態(tài)機(jī)隨后過(guò)渡到狀態(tài)1110,在此該新的修訂版被傳播給共享會(huì)話中的其他參與者。以這種方式,每個(gè)由任何個(gè)人用戶(hù)在任何單獨(dú)頁(yè)面所做的編輯可以被容易地撤消。從狀態(tài)1110,狀態(tài)機(jī)1100過(guò)渡到狀態(tài)1102并在此結(jié)束。
現(xiàn)在參照?qǐng)D12,描述一個(gè)合并對(duì)圖片的修訂的說(shuō)明性狀態(tài)機(jī)1200。狀態(tài)從狀態(tài)1202開(kāi)始,在此從網(wǎng)絡(luò)中接收修訂版。如果修訂版是對(duì)于DAG的最近版本(也就是如果舊的修訂版被接收,他們不被用到DAG中),狀態(tài)隨后過(guò)渡到狀態(tài)1204,在此確定是否存在本地更改。如果沒(méi)有做本地更改,狀態(tài)過(guò)渡到狀態(tài)1212,在此接收到的修訂版被直接用到圖片上。狀態(tài)隨后過(guò)渡到狀態(tài)1210并在此返回。
在狀態(tài)1204,如果確定局限變更已經(jīng)作出,狀態(tài)過(guò)渡到狀態(tài)1206。在狀態(tài)1206,確定是否有同步令牌可供使用。如果令牌供使用,狀態(tài)過(guò)渡到狀態(tài)1210并在此返回。用這種方式,如果收到新的修訂版并且已對(duì)文檔做出更改,在狀態(tài)1208,3路合并被執(zhí)行并將本地更改加到剛收到的修訂版上。任何本地更改都在上述結(jié)合圖8概括描述的過(guò)程中傳送給其他參與者。
如果在狀態(tài)1206,確定出沒(méi)有令牌可供使用,狀態(tài)過(guò)渡到狀態(tài)1208,在此執(zhí)行了路合并。3路合并的輸入為作為從網(wǎng)絡(luò)中接收到的最近的修訂版的基線,來(lái)自網(wǎng)絡(luò)的更新(從修訂版中導(dǎo)出)以及本地更改。通過(guò)對(duì)圖片的當(dāng)前狀態(tài),本地編輯和接收到的修訂版執(zhí)行了路合并,一份圖片的最近修訂版即可計(jì)算,而依舊維持本地編輯為修訂版,以便將來(lái)有令牌提供時(shí),傳送給其他參與者。從狀態(tài)1208,狀態(tài)過(guò)渡到狀態(tài)1210并在此結(jié)束。
根據(jù)以上所述,應(yīng)該認(rèn)為本發(fā)明的各種具體實(shí)施方式
包括電子文檔近實(shí)時(shí)合作的一種方法、系統(tǒng)、設(shè)配和計(jì)算機(jī)可讀介質(zhì)。以上的詳細(xì)說(shuō)明、示例和數(shù)據(jù)提供了一份有關(guān)完成制造和運(yùn)用本發(fā)明的組成的完整描述。由于本發(fā)明的許多實(shí)施例可在不偏離本發(fā)明精神和范圍的情況下完成,本發(fā)明歸屬于下文附加的權(quán)利要求中。
權(quán)利要求
1.一種通過(guò)多個(gè)計(jì)算機(jī)系統(tǒng)能對(duì)電子文檔作近實(shí)時(shí)合作的方法,該方法包括維持代表整個(gè)電子文檔內(nèi)容的數(shù)據(jù)結(jié)構(gòu);在多個(gè)計(jì)算機(jī)系統(tǒng)的第一個(gè)計(jì)算機(jī)系統(tǒng)上接收用戶(hù)輸入,上述用戶(hù)輸入包含對(duì)于數(shù)據(jù)結(jié)構(gòu)的修改;響應(yīng)于對(duì)數(shù)據(jù)結(jié)構(gòu)的修改,創(chuàng)建只標(biāo)識(shí)對(duì)數(shù)據(jù)結(jié)構(gòu)所作修改的修訂版;和把修訂版發(fā)送給除了在其上做出該輸入之外的每個(gè)計(jì)算機(jī)系統(tǒng)。
2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括在多個(gè)計(jì)算機(jī)系統(tǒng)中的第二個(gè)上接收所述修訂版;把修訂版合并為維持在多個(gè)計(jì)算機(jī)系統(tǒng)中的第二個(gè)計(jì)算機(jī)系統(tǒng)上的數(shù)據(jù)結(jié)構(gòu)版本;在多個(gè)計(jì)算機(jī)系統(tǒng)中的第二個(gè)計(jì)算機(jī)系統(tǒng)上顯示數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。
3.根據(jù)權(quán)利要求2所述的方法,進(jìn)一步包括先于發(fā)送修訂版本在第一個(gè)計(jì)算機(jī)系統(tǒng)上確定數(shù)據(jù)結(jié)構(gòu)是否是當(dāng)前的;和如果數(shù)據(jù)結(jié)構(gòu)不是當(dāng)前的,提取并合并成必需的修訂版以使數(shù)據(jù)結(jié)構(gòu)當(dāng)前化。
4.根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括先于發(fā)送修訂版在第一個(gè)計(jì)算機(jī)系統(tǒng)上確定是否該第一個(gè)計(jì)算機(jī)系統(tǒng)是同步令牌的擁有者;響應(yīng)于第一個(gè)計(jì)算機(jī)系統(tǒng)不是同步令牌擁有者的確定,向同步令牌擁有者請(qǐng)求同步令牌;和響應(yīng)于第一個(gè)計(jì)算機(jī)系統(tǒng)是同步令牌擁有者的確定,將修訂版?zhèn)魉徒o在其上做出該輸入的計(jì)算機(jī)系統(tǒng)之外的多個(gè)計(jì)算機(jī)系統(tǒng)的每一個(gè)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于從同步令牌擁有者請(qǐng)求同步令牌包括產(chǎn)生一個(gè)索要同步令牌的請(qǐng)求,所述請(qǐng)求包括表明第一個(gè)計(jì)算機(jī)系統(tǒng)已經(jīng)等待同步令牌的持續(xù)時(shí)間的數(shù)據(jù);將請(qǐng)求發(fā)送給擁有同步令牌的計(jì)算機(jī)系統(tǒng);確定同步令牌是否已被接收到;響應(yīng)于同步令牌尚未被接收到的確定,產(chǎn)生一個(gè)新的索要同步令牌的請(qǐng)求,所述新的請(qǐng)求包括表明第一個(gè)計(jì)算機(jī)系統(tǒng)已經(jīng)等待同步令牌的延長(zhǎng)的持續(xù)時(shí)間的數(shù)據(jù);和將新的請(qǐng)求發(fā)送給擁有同步令牌的計(jì)算機(jī)系統(tǒng)。
6.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包含接收同步令牌;確定是否存在兩個(gè)同步令牌;和響應(yīng)于存在兩個(gè)同步令牌的確定,執(zhí)行一計(jì)算以確定兩個(gè)令牌中哪個(gè)令牌應(yīng)該被刪除。
7.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包含接收一個(gè)索要同步令牌的請(qǐng)求;響應(yīng)于該請(qǐng)求,確定同步令牌先前是否已經(jīng)被發(fā)送給多個(gè)計(jì)算機(jī)系統(tǒng)中的一個(gè);如果同步令牌先前尚未被發(fā)送過(guò),識(shí)別等待同步令牌經(jīng)過(guò)的時(shí)間最長(zhǎng)的對(duì)同步令牌的請(qǐng)求;和將同步令牌發(fā)送給發(fā)出索要同步令牌請(qǐng)求后等待時(shí)間經(jīng)過(guò)最長(zhǎng)的計(jì)算機(jī)系統(tǒng)。
8.根據(jù)權(quán)利要求7所述的方法,進(jìn)一步包含如果同步令牌先前已被發(fā)送了,將索要同步令牌請(qǐng)求中的生存值減一次,判定生存值次數(shù)是否大于0,和如果生存值次數(shù)大于0,將請(qǐng)求轉(zhuǎn)發(fā)給同步令牌的當(dāng)前擁有者。
9.根據(jù)權(quán)利要求8所述的方法,其中的數(shù)據(jù)結(jié)構(gòu)包含一個(gè)有向非循環(huán)圖。
10.一個(gè)有計(jì)算機(jī)可執(zhí)行指令存儲(chǔ)在其中的計(jì)算機(jī)可讀介質(zhì),當(dāng)上述指令被計(jì)算機(jī)執(zhí)行時(shí),會(huì)導(dǎo)致計(jì)算機(jī)執(zhí)行權(quán)利要求1所述的方法。
11.一個(gè)能執(zhí)行權(quán)利要求1所述的方法的計(jì)算機(jī)控制設(shè)備。
12.一種通過(guò)多個(gè)計(jì)算機(jī)系統(tǒng)能對(duì)于電子文檔的一個(gè)頁(yè)面進(jìn)行近實(shí)時(shí)合作的方法,上述方法包含在每個(gè)計(jì)算機(jī)系統(tǒng)上維持一圖表,該連接的圖表標(biāo)識(shí)了電子文檔頁(yè)面的內(nèi)容;在多個(gè)計(jì)算機(jī)系統(tǒng)中第一個(gè)計(jì)算機(jī)系統(tǒng)接收對(duì)于頁(yè)面的更改,對(duì)于頁(yè)面的更改導(dǎo)致相應(yīng)的圖表的更改;產(chǎn)生圖表的修訂版以響應(yīng)所述更改,所述修訂版包含只識(shí)別對(duì)圖表進(jìn)行了更改的數(shù)據(jù);把米自多個(gè)計(jì)算機(jī)系統(tǒng)中的第一個(gè)的修訂版發(fā)送給其他每個(gè)計(jì)算機(jī)系統(tǒng);和把修訂版合并入維持在其他每個(gè)計(jì)算機(jī)系統(tǒng)上的圖表中。
13.根據(jù)權(quán)利要求12所述方法,進(jìn)一步包含先于發(fā)送修訂版確定是否多個(gè)計(jì)算機(jī)系統(tǒng)中的第一個(gè)是同步令牌的擁有者;和僅當(dāng)?shù)谝粋€(gè)計(jì)算機(jī)系統(tǒng)是同步令牌的擁有者時(shí)傳送修訂版。
14.根據(jù)權(quán)利要求13所述方法,進(jìn)一步包含在第一個(gè)計(jì)算機(jī)系統(tǒng)上接收一個(gè)或多個(gè)來(lái)自其他計(jì)算機(jī)的索要同步令牌的請(qǐng)求,每個(gè)請(qǐng)求指明了發(fā)出請(qǐng)求的計(jì)算機(jī)為接收同步令牌已等待的時(shí)間量;響應(yīng)于接收到一個(gè)或多個(gè)索要同步令牌的請(qǐng)求,確定在請(qǐng)求中已等待同步令牌時(shí)間最長(zhǎng)的計(jì)算機(jī);把同步令牌發(fā)送給該等待時(shí)間最長(zhǎng)的計(jì)算機(jī)。
15.根據(jù)權(quán)利要求14所述方法,進(jìn)一步包括響應(yīng)于接收一個(gè)或多個(gè)索要同步令牌的請(qǐng)求確定同步令牌先前是否已經(jīng)被轉(zhuǎn)發(fā);和響應(yīng)于確定同步令牌先前已經(jīng)被轉(zhuǎn)發(fā),在每個(gè)接收到的索要同步令牌的請(qǐng)求中將生存值減少一次,并把請(qǐng)求轉(zhuǎn)發(fā)給同步令牌的當(dāng)前擁有者。
16.根據(jù)權(quán)利要求15所述方法,進(jìn)一步包括確定是否有兩個(gè)同步令牌存在;和響應(yīng)于確定有兩個(gè)同步令牌存在,在每個(gè)擁有同步令牌的計(jì)算機(jī)系統(tǒng)上執(zhí)行一個(gè)識(shí)別算法以確定兩個(gè)同步令牌的哪個(gè)同步令牌應(yīng)該被刪除。
17.根據(jù)權(quán)利要求16所述方法,進(jìn)一步包括在多個(gè)計(jì)算機(jī)系統(tǒng)中的每一個(gè)上執(zhí)行一頁(yè)面同步對(duì)象,所述同步對(duì)象可操作用于在通信通道上收聽(tīng)對(duì)頁(yè)面的修訂版,接收對(duì)頁(yè)面的修訂版,并在修訂版已收到時(shí)修改圖表。
18.根據(jù)權(quán)利要求17所述方法,其中電子文檔包含多個(gè)頁(yè)面,且其中對(duì)于每個(gè)頁(yè)面均創(chuàng)建一同步對(duì)象。
19.一個(gè)有計(jì)算機(jī)可執(zhí)行指令存儲(chǔ)在其中的計(jì)算機(jī)可讀介質(zhì),當(dāng)上述指令被計(jì)算機(jī)執(zhí)行時(shí),會(huì)導(dǎo)致計(jì)算機(jī)執(zhí)行權(quán)利要求21所述的方法。
20.一個(gè)能執(zhí)行權(quán)利要求12所述方法的計(jì)算機(jī)控制設(shè)備。
全文摘要
提供了一種對(duì)電子文檔合作的方法、系統(tǒng)和裝置。根據(jù)該方法,一種用來(lái)代表共享文件內(nèi)容的數(shù)據(jù)結(jié)構(gòu)在每個(gè)參與合作會(huì)話的計(jì)算機(jī)系統(tǒng)上被維持。當(dāng)用戶(hù)的輸入被其中一個(gè)計(jì)算機(jī)系統(tǒng)接收用來(lái)修改該文檔時(shí),數(shù)據(jù)結(jié)構(gòu)被更新,以此來(lái)反映修改。響應(yīng)于該修改,對(duì)于數(shù)據(jù)結(jié)構(gòu)的改變被周期性地識(shí)別和收集成為一個(gè)修訂版,用來(lái)標(biāo)識(shí)自先前修訂版產(chǎn)生以來(lái),僅對(duì)數(shù)據(jù)結(jié)構(gòu)的改變被當(dāng)做編輯所作的結(jié)果。修訂版被打包和發(fā)送給在每個(gè)共享會(huì)話中的參與者。修訂版被合并到存儲(chǔ)在參與會(huì)話的計(jì)算機(jī)系統(tǒng)上的數(shù)據(jù)結(jié)構(gòu)的副本中。
文檔編號(hào)G06F17/30GK1738254SQ20051006683
公開(kāi)日2006年2月22日 申請(qǐng)日期2005年4月20日 優(yōu)先權(quán)日2004年8月18日
發(fā)明者S·P·克拉克 申請(qǐng)人:微軟公司