專利名稱:交叉信道共同寫作一致性的制作方法
交叉信道共同寫作一致性
背景技術:
基于網絡的文檔協作系統準許多個用戶同時地訪問和共同寫作文檔。盡管準許多個用戶共同寫作文檔,但為了防止沖突,系統可以限制文檔中每一用戶可以進行編輯的區域。如果不將與這些限制相關聯的信息傳遞給其他共同寫作的用戶,則在合并各文檔的副本時增加了有沖突改變的機會。
發明內容
本發明內容的各實施方式涉及計算設備,該計算設備包括處理單元和帶有指令的系統存儲器,指令在由處理單元執行時,使處理單元創建處理文檔內容的創建和編輯的文檔處理模塊;以及生成、監視和存儲計算設備上的文檔的元數據的元數據處理模塊,該元數據處理模塊生成包括關于在用戶開始編輯文檔的一部分時創建的新的鎖的信息的鎖創建元數據、包括關于移除鎖的信息的鎖移除元數據,以及包括關于刪除鎖的信息的鎖刪除元數據,該元數據處理模塊將鎖創建元數據寫到數據信道和分離的元數據信道兩者,數據信道是在計算設備和服務器計算機之間的第一通信路徑,沿著該第一通信路徑傳遞與文檔相關聯的內容和鎖元數據,而元數據信道是在計算設備和服務器計算機之間的第二通信路徑,沿著第二通信路徑傳遞與文檔相關聯的鎖元數據,元數據處理模塊將鎖移除元數據寫到數據信道并且元數據處理模塊將鎖刪除元數據寫到元數據信道。在下面的附圖和描述中闡明一種或多種技術的細節。通過描述、附圖和權利要求, 這些技術的其他特征、目的和優點將變得顯而易見。
圖1示出用于交叉信道共同寫作一致性的示例系統。圖2示出實現用于交叉信道共同寫作一致性的能力的圖1的示例客戶端計算機的示例模塊。圖3示出用于在客戶端計算機處將元數據應用到文檔的方法的流程圖的第一部分。圖4示出用于在客戶端計算機處將元數據應用到文檔的方法的流程圖的第二部分。圖5示出用于在客戶端計算機處將元數據應用到文檔的方法的流程圖的第三部分。圖6示出圖2的客戶端計算機的示例組件。
具體實施例方式本申請涉及用于在基于網絡的文檔協作系統中合并文檔數據時提供信息的交叉信道一致性的系統和方法。在所公開的系統和方法中,在元數據信道上傳送例如文檔的區域的鎖的元數據,而在數據信道上傳送文檔內容和元數據兩者。系統和方法公開指定何時應將元數據適當地應用到文檔的優先化準則。 圖1示出在將元數據應用到文檔時支持交叉信道一致性的示例系統100。系統100 包括客戶機102,104、服務器106和網絡108。可以使用更多或更少的客戶機和服務器。在本發明中,術語客戶機和客戶端計算機可交換地使用,且術語服務器和服務器計算機可交換地使用。在存儲在客戶機102、104上的多個信息當中有客戶機操作系統(“OS”)和客戶機應用。客戶機OS是管理客戶機系統的硬件和軟件資源的程序。客戶機應用利用客戶機 102、104的資源來直接執行用戶指定的任務。例如,客戶機102、104包括用于創建和編輯文檔文件的一個或多個軟件應用,諸如文字處理程序。這樣的應用的一個示例是來自華盛頓州雷蒙德市微軟公司的Microsoft Word。這樣的應用的其他示例也是適用的。服務器106是通過網絡可訪問的文件服務器。服務器106存儲多個文件。這些文件可以包括軟件應用和文檔兩者,如在此進一步描述。服務器106控制對由服務器106存儲的各文檔的訪問。在各示例實施方式中,服務器106可以位于組織內或者可以是文檔協作系統的一部分。示例文檔協作系統是由微軟公司提供的SHAREPOINT 團隊服務和SHAREP0INT⑧門戶服務器服務(SHAREPOINT team services portal server services)。示例共享文檔服務器是由微軟公司提供的Microsoft Office SharePoint Server 2007。可以使用其他配置。元數據是關于數據的信息。典型的元數據的一些示例是文檔名稱、創建日期或最后編輯日期、當前編輯文檔的作者、當前審閱文檔的作者、段落標識符和段落鎖。其他種類的文檔元數據是可能的。在發明中,元數據包括鎖,該鎖被應用到文檔的各區域以防止多個共同寫作用戶同時地編輯文檔的相同區域。文檔區域通常是段落,但是它可以包括段落標題、表、句子等等。元數據包括創建鎖的元數據、移除鎖的元數據和刪除鎖的元數據。在各示例實施方式中,通過元數據信道111傳送元數據。在各示例實施方式中,為了提供交叉信道一致性,也在數據信道113上傳送元數據。數據信道113還被用來將文檔內容信息發送到服務器計算機106以及從服務器計算機106發送文檔內容信息。創建鎖的元數據,稱為鎖創建元數據,在共同寫作用戶例如通過在段落中鍵入或通過做出格式改變來修改文檔的區域的內容時,被寫到元數據信道111。鎖創建元數據為所有其他共同寫作用戶將鎖應用到段落,防止其他共同寫作用戶編輯該文檔的相同區域。如下面進一步討論,為了提供交叉信道一致性,在保存文檔時還將鎖創建元數據包括在數據信道113中。移除鎖的元數據,稱為鎖移除元數據,在共同寫作用戶已經完成編輯文檔的區域 (通常是段落)時,被寫到數據信道113。將鎖移除元數據寫到數據信道113以將鎖移除與內容更新進行同步。在共同寫作用戶時完成編輯文檔的區域時,共同寫作用戶通常執行保存操作。在保存操作期間,將文檔內容寫到數據信道113并發送給服務器106。將鎖移除元數據連同文檔內容一起寫到數據信道113,確保了在與文檔內容相同的時間接收到移除該文檔的已編輯區域的鎖的元數據。這防止了在接收到已更新內容之前就移除鎖潛在地允許用戶編輯不具有最新內容的文檔的區域的潛在問題。刪除鎖的元數據,稱為鎖刪除元數據,在例如通過激活鎖刪除按鈕或通過超時來明確地刪除鎖時,被寫到元數據信道111。可以出于多種理由明確地刪除鎖。例如,用戶可以開始編輯文檔的區域、創建該文檔的該區域的鎖,并且接著取消而不保存。沒有刪除鎖的明確方法,鎖將仍然起作用。作為另一示例,用戶可以開始編輯文檔的區域、創建該文檔的該區域的鎖、并且離開長的時間段,或者是從網絡108斷開長的時間段。對于這些情況,文檔協作系統可以實現在特定時間之后使得共同寫作用戶的所有鎖過期的超時。對于這種示例,超時使得將正在編輯的文檔的區域的鎖刪除元數據寫到元數據信道111。鎖元 數據的每一單元具有與其相關聯的標識符。在這一示例中,標識符包括標識鎖并且也標識該鎖針對的文檔的部分的數字,如下面進一步描述。鎖可以也包括發起鎖的創建、移除或刪除的用戶的標識符。在創建鎖時將標識符指派給鎖,且在刪除或移除鎖時使用相同的標識符。因而,總是存在與相鎖關聯的鎖創建、鎖刪除/移除對。如果正在編輯文檔的區域(導致鎖的創建),并且執行保存操作(導致移除鎖), 并且接著再次編輯文檔的相同的區域,則為文檔的該區域創建新的鎖。即使是正在編輯文檔的相同的部分,也為新的鎖指派新的標識符。如下面所解釋,將鎖標識符用作增強交叉信道一致性的附加工具。示例文檔協作系統維持每一鎖創建、鎖刪除和鎖移除的歷史。在元數據信道111 中維持該歷史。如下面進一步解釋,鎖創建、鎖刪除和鎖移除歷史被用作增強交叉信道一致性的進一步的工具。圖2示出客戶端計算機102的各邏輯模塊的詳盡視圖。客戶端計算機102包括示例文檔處理模塊202和示例元數據處理模塊204。示例文檔處理模塊202執行諸如Microsoft Word等的字處理器的操作。示例文檔處理模塊202容許創建或打開、修改和保存各文檔。示例文檔處理模塊202使用數據信道113來將文檔內容保存到服務器106。數據信道113是相對慢的信道,因為在保存文檔時,整個文檔的內容被發送給服務器106。在各示例實施方式中,客戶機102和客戶機104上的共同寫作用戶可以編輯相同的文檔。如果客戶機102上的共同寫作用戶首先打開文檔,則示例文檔處理模塊202從服務器106獲得該文檔的副本并在客戶機102上打開該文檔。在客戶機104上的共同寫作用戶打開文檔時,示例文檔處理模塊202從服務器106獲得該文檔的副本并在客戶機104上打開該文檔。如果在客戶機104上的共同寫作用戶打開文檔之前客戶機102上的共同寫作用戶對文檔做出改變,但是客戶機102上的共同寫作用戶未保存改變,則在客戶機104上的共同寫作用戶打開文檔時,客戶機104上的共同寫作用戶看不到改變。在各示例實施方式中,第二共同寫作用戶看不到第一共同寫作用戶對文檔做出的改變,直到第一共同寫作用戶和第二共同寫作用戶兩者都保存對文檔的改變。例如,在客戶機102上的共同寫作用戶保存對在客戶機102上打開的文檔的改變時,客戶機104上的共同寫作用戶看不到改變,直到客戶機104上的共同寫作用戶保存對在客戶機104上打開的文檔的改變。當在客戶機102上的共同寫作用戶保存對客戶機102上的文檔的改變之后, 客戶機104上的共同寫作用戶保存對在客戶機104上打開的文檔的改變時,將在客戶機102 上對文檔做出的改變與在客戶機104上打開的文檔合并起來。示例元數據處理模塊204處理在示例文檔協作系統上打開的各文檔的元數據。在客戶機102上的共同寫作用戶打開文檔并例如通過在文檔的段落中鍵入來修改文檔中的內容時,客戶機102上的示例元數據處理模塊為該段落創建鎖。該鎖是包括標識該文檔的已鎖定的段落的段落標識符的元數據。鎖元數據也包括編輯該文檔的共同寫作用戶的標識符,且鎖元數據包括該鎖的標識符。關于段落鎖的另外的細節可以在2008年7月25日提交的美國專利申請第 12/145,536號中找到,該專利申請整體通過引用結合于此。在各示例實施方式中,每 一鎖具有標識該鎖的鎖標識符。鎖標識符是由創建鎖的示例元數據處理模塊204生成的隨機數字。每當創建新的鎖時,即使是為與先前的鎖相同的段落創建新的鎖,也為該鎖生成新的鎖標識符。鎖標識符用來確定應該何時應用、從文檔移除或刪除鎖。在創建鎖時,將鎖寫到示例元數據信道111并將其發送到服務器計算機106。元數據信道111是與數據信道113分離的快速信道。與數據信道113相比較,通常更快速(“迅速”)地更新元數據信道111,這是因為通常存在較少的要在元數據信道111上傳送的信息, 因此比數據信道113上的信息更快地將信息傳送給服務器106。對于將元數據信道111用于鎖傳播以便快速地警告共同寫作用戶另一共同寫作用戶正在編輯該文檔的區域,并且最小化其他共同寫作用戶編輯該文檔的相同的區域的可能性,這是有益的。在各示例實施方式中,將示例元數據信道111上的初始元數據立即發送到服務器 106,但此后,以周期性的間隔,例如每5秒、10秒、30秒、45秒、1分鐘、5分鐘、或10分鐘,將附加的元數據發送到服務器106。出于性能原因,例如為了減少服務器106上的負載,周期性地而非立即將附加的元數據發送給服務器106。在客戶機102上的共同寫作編輯者,例如在客戶機102處打開的文檔的段落1中,開始編輯時,為段落1創建鎖并在元數據信道111 上將其發送到服務器106。在客戶機104處接收到鎖時,該鎖防止了客戶機104上的共同寫作用戶在該文檔的段落1中編輯。如果示例客戶機102上的共同寫作用戶現在編輯段落8,則為段落8創建鎖,但不在元數據信道111上將該鎖發送到服務器106,直到周期性時間間隔過期。例如,如果周期性時間間隔是30秒且在將段落1的鎖發送到服務器106三秒之后,客戶機102上的共同寫作用戶在段落8中鍵入,則在另外的27秒內不在元數據信道111上將段落8的鎖發送給服務器106。在這一示例中,如果在27秒已經到期之前客戶機102上的共同寫作用戶執行保存操作,則可能的是,在段落8的鎖到達元數據信道111之前,段落8的內容信息到達客戶機 104。出于這種原因,在示例元數據處理模塊204為段落創建鎖并將該鎖寫到元數據信道111時,示例元數據處理模塊204也將該鎖寫到數據信道113。然后,在客戶機102上的共同寫作用戶為對在客戶機102上打開的文檔做出的編輯執行保存操作時,在與在數據信道113上將該段落的內容改變傳送給服務器106的同時,在數據信道113上將該段落的鎖傳送給服務器106。在元數據信道111和數據信道113兩者上提供鎖創建元數據幫助最小化與在以上所描述的元數據信道111上的更新的周期性本質相關聯的等待時間的任何問題。如果在保存操作之前元數據信道111上的鎖到達客戶機104,則該鎖防止客戶機104上的共同寫作用戶編輯該段落。如果在客戶機102上進行了保存操作,并且來自保存操作的在數據信道 113上的內容改變在元數據信道111上的鎖之前到達客戶機104,則來自數據信道113的鎖連同內容改變一起到達客戶機104。數據信道113中的鎖防止客戶機104上的共同寫作用戶編輯段落。鎖移除通常是作為結保存操作果而經由數據信道113發生。在文檔協作系統中, 可以存在至少兩個不同類型的保存操作。在保存操作的一個示例中,將內容數據保存到服務器106,但不將內容信息指定為共享。在這一示例中,共同寫作用戶保存所被編輯內的容以便將內容保存在服務器106上,但是內容可以仍然不處于共同寫作用戶方便與其他人共享內容的狀態。在保存操作的另一示例中,共同寫作用戶將內容指定為共享。在本發明中, 保存操作與第二示例一致,意味著保存操作將所保存的內容指定為與其他共同寫作用戶共享。鎖移除經由數據信道113發生,因為保存操作通常指示共同寫作用戶已經完成對被保存的文檔的各段落的編輯。如果共同寫作用戶希望繼續編輯一個或多個段落,則為共同寫作用戶所編輯的每一段落創建具有新的鎖標識符的新的鎖。將鎖移除元數據寫到數據信道113以確保在與內容改變相同的時間在服務器106 處接收到鎖移除元數據。這確保了在另一共同寫作用戶,例如示例客戶機104上的共同寫作用戶,接收鎖移除元數據(防止了客戶機104上的共同寫作用戶編輯已鎖定的段落)時, 在客戶機104上打開的文檔也被更新到最新的內容。這確保了,在移除對應于鎖移除元數據的鎖時,客戶機104上的共同寫作用戶編輯已更新的內容。在鎖移除發生時,除了將鎖移除元數據寫到數據信道113之外,也將鎖移除元數據寫到元數據信道111。來自元數據信道111的鎖移除元數據通常在來自數據信道113鎖移除元數據到達服務器106之前到達服務器106。在服務器106接收到鎖移除元數據時, 服務器106改變該文檔的其他共同寫作用戶的已鎖定的段落的鎖類型。新的鎖類型指示已鎖定的段落不再被編輯。這告知用戶,例如客戶機104上的共同寫作用戶,該段落可用于編輯。然而,對于客戶機104上的共同寫作用戶,段落仍然被鎖定。在客戶機104上的共同寫作用戶執行保存操作時,服務器106用對該段落的已更新的內容改變來更新客戶機104,并移除該段落上的鎖。在元數據信道111上將鎖刪除元數據發送到服務器106。從鎖移除元數據區分鎖刪除元數據。在用戶不再編輯文檔的區域時生成鎖移除元數據。鎖刪除元數據發生是因為共同寫作用戶的明確的動作或文檔協作系統的明確的動作。例如,如上所述,用戶可以開始編輯一個或多個段落并決定取消編輯而不保存。由于在共同寫作用戶在段落中鍵入時將鎖創建元數據寫到元數據信道111和數據信道113兩者,共同寫作用戶可以按下與示例文檔處理模塊202相關聯的刪除鍵。按下示例刪除關鍵引起將鎖刪除元數據寫到元數據信道 111。如下面所討論,鎖刪除元數據具有比鎖創建元數據高的優先級。結果,在在客戶機 104上處理來自元數據信道111的元數據時,鎖刪除元數據從客戶機104移除具有鎖刪除元數據的鎖標識符的任何鎖。在某些條件下,鎖刪除元數據也由文檔協作系統明確地生成。例如,如果用戶編輯文檔的一個或多個段落,不保存改變,不關閉文檔并回家過夜,則對于用戶編輯的所有段落,鎖仍然是活動的。這些鎖防止其他共同寫作用戶編輯各段落。元數據處理模塊111通過在預先確定的時間周期之后使得鎖超時并為各鎖生成鎖刪除元數據來解決這一情況。
在客戶機104接收元數據(例如由客戶機102生成的元數據)時,客戶機104上的優先化準則確定如何將元數據應用到在客戶機104上打開的文檔。在客戶機104上的共同寫作用戶從服務器106獲得文檔并在客戶機104上打開該文檔時,在元數據信道111上獲得該文檔的元數據。如果該元數據包括該文檔的一個或多個段落的一個或多個鎖,則客戶機104確定元數據是否包括具有與一個或多個鎖相同的鎖標識符的一個或多個鎖移除。 如果元數據包括具有與元數據中包括的鎖相同的鎖標識符的鎖移除,則不將鎖應用到該文檔。原因是鎖移除總是在創建鎖之后發生,因此鎖移除是更近的。然而,如果元數據不包括具有與元數據中包括的鎖相同的鎖標識符的鎖移除,則將該鎖應用到該文檔中鎖元數據中指定的段落。該鎖防止客戶機104上的共同寫作用戶編輯該文檔。一旦打開客戶機104上的文檔并如上所述將初始元數據應用到文檔,在各示例實施方式中就以周期性的間隔(通常是30秒)將附加的元數據應用到文檔。另外,在各示例實施方式中僅在客戶機104上進行保存操作時將對文檔的附加的內容更新應用到文檔。在下一周期性的時間間隔發生時,經由元數據信道111從服務器106獲得元數據。根據優先級準則將元數據應用到文檔。客戶機104上的示例元數據處理模塊204首先確定元數據是否包括任何鎖刪除。元數據信道111上的鎖刪除是最高優先級元數據,指示鎖要被明確地移除。客戶機104上的示例元數據處理模塊204接著確定從服務器106獲得的元數據被獲得是否包括任何鎖創建。如果元數據包括一個或多個鎖創建,則做出該元數據是否也包括與一個或多個鎖創建的鎖標識符匹配的任何鎖移除的判斷。如果鎖創建不具有帶有相同的鎖標識符的相應的鎖移除,則將對應于鎖創建的鎖應用到該鎖創建中所標識的文檔的段落。然而,如果鎖創建具有帶有相同的鎖標識符的相應的鎖移除,則不將對應于鎖創建的鎖應用到該鎖創建中標識的文檔的段落。這是因為鎖移除總是在鎖創建之后發生,且如果鎖移除和鎖創建具有相同的標識符,則已經取了消該鎖。在客戶機104上的共同寫作用戶時執行保存操作時,從服務器106獲得該文檔的已更新內容。已更新的內容反映由自從客戶機104上的上次保存操作以來將他們的內容改變保存到服務器106的其他共同寫作用戶做出的對文檔的任何變化。在數據信道113上將已更新的內容從服務器106發送到客戶機104。在客戶機104從接收服務器106的已更新的內容時,客戶機104確定從服務器106接收的最新的元數據是否包括任何鎖移除。如果從服務器106接收的最新的元數據包括任何鎖移除,則從由鎖移除標識的文檔的段落移除由該鎖移除標識的鎖。直到內容更新發生為止不發生鎖移除的原因,是為了確保在移除鎖并且共同寫作用戶開始編輯已鎖定的段落時,共同寫作用戶正在編輯在服務器106上保存的文檔的最近內容。圖3-圖5示出將元數據應用到文檔以提供信息的交叉信道一致性的方法的示例流圖300。在操作302,從服務器計算機106獲取被指派用于共同寫作的文檔。在操作304, 由客戶機104上的共同寫作用戶打開文檔。在操作306,客戶機104從服務器計算機106接收包括該文檔的第一元數據的第一消息。當在客戶機104上打開文檔時,服務器計算機106 將第一元數據發送到客戶機104。在元數據信道111上發送第一元數據。第一元數據包括該文檔的一個或多個鎖。各鎖指示一個或多個共同寫作用戶例如客戶機102上的共同寫作用戶已經修改該文檔的一個或多個區域。
在操作308,客戶機104從服務器計算機106接收包括該文檔的第二元數據的第二消息。還在元數據信道111上接收第二元數據。在操作310,做出第二元數據是否包括一個或多個鎖刪除的判斷。在確定第二元數據包括一個或多個鎖刪除時,在操作312,做出一個或多個鎖刪除是否與被應用到文檔的鎖匹配的判斷。每一鎖刪除具有一標識符且每一鎖具有一標識符。如果做出鎖刪除的標識符與該文檔上的鎖的標識符匹配的判斷,則在操作 314,刪除該文檔上的鎖。在操作316,做出第二元數據是否包括鎖創建的判斷。在確定第二元數據包括鎖創建時,在操作318,做出第二元數據是否包括鎖移除的判斷。在確定第二元數據包括鎖移除時,在操作320,做出鎖移除的標識符是否與鎖創建的標識符匹配的判斷。在確定不存在鎖移除時或在確定存在鎖移除且沒有一個鎖移除與鎖創建匹配時,在操作322,將對應于第二元數據中的鎖創建的鎖應用到文檔。如果鎖創建具有匹配的鎖移除,則不將鎖應用到該鎖創建的文檔。因為鎖移除在鎖創建之后發生,鎖移除指示不再需要鎖定對應于鎖創建的文檔的區域。在操作324,客戶機104從服務器計算機206接收包括文檔內容且也包括第三元數據的第三消息。第三消息通常是在客戶機104上的共同寫作用戶執行保存操作以保存在客戶機上打開的文檔的內容之后被接收的。第三消息中所包括的文檔內容是來自另一共同寫作用戶例如客戶機102上的共同寫作用戶的已更新文檔內容。在數據信道113上接收第三消息。在數據信道113上接收第三消息以確保在與經更新文檔內容相同的時間接收到該鎖移除。這確保了如果移除了鎖,則對其移除了該鎖的文檔的區域具有最新的內容。在操作326,做出第三元數據是否包括鎖移除的判斷。在確定第三元數據包括一個或多個鎖移除時,在操作312做出一個或多個鎖移除是否與被應用到文檔的鎖匹配的判斷。每一鎖移除具有一標識符且每一鎖具有一標識符。如果做出鎖移除的標識符與該文檔上的鎖的標識符的判斷,則在操作314,移除該文檔上的鎖。交叉信道共同寫作一致性的以上討論描述兩個共同寫作用戶。在其他示例實施方式中,多于兩個的共同寫作用戶可以編輯相同的文檔。相同的元數據合并操作適用于具有多于兩個的共同寫作用戶的示例實施方式。參考圖6,示出客戶機102的示例組件。在示例實施方式中,客戶機102是計算設備,諸如臺式計算機、膝上型計算機、個人數字助理,或蜂窩式設備。客戶機102可以包括輸入/輸出設備、中央處理單元(“CPU”)、數據存儲設備,和網絡設備。在基本配置中,計算設備102通常包括至少一個處理單元402和系統存儲器404。 取決于計算設備的確切的配置和類型,系統存儲器404可以是易失性存儲器(例如RAM), 非易失性存儲器(例如ROM、閃速存儲器等等)或兩者的某種組合。系統存儲器404通常包括諸如來自華盛頓州雷蒙德市微軟公司的WINDOWS @操作系統等的適用于控制聯網個人計算機的操作的操作系統406,或諸如也來自華盛頓州雷蒙德市微軟公司的Windows SharePoint Server 2007等的適用于控制服務器的操作的操作系統406。系統存儲器404 還可以包括一個或多個軟件應用408且可以包括程序數據。計算設備102可以具有附加的特征或功能。例如,計算設備102還可以也包括附加的數據存儲設備(可移動存儲設備和/或不可移動存儲設備),例如磁盤、光盤或磁帶。 在圖6中由可移動存儲410和不可移動存儲412示出這樣的附加存儲。計算機存儲介質可以包括以用于存儲諸如計算機可讀指令、數據結構、程序模塊或其他數據等的信息的任何方法或技術實現的易失性介質和非易失性介質、可移動介質和不可移動介質。系統存儲器 404、可移動存儲410和不可移動存儲412都是計算機存儲介質的示例。計算機存儲介質包括但不限于RAM、R0M、EEPR0M、閃速存儲器或其他存儲器技術、CD-ROM、數字多用盤(DVD)或其他光存儲、磁帶盒、磁帶、磁盤存儲或其他磁存儲設備、或可以被用來存儲所期望的信息且可由計算設備102訪問的任何其他介質。任何這樣的計算機存儲介質可以是設備102的一部分。計算設備102可以也具有諸如鍵盤、鼠標、筆、語音輸入設備、觸摸輸入設備等等的輸入設備414。也可以包括諸如顯示器、揚聲器、打印機等等的輸出設備416。這些設備在本領域中是公知的,且不需要在此詳細討論。計算設備102可以也包含允許設備例如在分布式計算環境中的網絡例如內聯網或因特網上與其他計算設備420通信的通信連接418。通信連接418是通信介質的一個示例。通信介質可以通常是由諸如載波或其他傳輸機制等的經調制的數據信號中的計算機可讀指令、數據結構、程序模塊或其他數據來體現,且包括任何信息傳遞介質。術語“已調制的數據信號”意味著以在信號中編碼信息的方式來設置或改變其一個或多個特性的信號。作為示例而非限制,通信介質包括諸如有線網絡或直接有線連接等的有線介質和諸如聲學、 RF、紅外和其他無線介質等的無線介質。在此所使用的術語計算機可讀介質包括存儲介質和通信介質兩者。僅作為闡釋提供以上所描述的各種實施方式,且各種實施方式不應被解釋成限制。可以在不偏離本公開內容的真實精神和范圍的前提下對以上所描述的實施方式進行各種修改和改變。
權利要求
1.一種用于客戶端計算機(102)上的元數據一致性處理的方法(300),所述方法包括在客戶端計算機(102)上,從服務器計算機(106)獲得文檔; 在所述客戶端計算機(102)上打開所述文檔;在打開所述文檔之后,從所述服務器計算機(106)接收第一消息,所述第一消息包括所述文檔的第一元數據,所述第一元數據包括所述文檔的一個或多個區域的一個或多個鎖,在元數據信道(111)上從所述服務器計算機(106)接收所述第一元數據,所述元數據信道(111)是在所述客戶端計算機(102)和所述服務器計算機(106)之間的第一通信路徑, 沿著所述第一通信路徑傳遞與所述文檔相關聯的鎖元數據; 在打開所述文檔之后,編輯未鎖定的所述文檔的第一區域;從所述服務器計算機(106)接收第二消息,所述第二消息包括所述文檔的第二元數據,在所述元數據信道(111)上接收所述第二元數據;在接收所述第二元數據之后,確定所述第二元數據是否包括一個或多個鎖刪除; 在確定所述第二元數據包括一個或多個鎖刪除時,確定所述一個或多個鎖刪除是否包括與已鎖定的所述文檔的一個或多個區域的鎖的標識符匹配的標識符;在確定一個或多個鎖刪除包括與已鎖定的所述文檔的一個或多個區域的鎖的標識符匹配的標識符時,刪除對應于所述鎖刪除的所述鎖;在接收所述第二元數據之后,確定所述第二元數據是否包括一個或多個鎖創建,所述一個或多個鎖創建中的每一個都包括對應于要被創建的每一鎖的標識符;在確定所述第二元數據包括一個或多個鎖創建時,確定所述第二元數據是否包括一個或多個鎖移除,所述鎖移除具有與所述鎖創建的一個或多個相同的鎖標識符;在確定所述第二元數據不包括任何鎖移除時或在確定所述第二元數據包括一個或多個鎖移除且所述一個或多個鎖移除中沒有一個具有與鎖創建匹配的鎖標識符時,對于所述一個或多個鎖移除中沒有一個具有與所述鎖創建匹配的鎖標識符的所述一個或多個鎖創建中的每一鎖創建,將所述鎖創建應用到在所述鎖創建中指定的所述文檔的所述區域;從所述服務器計算機(106)接收第三消息,所述第三消息包括內容信息和第三元數據,所述內容信息和所述第三元數據是在與所述元數據信道(111)分離的數據信道(113) 上接收的,所述數據信道(113)是在所述客戶端計算機(102)和所述服務器計算機(106) 之間的第二通信路徑,沿著所述第二通信路徑傳遞與所述文檔相關聯的內容和所述鎖元數據;在接收所述內容信息和所述第三元數據之后,確定所述第三元數據是否包括一個或多個鎖移除;在確定所述第三元數據包括一個或多個鎖移除時,確定所述一個或多個鎖移除是否包括與已鎖定的所述文檔的一個或多個區域的鎖的標識符匹配的標識符;在確定一個或多個鎖移除包括與已鎖定的所述文檔的一個或多個區域的鎖的標識符匹配的標識符時,移除對應于所述鎖移除的所述鎖。
2.如權利要求1所述的方法,其特征在于,還包括在確定所述第三元數據是否包括一個或多個鎖移除之后,確定所述第三元數據是否包括一個或多個鎖創建;在確定所述第三元數據包括一個或多個鎖創建時,確定所述第三元數據是否包括具有與所述鎖創建中的一個或多個的標識符匹配的鎖標識符的一個或多個鎖移除;以及在確定所述第三元數據不包括任何鎖移除時或在確定所述第三元數據包括一個或多個鎖移除且所述一個或多個鎖移除中沒有一個具有與鎖創建匹配的鎖標識符時,對于所述一個或多個鎖移除中沒有一個具有與所述鎖創建匹配的鎖標識符的所述一個或多個鎖創建中的每一鎖創建,將鎖應用到在所述鎖創建中指定的所述文檔的所述區域;
3.如權利要求1所述的方法,其特征在于,還包括,所述客戶端計算機(102)在所述客戶端計算機接收所述第一元數據之后,以預先確定的時間間隔將第一請求消息發送到所述服務器計算機(106),所述第一請求消息從所述服務器計算機(106)請求元數據。
4.如權利要求3所述的方法,其特征在于,還包括編輯未鎖定的所述文檔的第二區域, 所述文檔的所述第二區域不同于所述文檔的所述第一區域。
5.如權利要求4所述的方法,其特征在于,還包括將第二請求消息發送給所述服務器計算機(106),所述第二請求消息包括未鎖定的所述文檔的所述第二區域的鎖創建,從將所述第一請求消息發送到所述服務器計算機(106)的時間起以一個或多個預先確定的時間間隔發送所述第二請求消息。
6.如權利要求1所述的方法,其特征在于,還包括,每一鎖創建、每一鎖移除和每一鎖刪除的所述標識符,包括發起所述鎖創建、鎖移除或鎖刪除的共同寫作用戶的標識符。
7.一個計算設備(102),包括:處理單元(402);連接到所述處理單元(402)的系統存儲器(404),所述系統存儲器(404)包括指令,所述指令在由所述處理單元(402)執行時使得所述處理單元(402)創建處理文檔內容的創建和編輯的文檔處理模塊(202);以及生成、監視和存儲所述計算設備(102)上的文檔的元數據的元數據處理模塊(204),所述元數據處理模塊(204)生成包括關于在用戶開始編輯文檔的一部分時創建的新的鎖的信息的鎖創建元數據、包括關于移除鎖的信息的鎖移除元數據,以及包括關于刪除鎖的信息的鎖刪除元數據,所述元數據處理模塊(204)將鎖創建元數據寫到數據信道(113)和分離的元數據信道(111)兩者,所述數據信道(113)是在所述計算設備(102)和服務器計算機(106)之間的第一通信路徑,沿著所述第一通信路徑傳遞與所述文檔相關聯的內容和鎖元數據,且所述元數據信道(111)是在所述計算設備(102)和所述服務器計算機(106)之間的第二通信路徑,沿著所述第二通信路徑出傳遞與所述文檔相關聯的所述鎖元數據,所述元數據處理模塊(204)將鎖移除元數據寫到所述數據信道(113)且所述元數據處理模塊 (204)將鎖刪除元數據寫到所述元數據信道(111)。
8.如權利要求7所述的計算設備,其特征在于,在保存操作之后,所述元數據處理模塊 (204)將鎖移除元數據寫到所述數據信道(113),所述鎖移除元數據對應于在所述保存操作期間被保存的已修改內容。
9.如權利要求7所述的計算設備,其特征在于,在所述文檔的一個或多個區域被修改時,所述元數據處理模塊(204)將鎖創建元數據寫到所述元數據信道(111)和所述數據信道(113)。
10.如權利要求7所述的計算設備,其特征在于,在所述計算設備(102)上超時之后或當在所述計算設備(102)上手動地激活刪除功能時,所述元數據處理模塊(204)將鎖刪除元數據寫到所述元數據信道(111)。
11.如權利要求7所述的計算設備,其特征在于,當在所述計算設備(102)處執行保存操作時,所述文檔處理模塊(202)從服務器計算機(106)獲得文檔的經更新內容信息。
12.如權利要求11所述的計算設備,其特征在于,當在所述計算設備(102)處執行所述保存操作時,所述元數據處理模塊(204)從所述服務器計算機(106)獲得鎖創建元數據和鎖移除元數據。
13.如權利要求7所述的計算設備,其特征在于,所述元數據處理模塊(204)將標識符指派給所述鎖創建元數據和所述鎖移除元數據,所述元數據處理模塊將各標識符指派給成對的所述鎖創建元數據和所述鎖移除元數據,至少一個鎖移除的所述標識符與至少一個鎖創建的所述標識符是相同的,不多于一個的鎖創建和一個鎖移除具有相同的標識符。
14.如權利要求7所述的計算設備,所述元數據處理模塊(204)將各標識符指派給成對的所述鎖創建元數據和所述鎖刪除元數據,至少一個鎖刪除的所述標識符與至少一個鎖創建的所述標識符是相同的,不多于一個的鎖創建和一個鎖刪除具有相同的標識符。
15.一種包括指令的計算機可讀的數據存儲介質,所述指令在由電子計算設備(102) 的處理單元(402)執行時,使得所述處理單元(402)從服務器計算機(106)獲取文檔,所述文檔由所述電子計算機設備(102)處的用戶請求;打開所述文檔;在打開所述文檔之后,從所述服務器計算機(106)接收第一消息,所述第一消息包括所述文檔的第一元數據,所述第一元數據包括所述文檔的一個或多個區域的一個或多個鎖,在元數據信道(111)上從所述服務器計算機(106)接收所述第一元數據,所述元數據信道(111)是在所述電子計算設備(102)和所述服務器計算機(106)之間的第一通信路徑, 沿著所述第一通信路徑傳遞與所述文檔相關聯的鎖元數據; 在打開所述文檔之后,編輯未鎖定的所述文檔的第一區域;從所述服務器計算機(106)接收第二消息,所述第二消息包括所述文檔的第二元數據,在所述元數據信道(111)上接收所述第二元數據;在接收所述第二元數據之后,確定所述第二元數據是否包括一個或多個鎖刪除; 在確定所述第二元數據包括一個或多個鎖刪除時,確定所述一個或多個鎖刪除是否包括與已鎖定的所述文檔的一個或多個區域的鎖的標識符匹配的標識符;在確定一個或多個鎖刪除包括與已鎖定的所述文檔的一個或多個區域的鎖的標識符匹配的標識符時,刪除對應于所述鎖刪除的所述鎖;在接收所述第二元數據之后,確定所述第二元數據是否包括一個或多個鎖創建,所述一個或多個鎖創建中的每一個包括對應于要創建的每一鎖的標識符;在確定所述第二元數據包括一個或多個鎖創建時,確定所述第二元數據是否包括一個或多個鎖移除,所述鎖移除具有與所述鎖創建的一個或多個相同的鎖標識符; 在確定所述第二元數據不包括任何鎖移除時或在確定所述第二元數據包括一個或多個鎖移除且所述一個或多個鎖移除中沒有一個具有與鎖創建匹配的鎖標識符時,對于所述一個或多個鎖移除中沒有一個具有與所述鎖創建匹配的鎖標識符的所述一個或多個鎖創建中的每一鎖創建,將所述鎖創建應用到在所述鎖創建中指定的所述文檔的所述區域;從所述服務器計算機(106)接收第三消息,所述第三消息包括內容信息和第三元數據,所述內容信息和所述第三元數據是在與所述元數據信道(111)分離的數據信道(113) 上接收的,所述數據信道(113)是在所述電子計算設備(102)和所述服務器計算機(106) 之間的第二通信路徑,沿著所述第二通信路徑傳遞與所述文檔相關聯的內容和所述鎖元數據; 在接收所述內容信息和所述第三元數據之后,確定所述第三元數據是否包括一個或多個鎖移除;在確定所述第三元數據包括一個或多個鎖移除時,確定所述一個或多個鎖移除是否包括與已鎖定的所述文檔的一個或多個區域的鎖的標識符匹配的標識符;在確定一個或多個鎖移除包括與已鎖定的所述文檔的一個或多個區域的鎖的標識符匹配的標識符時,移除對應于所述鎖移除的所述鎖;在確定所述第三元數據是否包括一個或多個鎖移除之后,確定所述第二元數據是否包括具有與所述一個或多個鎖移除的標識符匹配的標識符的一個或多個鎖創建;在確定所述第二元數據包括具有與所述一個或多個鎖移除的標識符匹配的標識符的一個或多個鎖創建時,確定是否應該將具有與所述一個或多個鎖創建匹配的標識符的一個或多個鎖應用到所述文檔;在確定具有與所述一個或多個鎖移除的標識符匹配的標識符的一個或多個鎖創建時, 以及在確定將具有與所述一個或多個鎖創建匹配的標識符的一個或多個鎖應用到所述文檔時,從所述文檔移除具有與具有匹配于所述一個或多個鎖移除的標識符的鎖創建相匹配的標識符的每一鎖;在確定所述第三元數據是否包括一個或多個鎖移除之后,確定所述第三元數據是否包括一個或多個鎖創建;在確定所述第三元數據包括一個或多個鎖創建時,確定所述第三元數據是否包括具有與所述鎖創建中的一個或多個的標識符匹配的鎖標識符的一個或多個鎖移除;以及在確定所述第三元數據不包括任何鎖移除時或在確定所述第三元數據包括一個或多個鎖移除且所述一個或多個鎖移除中沒有一個具有匹配鎖創建的鎖標識符時,對于所述一個或多個鎖移除中沒有一個具有匹配所述鎖創建的鎖標識符的所述一個或多個鎖創建中的每一鎖創建,將鎖應用到在所述鎖創建中指定的所述文檔的所述區域。
全文摘要
一個計算設備包括處理單元和帶有指令的存儲器,指令在由處理單元執行時,使處理單元創建處理文檔內容的創建和編輯的文檔處理模塊;以及在計算設備上生成、監視和存儲文檔的元數據的元數據處理模塊,該元數據處理模塊生成包括關于在用戶開始編輯文檔的一部分時創建的新的鎖的信息的鎖創建元數據、包括關于移除鎖的信息的鎖移除元數據,以及包括關于刪除鎖的信息的鎖刪除元數據,元數據處理模塊將鎖創建元數據寫到數據信道和分離的元數據信道兩者,元數據處理模塊將鎖移除元數據寫到數據信道且元數據處理模塊將鎖刪除元數據寫到元數據信道。
文檔編號G06F15/16GK102414675SQ201080020012
公開日2012年4月11日 申請日期2010年4月30日 優先權日2009年5月1日
發明者C·J·安托斯, E·J·伯恩斯坦, J·B·拜勒 申請人:微軟公司