專利名稱:一種文檔協(xié)作方法
一種文檔協(xié)作方法
技術領域:
本發(fā)明涉及辦公應用領域,特別涉及利用多人協(xié)同處理一份文檔的文檔協(xié)作方法。
背景技術:
現(xiàn)代社會中,辦公軟件已經(jīng)融入到了日常辦公的方方面面。諸如Word、Excel和 PPT之類的辦公軟件大大促進了人們無紙化辦公的實現(xiàn)。然而,隨著互聯(lián)網(wǎng)技術和計算機技術的不斷發(fā)展,網(wǎng)絡化辦公和云計算辦公為用戶提供更為高效和快捷的辦公平臺成為了可能。由于一個企業(yè)通常有多個部門,每個部門又有多個職員。這就導致了在目前的企業(yè)日常辦公中,企業(yè)在處理需要多個部門或者員工協(xié)同完成文檔時經(jīng)常會碰到很多不方便的問題。例如企業(yè)需要撰寫一個商業(yè)計劃書,則可能不僅需要研發(fā)部門提供新的項目構想,同時還需要技術部門提供實現(xiàn)該項目構想的技術支持;市場部門提供該項目構想的市場前景、成本和收益分析;財務部門提供該項目構想的投資預算和融資規(guī)劃等等。由于該商業(yè)計劃書中的各個章節(jié)互相彼此關聯(lián),所以采用傳統(tǒng)的辦公方法不能很好地完成各個部門的協(xié)調(diào)和信息對稱。雖然針對上述問題,現(xiàn)在已經(jīng)有多種協(xié)作平臺推出,但是傳統(tǒng)的協(xié)作平臺采用的解決方案主要是各個部門或者員工分別撰寫文檔的一部分,最后根據(jù)各文檔的差異性來分情況合并文檔,盡管也采用“瀏覽器+服務器”的B/S結構,但是并不是真正意義上的多用戶實時協(xié)作系統(tǒng)。而目前較為優(yōu)秀的協(xié)作平臺主要是美國微軟公司出品的Office 365云計算辦公軟件和美國谷歌公司出品的谷歌文檔(Google Docs)中的協(xié)作組件。其中微軟公司出品的Office 365云計算辦公軟件中支持的協(xié)作方式為“保存+更新”方式,也就是說,當多個用戶同時對一個文檔進行協(xié)作編輯時,只有在當前用戶點擊保存以后,當前用戶對于所述文檔的相關操作才會被上傳至服務器并且更新至其他協(xié)作用戶,并且按照每個用戶的保存操作存儲多個所述文檔的版本。顯然,這種協(xié)作方式具有兩個缺點第一,一個用戶對所述文檔的修改是被動更新到服務器上的,容易發(fā)生信息更新不及時的情況;第二,如果兩個用戶都對相同部分的內(nèi)容進行了修改,然后點擊保存后會發(fā)生內(nèi)容沖突,對于用戶來講不是非常方便。而美國谷歌公司出品的谷歌文檔(Google Docs)中的協(xié)作組件采用了另外兩種協(xié)作方式,在早期的谷歌文檔的協(xié)作組件中采用的協(xié)作方式是每隔預定時間就自動更新一次各個協(xié)作用戶對文檔的修改,但是這種協(xié)作方式的缺點是更新時間對用戶來講是未知的,在用戶正在編寫過程中可能會突然更新,比如少了幾行字或者多了幾個字,不僅會干擾用戶的創(chuàng)作思路,而且也存在內(nèi)容沖突的可能;而在后續(xù)的谷歌文檔的協(xié)作組件中采用的協(xié)作方式則是真正意義上的多用戶實時協(xié)作-“光標跟隨逐字更新”,具體來講,在各個用戶的瀏覽器視窗中,同時存在多個光標,每個光標對應一個正在編輯的用戶,任何一個用戶對所述文檔的修改,都是逐字更新顯示給其它用戶,如圖1所示。也就是說,每個用戶都能夠實時觀察到其它用戶對所述文檔的修改過程。雖然這種協(xié)作方式是較為理想和成功的,但是這種協(xié)作方式還是具有兩個缺點第一,在一個用戶的瀏覽器視窗中出現(xiàn)很多個光標, 而且這些光標都是隨其它用戶的操作處于動態(tài)的,這些動態(tài)的光標也會一定程度上干擾用戶的創(chuàng)作思路;第二,這種協(xié)作方式的實現(xiàn)需要較為穩(wěn)定快速的網(wǎng)絡和效率較高的瀏覽器, 在一些較差的實施環(huán)境不能取得很好的效果。因此,有必要提出一種新的技術方案來解決上述問題。
發(fā)明內(nèi)容本發(fā)明要解決的技術問題在于提供一種文檔協(xié)作方法,所述文檔協(xié)作方法既能實現(xiàn)多用戶實時協(xié)作編輯文檔,又不會發(fā)生內(nèi)容沖突現(xiàn)象。為了解決上述問題,本發(fā)明提供了一種文檔協(xié)作方法,采用多個客戶端協(xié)同處理位于服務器上的一個文檔,所述文檔包括多個文檔片段,所述文檔協(xié)作方法包括各個客戶端選定所述文檔中未被其它客戶端選定的文檔片段進行編輯,并將編輯后的與所述文檔相關的數(shù)據(jù)發(fā)送到所述服務器;所述服務器將所述數(shù)據(jù)轉發(fā)給其它客戶端。進一步地,所述文檔片段為按照頁、標題、章、段、行、句、標號、單元格或者輸入框中的一種或者多種作為單位劃分所述文檔后獲得的文檔片段。進一步地,在一個客戶端的光標停留于所述文檔中的一個文檔片段內(nèi)時,表明該客戶端選定了該文檔片段,在一個客戶端的光標離開了選定的文檔片段時,表明該客戶端對所述文檔片段完成了編輯并解除選定。進一步地,當一個客戶端選定了一個文檔片段后,所述文檔片段在解除選定前無法被其它客戶端選定。進一步地,各個客戶端在選定的文檔片段內(nèi)完成編輯后才將編輯后的與所述文檔相關的數(shù)據(jù)發(fā)送到所述服務器。進一步地,所述文檔相關的數(shù)據(jù)為編輯過程中產(chǎn)生的操作數(shù)據(jù)。進一步地,一個客戶端在選定的文檔片段內(nèi)進行編輯時,根據(jù)編輯時采取的操作命令類型、操作對象和/或操作內(nèi)容來生成操作數(shù)據(jù),在編輯完成后將選定期間生成的操作數(shù)據(jù)封裝為數(shù)據(jù)包發(fā)送給所述服務器。進一步地,所述操作命令類型包括選擇、編輯、修訂、審閱、批注和保存。進一步地,所述服務器將來自一個客戶端的包含操作數(shù)據(jù)的數(shù)據(jù)包轉發(fā)給其它客戶端,其它客戶端接收并解析所述數(shù)據(jù)包為對應操作數(shù)據(jù),然后利用所述操作數(shù)據(jù)對所述文檔進行處理和更新顯示。進一步地,所述服務器在發(fā)送數(shù)據(jù)包給其它客戶端時,僅發(fā)送給當前在線聯(lián)機的其它客戶端。進一步地,當一個客戶端選擇或者邀請其它客戶端協(xié)作一份文檔時,判斷所述文檔是否位于所述服務器中,如果不是,則將所述文檔上傳至所述服務器中并共享給其它客戶端。進一步地,當一個客戶端選定一個文檔片段后,所述服務器將該文檔片段突出顯示給其它客戶端。進一步地,所述突出顯示包括增加陰影、改變背景色、改變前景色、改變文字顏色、 增加文字信息中的一種或者幾種。
與現(xiàn)有技術相比,本發(fā)明中的文檔協(xié)作方法包括有以下優(yōu)點將協(xié)作文檔劃分為若干個文檔片段,同一時間只能由一個客戶端來獨占所述文檔片段的編輯權限,從而不會發(fā)生多個用戶對同一內(nèi)容進行修改時產(chǎn)生沖突。
結合參考附圖及接下來的詳細描述,本發(fā)明將更容易理解,其中同樣的附圖標記對應同樣的結構部件,其中圖1為現(xiàn)有的谷歌文檔的協(xié)作組件在進行多用戶實時協(xié)作時的實施示意圖;圖2為本發(fā)明中的文檔協(xié)作方法的實施環(huán)境在一個實施例中的結構示意圖;圖3為本發(fā)明中的文檔協(xié)作方法在一個實施例中的方法流程圖;圖4A和圖4B為本發(fā)明中的文檔協(xié)作方法在一個實施例中的應用示例;和圖5為本發(fā)明中的文檔協(xié)作方法在另一個實施例中的方法流程圖。
具體實施方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖和具體實施方式
對本發(fā)明作進一步詳細的說明。本發(fā)明的詳細描述主要通過程序、步驟、邏輯塊、過程或其他象征性的描述來呈現(xiàn),其直接或間接地模擬本發(fā)明中的技術方案的運作。所屬領域內(nèi)的技術人員使用此處的這些描述和陳述向所屬領域內(nèi)的其他技術人員有效的介紹他們的工作本質(zhì)。此處所稱的“一個實施例”或“實施例”是指與所述實施例相關的特定特征、結構或特性至少可包含于本發(fā)明至少一個實現(xiàn)方式中。在本說明書中不同地方出現(xiàn)的“在一個實施例中”并非必須都指同一個實施例,也不必須是與其他實施例互相排斥的單獨或選擇實施例。此外,表示一個或多個實施例的方法、流程圖或功能框圖中的模塊順序并非固定的指代任何特定順序,也不構成對本發(fā)明的限制。請參考圖2,其示出了本發(fā)明中的文檔協(xié)作方法的實施環(huán)境在一個實施例200中的結構示意圖。所述實施環(huán)境200包括有服務器120、通過網(wǎng)絡160與所述服務器120建立通訊的若干個客戶端140。所述網(wǎng)絡160可以包括局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、移動通信網(wǎng)、公共交換電話網(wǎng)絡(PSTN)或它們的組合。為了簡便,圖2中僅示出了四個客戶端140 和一個服務器120,但是可以認識到,在實踐中可以有更多的客戶端和更多的服務器。所述客戶端140可以包括個人計算機、筆記本電腦、平板電腦、智能手機或個人數(shù)字助理(PDA)等信息處理裝置。在這些信息處理裝置中運行有瀏覽器或者預定的客戶端軟件或者插件等。諸如部門領導、項目負責人之類的主作者可以通過所述客戶端140來創(chuàng)建和取消一個協(xié)作組。在創(chuàng)建協(xié)作組的過程中,可以選擇或者邀請若干個其它客戶端140 作為協(xié)作者,并且對各個協(xié)作者進行協(xié)作文檔的相關權限分配,比如所述協(xié)作文檔的查看、 編輯、審閱、修訂和批注等等。諸如員工、技術支持人員之類的協(xié)作者可以通過所述客戶端 140來對協(xié)作文檔進行編輯。在具體協(xié)作時,協(xié)作文檔可以劃分為若干個文檔片段,比如每一個段落為一個文檔片段。該協(xié)作文檔的一個客戶端140在同一時間可以選定一個或者幾個這樣的文檔片段進行編輯操作,比如插入或者刪除文字及數(shù)據(jù)、設置段落格式等等。在所述客戶端140編輯該文檔片段的過程中或者過程后,有關于該文檔片段的數(shù)據(jù)會通過服務器120轉發(fā)給該協(xié)作文檔的其它客戶端140。然后其它客戶端140利用所述數(shù)據(jù)更新所述協(xié)作文檔的顯示。所述服務器120可以是計算機、專用服務器或者云計算服務模組等等。所述服務器120主要用于存儲和管理所述協(xié)作文檔、各個協(xié)作文檔的權限分配和各個客戶端140的相關信息。所述服務器120還可以根據(jù)各個客戶端的在線情況,來選擇性地將相應的操作數(shù)據(jù)轉發(fā)給各個客戶端140。請參考圖3,其示出了本發(fā)明中的文檔協(xié)作方法在一個實施例300中的方法流程圖。所述文檔協(xié)作方法300采用多個客戶端協(xié)同處理位于服務器上的一個協(xié)作文檔,所述協(xié)作文檔包括有多個文檔片段。這些文檔片段可以是一頁文字、屬于一個標題的一部分文字、屬于一章的一部分文字、一段文字、一行文字、一句文字、兩個相同標點或者符號之間的內(nèi)容、一個單元格或者一個輸入框等等。所述文檔協(xié)作方法300包括步驟302,各個客戶端選定所述協(xié)作文檔中未被其它客戶端選定的文檔片段進行編輯;為了避免多用戶對同一文檔片段的內(nèi)容進行編輯引發(fā)沖突。各個客戶端可以選定所述協(xié)作文檔中未被其它客戶端選定的文檔片段進行編輯。在具體的實施例中,所述文檔片段在被一個客戶端選定后就通過突出顯示給其他客戶端的方式,讓其它客戶端獲知該文檔片段正在被編輯。在另一個實施例中,所述文檔片段在突出顯示的過程中,還會顯示正在對其編輯的用戶信息,比如在該文檔片段的空白處顯示文字“正在被用戶XX編輯中...”。 而且所述文檔片段在突出顯示的過程中是無法被選定的。步驟304,將編輯后的與所述協(xié)作文檔相關的數(shù)據(jù)發(fā)送到所述服務器;在所述客戶端對一個文檔片段進行編輯的過程中或者過程后,可以將編輯過程中生成的與所述協(xié)作文檔相關的數(shù)據(jù)發(fā)送到所述服務器。所述相關數(shù)據(jù)可以是修改后的最新版本的文檔片段的數(shù)據(jù),也可以是編輯過程中產(chǎn)生的操作數(shù)據(jù)等等??傊?,所述與協(xié)作文檔相關的數(shù)據(jù)可以使得其它客戶端獲知當前客戶端的編輯內(nèi)容。步驟306,所述服務器將所述數(shù)據(jù)發(fā)送給其它客戶端;所述服務器在接收到與所述協(xié)作文檔相關的數(shù)據(jù)后,可以利用將所述數(shù)據(jù)將所述協(xié)作文檔進行更新處理,但是所述服務器也需要將所述數(shù)據(jù)發(fā)送到其它客戶端,以便其它客戶端也能夠將所述協(xié)作文檔進行更新處理。步驟308,其它客戶端接收所述數(shù)據(jù),并且根據(jù)所述數(shù)據(jù)對所述協(xié)作文檔進行更新。當其它客戶端接收到所述數(shù)據(jù)后,就可以獲知當前客戶端的編輯內(nèi)容,并且根據(jù)所述數(shù)據(jù)可以將所述協(xié)作文檔更新并顯示。在一個具體的實施例中,用戶A和用戶B采用所述文檔協(xié)作方法來對一個文字文檔進行協(xié)作編輯,當所述用戶A在對第X頁第2段進行編輯時,可以采用對所述協(xié)作文檔的第X頁第2段突出顯示給用戶B,如圖4A所示的增加陰影的效果,所述突出顯示的方式包括增加陰影、改變背景色、改變前景色、改變文字顏色、 增加包含作者信息的陰影等方式,以便使得用戶B能夠獲知該文檔片段正在被其它用戶編輯,同時用戶B的光標也無法進入所述文檔片段。同理,被用戶B正在編輯的第X頁第3段對于用戶A來講也是呈陰影籠罩效果的。當所述用戶A在對第X頁第2段完成編輯后,又對第X頁第4段進行編輯時,對于用戶B來講,所述協(xié)作文檔的第X頁第2段會解除陰影籠罩效果,并更新顯示為被用戶A修改后的版本,而用戶A當前正在編輯的第X頁第4段又轉變?yōu)殛幱盎\罩效果,也即光標無法進入的鎖定狀態(tài),如圖4B所示。易于思及地,一個客戶端僅能夠選定未被其它客戶端選定的文檔片段來編輯,所以所述文檔協(xié)作方法不會發(fā)生多用戶對同一內(nèi)容進行修改而產(chǎn)生的沖突問題。為了描述本發(fā)明的諸多方面和更多細節(jié),請繼續(xù)參考圖5,其示出了本發(fā)明中的文檔協(xié)作方法在另一個實施例500中的方法流程圖。所述文檔協(xié)作方法500包括步驟501,一個客戶端選定協(xié)作文檔和其它客戶端創(chuàng)建協(xié)作組;當主作者需要就一篇文檔發(fā)起多用戶協(xié)作時,可以通過客戶端來進行選定需要協(xié)作的文檔和邀請其它用戶等操作以便創(chuàng)建協(xié)作組。被選定的協(xié)作文檔可以是文字文檔、電子表格或者電子演示文檔中的一種。其它用戶可以通過其它客戶端直接或者可選擇性地加入所述協(xié)作組。并且主作者在創(chuàng)建所述協(xié)作組的同時可以指定協(xié)作者對該協(xié)作文檔所擁有的權限,比如協(xié)作者A對該協(xié)作文檔擁有查看、編輯、修訂、審閱和批注權限;協(xié)作者B對該協(xié)作文檔擁有查看、編輯權限等等。步驟502,判斷所述協(xié)作文檔是否位于所述服務器中;如果是則步驟503,共享所述協(xié)作文檔;如果不是則步驟504,則將所述協(xié)作文檔上傳至所述服務器中,然后共享給相
關客戶端。因為在創(chuàng)建協(xié)作組時,通常情況下協(xié)作文檔是位于主作者的客戶端中的本地文件;還有可能是主作者臨時新建的一個文檔,此時就需要將這個協(xié)作文檔上傳到服務器中并且共享給相關協(xié)作者的客戶端。在一個實施例中,所述服務器中可以包括有多個用于存儲用戶文檔的空間,比如用于存儲私人文檔的“我的空間”,用于存儲一個小組的共享文檔的“小組共享空間,,和存儲協(xié)作文檔的“協(xié)作共享空間”。所述協(xié)作文檔在未創(chuàng)建協(xié)作組時可能存儲在服務器中只有主作者擁有所有權限的“我的空間”,那么在創(chuàng)建協(xié)作組時就需要將所述協(xié)作文檔從“我的空間”中移動或者復制到“協(xié)作共享空間”,并且根據(jù)主作者指定的權限分配來共享所述協(xié)作文檔給各個協(xié)作者。換句話說,判斷所述協(xié)作文檔是否位于所述服務器中的主要原因是為了滿足共享需求。如果所述協(xié)作文檔雖然存儲于所述服務器但是卻無法共享給其它客戶端,也應當首先將所述協(xié)作文檔移動或者復制到可以共享給其它客戶端的存儲位置。步驟505,將協(xié)作文檔劃分為若干個文檔片段,當前客戶端的光標停留于協(xié)作文檔中一個文檔片段的內(nèi)部時,所述文檔片段被該客戶端選定,在選定過程中,當前客戶端獨占被選定的文檔片段的編輯權限;為了便于協(xié)作,可以將所述協(xié)作文檔劃分為若干個文檔片段,所述文檔片段可以按照頁、標題、章、段、行、句、標號、單元格或者輸入框中的一種或者多種作為單位劃分所述協(xié)作文檔后獲得的文檔片段。如果所述協(xié)作文檔是一個新建空白文檔,則可以將每一個空白行作為一個文檔片段。并且在后續(xù)的編輯過程中,未被編輯的空白行和通過刪除數(shù)據(jù)產(chǎn)生的空白行也可以作為一個文檔片段。本文中所述多個和若干個均包括兩個、三個和三個以上。每個客戶端可以選定所述協(xié)作文檔中未被其它客戶端選定的文檔片段進行編輯。在一個實施例中,所述協(xié)作文檔是一個文字文檔,并且被以段為單位劃分為若干個文檔片段。 當一個客戶端的光標停留于一個段落內(nèi)時,該段落就會被該客戶端所選定,通常情況下,當前客戶端獨占被選定的文檔片段的編輯權限,而其它客戶端此時只能夠擁有此文檔片段的查看權限。此過程的實現(xiàn),可以通過觸發(fā)一個命令類型為設定文檔片段權限的操作數(shù)據(jù)來發(fā)送給服務器,從而使所述服務器對這個文檔片段的相關權限進行分配和管理。當前客戶端獨占的編輯權限可以為廣義的包括常用編輯、修訂、審閱和批注的所有編輯權限,也可以是窄義的不包括修訂、審閱和批注的常用編輯權限。步驟506,根據(jù)編輯時采取的操作命令類型、操作對象和操作內(nèi)容來生成操作數(shù)據(jù);當一個文檔片段被選定以后,選定該文檔片段的客戶端可以自由編輯該文檔片段內(nèi)的相關內(nèi)容,比如可以對所述協(xié)作文檔進行選擇、插入、替換、查找、設定字體格式、設定段落格式、輸入公式、修訂、審閱和批注等等操作。所述客戶端根據(jù)用戶編輯時采取的操作命令類型、操作對象和操作內(nèi)容來生成操作數(shù)據(jù)。所述操作命令類型包括選擇、編輯、修訂、 審閱、批注、保存和設定權限;所述操作對象通常為選定的文檔片段內(nèi)部分或者全體內(nèi)容; 所述操作用戶為當前客戶端;所述操作內(nèi)容包括插入的文字、修訂時替換的文字、批注的文字或者其它操作命令時的具體內(nèi)容。比如用戶A采用的操作是替換第X頁第Y段第三行中的“快了”為“快樂”,則操作命令類型為“替換”、操作對象為第X頁第Y段第三行的“快了” 或者說“快了”對應的存儲位置、操作內(nèi)容為“快樂”和操作用戶為用戶A。當然所述操作數(shù)據(jù)具體包含的信息可能是所述操作命令類型、操作對象、操作用戶和操作內(nèi)容中的一種或者多種,甚至包括其它種信息。需要說明的是,有關選擇、編輯、修訂、審閱、批注和保存的操作命令是用戶編輯時常用的編輯操作,而設定權限的操作命令在一個實施例中包括一個客戶端的光標進入一個文檔片段時觸發(fā)的用于獲取或獨占該文檔片段的編輯權限的相關命令,和一個客戶端的光標離開一個文檔片段時觸發(fā)的用于釋放該文檔片段的編輯權限的相關命令。步驟507,客戶端在選定片段內(nèi)編輯完成后將選定期間所有的操作數(shù)據(jù)封裝為數(shù)據(jù)包發(fā)送給所述服務器;一方面,為了能夠及時地更新一個客戶端對所述文檔的修改給其它客戶端;另一方面,為了簡化更新過程和符合用戶編輯時的習慣。當當前客戶端的光標跳出選定的文檔片段后,可以認為該客戶端對所述文檔片段完成了編輯并了解除選定。所述客戶端則將該用戶在選定期間對該文檔片段進行編輯時產(chǎn)生的所有或大部分操作數(shù)據(jù)封裝為一個數(shù)據(jù)包發(fā)送給服務器。這個數(shù)據(jù)包中同時還可以包括一個命令類型為釋放該文檔片段的編輯權限的操作數(shù)據(jù),用以釋放所述文檔片段的編輯權限。易于聯(lián)想的,如果當前客戶端的光標停留于在所述文檔片段的外部時又落入了另外一個文檔片段的內(nèi)部時,則還會產(chǎn)生獲得另外一個文檔片段的編輯權限的操作數(shù)據(jù)。但是應當意識到,用戶在選定期間產(chǎn)生的操作數(shù)據(jù)通常是指用戶對該文檔片段進行的選擇、編輯、修訂、審閱、批注和保存有關的所有操作數(shù)據(jù),并不包括設定文檔片段權限的操作數(shù)據(jù)。所以關于設定文檔片段權限的操作數(shù)據(jù)并不一定封裝于該數(shù)據(jù)包同時發(fā)送,具體地講,用于獲得另一文檔片段的編輯權限的操作數(shù)據(jù)可以不與該數(shù)據(jù)包同時發(fā)送,用于釋放選定的文檔片段的編輯權限的操作數(shù)據(jù)可以與該數(shù)據(jù)包同時發(fā)送。采用該步驟的更新方式,對于一個用戶來講,當一個被其它客戶端選定的文檔片段被釋放時,會立刻顯示所述文檔片段的最新版本,使得用戶不用觀看其它客戶端對該文檔片段的具體編輯過程,而直接查看該文檔片段的最終結果。
步驟508,所述服務器將所述數(shù)據(jù)包發(fā)送給其它在線聯(lián)機的客戶端,所述服務器在接收到所述數(shù)據(jù)包后,需要將所述數(shù)據(jù)包轉發(fā)給其它客戶端。在一個實施例中,所述服務器中可以存儲有各個客戶端是否在線的狀態(tài)信息,從而選擇性地將所述數(shù)據(jù)包僅發(fā)送給當前在線聯(lián)機的客戶端,而不發(fā)送給不在線的客戶端。步驟509,其它客戶端在接收并解析所述數(shù)據(jù)包,并且根據(jù)解析獲得的操作數(shù)據(jù)對所述協(xié)作文檔處理后進行顯示;由于所述協(xié)作文檔是由多個用戶來協(xié)同編輯的,所以每個用戶都需要獲得其它用戶針對該協(xié)作文檔的創(chuàng)作內(nèi)容。當其他客戶端接收到來自當前客戶端的數(shù)據(jù)包時,其他客戶端將該數(shù)據(jù)包解析為一個或者若干個操作數(shù)據(jù),然后根據(jù)所述操作數(shù)據(jù)處理所述協(xié)作文檔,使得所述協(xié)作文檔更新顯示為最新版本。比如用戶B的客戶端接收到來源于用戶A的一個數(shù)據(jù)包,該數(shù)據(jù)包中包含有的一個操作數(shù)據(jù)內(nèi)容是操作命令類型為“替換”、操作對象為第X頁第Y段第三行的“快了”、操作內(nèi)容為“快樂”和操作用戶為用戶A。貝U用戶B的客戶端根據(jù)所述操作對象,尋找到第X頁第Y段第三行的“快了”,然后采用操作命令類型“替換”,將操作內(nèi)容“快樂”替換所述“快了”,最后利用操作用戶為用戶A來更新該部分相關的作者信息和版本信息。顯然,各個客戶端重復步驟505至步驟509可以進行協(xié)作過程。當協(xié)作完成時,進入步驟510,主作者可以通過客戶端保存所述協(xié)作文檔并且取消所述協(xié)作組。當然,所述協(xié)作文檔的保存工作也可以由其它客戶端來完成。在取消協(xié)作組的過程中,還需要對所述協(xié)作文檔的權限進行重新分配和釋放,比如,釋放其它協(xié)作者的編輯權限而保留查看權限等等。綜上所述,所述文檔協(xié)作方法采用將所述文檔劃分為多個文檔片段,并且使得每個客戶端只能選定所述文檔中未被其它客戶端選定的文檔片段來進行編輯的協(xié)作方式,很有效地解決了其它協(xié)作方式容易產(chǎn)生的多用戶對同一內(nèi)容進行修改發(fā)生沖突的現(xiàn)象。同時所述文檔協(xié)作方法還采用在一個客戶端對一個選定的文檔片段進行編輯后,自動更新該客戶端對該文檔片段進行的相關操作數(shù)據(jù)給其他客戶端的方式,使各個協(xié)作者基本完美實現(xiàn)了實時協(xié)作。而且在更新過程中,傳輸?shù)臄?shù)據(jù)包并不是整個或者部分協(xié)作文檔的數(shù)據(jù)信息, 而是用戶在編輯一個選定文檔片段時的操作數(shù)據(jù),所以需要傳輸?shù)臄?shù)據(jù)量也相對較小,并且其它客戶端在更新顯示時需要的計算量也大大減小。另外需要說明的是,雖然上述描述中都以光標落入和跳出一個文檔片段來作為選定方式,但是所述文檔片段的選定方式并不局限于此種方式,比如在用戶需要對多個文檔片段進行段落格式設定時,可以采用鼠標拖選的方式同時選定若干個文檔片段,但是這些文檔片段必須是未被其他用戶所選定的。當然,在進一步地實施例中,所述文檔協(xié)作方法中還可以加入版本控制機制,能夠根據(jù)不同時間和不同協(xié)作者的修改來呈現(xiàn)所述協(xié)作文檔的版本信息。所述文檔協(xié)作方法還可以嵌入即時通信機制,使得各個協(xié)作者能夠在協(xié)作過程中通過即時通信機制來完成點對點會話或者多點會話,以便討論協(xié)作細節(jié)。上文對本發(fā)明進行了足夠詳細的具有一定特殊性的描述。所屬領域內(nèi)的普通技術人員應該理解,實施例中的描述僅僅是示例性的,在不偏離本發(fā)明的真實精神和范圍的前提下做出所有改變都應該屬于本發(fā)明的保護范圍。本發(fā)明所要求保護的范圍是由所述的權利要求書進行限定的,而不是由實施例中的上述描述來限定的。
權利要求
1.一種文檔協(xié)作方法,采用多個客戶端協(xié)同處理位于服務器上的一個文檔,所述文檔包括多個文檔片段,其特征在于,其包括各個客戶端選定所述文檔中未被其它客戶端選定的文檔片段進行編輯,并將編輯后的與所述文檔相關的數(shù)據(jù)發(fā)送到所述服務器;所述服務器將所述數(shù)據(jù)轉發(fā)給其它客戶端。
2.根據(jù)權利要求1所述的文檔協(xié)作方法,其特征在于,所述文檔片段為按照頁、標題、 章、段、行、句、標號、單元格或者輸入框中的一種或者多種作為單位劃分所述文檔后獲得的文檔片段。
3.根據(jù)權利要求1所述的文檔協(xié)作方法,其特征在于,在一個客戶端的光標停留于所述文檔中的一個文檔片段內(nèi)時,表明該客戶端選定了該文檔片段,在一個客戶端的光標離開了選定的文檔片段時,表明該客戶端對所述文檔片段完成了編輯并解除選定。
4.根據(jù)權利要求3所述的文檔協(xié)作方法,其特征在于,當一個客戶端選定了一個文檔片段后,所述文檔片段在解除選定前無法被其它客戶端選定。
5.根據(jù)權利要求1至4任一所述的文檔協(xié)作方法,其特征在于,各個客戶端在選定的文檔片段內(nèi)完成編輯后才將編輯后的與所述文檔相關的數(shù)據(jù)發(fā)送到所述服務器。
6.根據(jù)權利要求5所述的文檔協(xié)作方法,其特征在于,所述文檔相關的數(shù)據(jù)為編輯過程中產(chǎn)生的操作數(shù)據(jù)。
7.根據(jù)權利要求6所述的文檔協(xié)作方法,其特征在于,一個客戶端在選定的文檔片段內(nèi)進行編輯時,根據(jù)編輯時采取的操作命令類型、操作對象和/或操作內(nèi)容來生成操作數(shù)據(jù),在編輯完成后將選定期間生成的操作數(shù)據(jù)封裝為數(shù)據(jù)包發(fā)送給所述服務器。
8.根據(jù)權利要求7所述的文檔協(xié)作方法,其特征在于,所述操作命令類型包括選擇、編輯、修訂、審閱、批注和保存。
9.根據(jù)權利要求7所述的文檔協(xié)作方法,其特征在于,所述服務器將來自一個客戶端的包含操作數(shù)據(jù)的數(shù)據(jù)包轉發(fā)給其它客戶端,其它客戶端接收并解析所述數(shù)據(jù)包為對應操作數(shù)據(jù),然后利用所述操作數(shù)據(jù)對所述文檔進行處理和更新顯示。
10.根據(jù)權利要求9所述的文檔協(xié)作方法,其特征在于,所述服務器在發(fā)送數(shù)據(jù)包給其它客戶端時,僅發(fā)送給當前在線聯(lián)機的其它客戶端。
11.根據(jù)權利要求1所述的文檔協(xié)作方法,其特征在于,當一個客戶端選擇或者邀請其它客戶端協(xié)作一份文檔時,判斷所述文檔是否位于所述服務器中,如果不是,則將所述文檔上傳至所述服務器中并共享給其它客戶端。
12.根據(jù)權利要求3所述的文檔協(xié)作方法,其特征在于,當一個客戶端選定一個文檔片段后,所述服務器將該文檔片段突出顯示給其它客戶端。
13.根據(jù)權利要求12所述的文檔協(xié)作方法,其特征在于,所述突出顯示包括增加陰影、 改變背景色、改變前景色、改變文字顏色、增加文字信息中的一種或者幾種。
全文摘要
本發(fā)明公開了一種文檔協(xié)作方法,采用多個客戶端協(xié)同處理位于服務器上的一個文檔,所述文檔包括多個文檔片段。所述文檔協(xié)作方法包括各個客戶端選定所述文檔中未被其它客戶端選定的文檔片段進行編輯,并將編輯后的與所述文檔相關的數(shù)據(jù)發(fā)送到所述服務器;所述服務器將所述數(shù)據(jù)轉發(fā)給其它客戶端。與現(xiàn)有技術相比,本發(fā)明中的文檔協(xié)作方法包括有以下優(yōu)點將協(xié)作文檔劃分為若干個文檔片段,同一時間只能由一個客戶端來獨占所述文檔片段的編輯權限,從而不會發(fā)生多個用戶對同一內(nèi)容進行修改時產(chǎn)生沖突。
文檔編號G06F17/24GK102262620SQ20111022243
公開日2011年11月30日 申請日期2011年8月4日 優(yōu)先權日2011年8月4日
發(fā)明者莫小強 申請人:無錫永中軟件有限公司