新四季網

協作創作模式的製作方法

2023-07-03 00:34:36 4

專利名稱:協作創作模式的製作方法
協作創作模式背景傳統的協作編輯往往是按順序進行的。用戶輪流訪問文檔、編輯文檔並存儲他們 的編輯。訪問用戶可在文件上設置鎖以在該訪問用戶正在編輯該文檔時禁止其他用戶編輯 該文檔。這樣的迭代編輯過程會引起延遲,因為每一用戶在編輯文檔時要等待輪到自己。另 外,迭代編輯過程難以管理。例如,每一用戶需要跟蹤哪個人正在編輯文檔的哪些部分,文 檔的哪一版本是最新近的,以及該用戶何時會輪到。在其它類型的傳統協作編輯中,用戶可以編輯同一文檔的共享副本。例如,由華盛 頓州雷德蒙德市的微軟公司提供的ONENOTE 筆記程序中,多個用戶可在共享的筆記本 樣式文檔中同時添加、移動和刪除對象。在這樣的產品中,對文檔的改變往往實時地或者近 似實時地可為各用戶所用。針對這些和其它考慮作出了本發明。概述提供本概述以便用簡化形式介紹在下面的詳細描述中進一步描述的一些概念。本 概述不旨在標識所要求保護的主題的關鍵特徵或基本特徵,也不旨在幫助確定所要求保護 的主題的範圍。—般而言,協作創作應用提供一種其中二個或多個用戶可以同時編輯文檔的創作 環境。該創作應用適於有選擇地被配置為處於自由共享每一用戶的編輯的公共操作模式中 或者被配置為處於保持每一用戶的編輯私有的私有操作模式中。根據各方面,無論選擇哪個操作模式,在文檔的每一用戶副本與主副本之間自動 地同步元數據更新。然而,內容更新的可用性取決於創作應用被配置為所處的操作模式。在一個實施例中,被配置為處於公共操作模式中的創作應用周期性地與主副本共 享由該創作應用生成的內容和元數據更新兩者。在另一個實施例中,被配置為處於私有操 作模式中的創作應用僅周期性地與主副本共享由該創作應用生成的元數據更新。根據其它方面,創作應用即使在該創作應用不能與文檔的主副本同步內容或元數 據時(例如,在創作應用離線時)也能編輯該文檔的用戶副本。在一個實施例中,創作應用 在離線時可被配置為處於公共或私有操作模式中。通過閱讀下面的詳細描述與審閱相關附圖,這些和其它特徵與優點將是顯然的。 應當理解,上述一般描述和下面的詳細描述都僅是說明性的且不限制所要求保護的各方附圖簡述

圖1是示出一個具有作為本發明的發明性方面的示例的特徵的示例創作系統的 示意框圖;圖2是示出根據本發明的原理的圖1的創作系統的示意框圖,其中存儲在第一計 算設備上的文檔可包括內容和元數據;圖3是示出根據本發明的原理的 檔的示意框圖,該文檔具有五個數據單元,其 中第二個被鎖住;
圖4是示出根據本發明的原理被配置為實現創作環境的用戶計算系統的示意框 圖;圖5是示出根據本發明的原理的示例同步過程的操作流的流程圖,通過該過程可 將文檔的用戶副本與文檔的主副本同步;圖6是根據本發明的原理的創作系統的示意框圖,在該系統中創作應用被配置為 處於公共操作模式中;圖7是示出根據本發明的原理的示例性公共模式同步過程的操作流的流程圖,在 創作應用被配置為處於公共操作模式中時創作應用可通過該過程將文檔的用戶副本與文 檔的主副本同步;圖8是根據本發明的原理的創作系統的示意框圖,在其中創作應用被配置為處於 私有操作模式中;圖9是示出根據本發明的原理的示例私有模式同步過程的操作流的流程圖,在創 作應用被配置為處於私有操作模式中時創作應用可通過該過程將文檔的用戶副本與文檔 的主副本同步;圖10是示出根據本發明的原理的示例性切換過程的操作流的流程圖,創作應用 可通過該過程被配置為處於不同的操作模式中;圖11-19是根據本發明的原理在協作創作會話期間的不同時刻存儲在存儲設備、 第一用戶計算設備、和第二用戶計算設備上的高速緩存的示意框圖,在該協作創作會話期 間第一和第二用戶計算設備的第一用戶和第二用戶分別同時編輯一個文檔;圖20是示出具有作為根據本發明的原理的發明性方面的示例的特徵的用戶計算 設備的創作系統的示意框圖;圖21是示出根據本發明的原理的示例性創作過程的操作流的流程圖,用戶計算 設備可通過該過程將文檔的用戶副本與文檔的主副本同步;以及圖22是示出根據本發明的原理的示例性轉換過程的操作流的流程圖,用戶計算 設備可通過該過程在離線編輯文檔的用戶副本之後將用戶副本與文檔的主副本同步。詳細描述在下面的詳細描述中,對形成其一部分的附圖進行參考,並且在這些附圖中作為 說明示出特定的實施例或示例。儘管在結合在計算機系統上的作業系統上運行的應用程式 執行的程序模塊的一般上下文中描述本發明,但本領域的技術人員將認識到,本發明還可 結合其它程序模塊來實現。可在不脫離本發明的本質或範圍的情況下組合本文所述的實施 例和利用其它實施例。因此下面的詳細描述不是在限制意義上採用的,而本發明的範圍是 由所附的權利要求書及其等價方案限定的。本發明的實施例提供多個用戶可協作創作文檔的環境。圖1示出具有作為本發明 的發明性方面的示例的特徵的示例創作系統100。創作系統100包括存儲文檔150的主副 本的存儲設備120。在一個實施例中,存儲設備120可包括計算設備。在另一個實施例中, 存儲設備120可包括一個或多個存儲設備(例如,伺服器計算設備的網絡)。創作系統100還可包括至少一個用戶計算設備110,它可用通信方式耦合至存儲 設備120。每一用戶計算設備110可通過創建文檔150的用戶副本155並編輯用戶副本155 來編輯文檔150。在各用戶計算設備110周期性地將要與其它用戶計算設備共享的更新發送到存儲設備120並且周期性從存儲設備120獲得來自其它用戶計算設備的更新時同步文 檔150的各用戶副本155。作為本文使用的術語,用戶計算設備110包括被配置為從文檔的主副本獲得要創 作的文檔的用戶副本的任何計算設備。用戶計算設備110可以與存儲設備120不同或者可 以包括在存儲設備120上實現的不同用戶帳戶。在一個實施例中,用作一個文檔的存儲設 備120的計算設備可用作不同文檔的用戶計算設備110,反之亦然。在圖1所示的示例中,四個用戶計算設備110A、110B、110C和IlOD以通信方式耦 合至存儲設備120。然而,在其它實施例中,任何數量的計算設備110可耦合至存儲設備 120。在所示的示例中,每一用戶計算設備110A、110B、110C、110D可將由該用戶計算設備的 用戶生成的更新發送至存儲設備120並且可向存儲設備120請求由其他用戶計算設備的 用戶生成的更新。在一個實施例中,存儲設備120可以是伺服器計算設備而用戶計算設備 11(^、11( 、110(、1100可以是客戶機計算設備。如圖2所示,存儲在存儲設備120上的文檔150的主副本可包括內容152和元數 據154。在一些實施例中,元數據154可以與內容152分開存儲。例如,內容152可存儲在 文檔150中而元數據154可存儲在與文檔150分開的表(未示出)中。然而,在其它實施 例中,元數據154可存儲在文檔150內。用戶計算設備110上的創作應用130處理和操作文檔150的用戶副本155的相應 內容和元數據。一般而言,創作應用130可以獨立於對元數據154的更新同步對內容152 的更新。例如,可在存儲設備120與各用戶計算設備110之間自動地同步元數據更新154, 而可在每一用戶請求時同步來自相應用戶計算設備110的內容更新152。作為本文使用的術語,元數據更新指對要創作的文檔的元數據154所作的任何添 加、刪除和/或修訂。文檔元數據的非限制性示例包括內容鎖、存在信息、和其它這樣的數 據。如將在本文討論的,內容鎖禁止沒有該鎖的用戶編輯該鎖內的內容。存在信息指示哪 些用戶已經指示了編輯要創作的文檔的意圖。在一些實施例中,可在存儲設備120與用戶計算設備110之間以周期性時間間隔 交換元數據。在一個實施例中,可每隔幾秒鐘交換一次元數據。然而,元數據交換可按較短 或較長的時間間隔發生。在其它實施例中,可在用戶執行定稿動作(例如保存文檔)時交 換元數據。作為本文使用的術語,內容更新指對要創作的文檔的實質內容152所作的任何添 加、刪除和/或修訂。例如,文字處理文檔的內容更新可包括添加的段落(即或其章節)、刪 除的段落(即或其章節)、和/或修訂的段落(即或其章節)。在另一個實施例中,演示文 檔的內容更新可包括添加的、刪除的和/或修訂的圖片、文本、動畫、聲音、和其它這樣的數 據對象。在一些實施例中,僅在用戶請求時交換內容。例如,在一個實施例中,用戶計算設 備110之一的用戶可請求與其他用戶共享內容改變。在另一個實施例中,用戶計算設備110 之一的用戶可請求查看由其他用戶作出的內容改變。然而,在其它實施例中,可自動地交換 內容。參考圖3,內容鎖通過指示文檔的哪些部分已經被另一個用戶要求保護來禁止編 輯衝突。在一些實施例中,內容鎖可以防止用戶編輯文檔中已經被另一個用戶要求保護的部分。然而,在其它實施例中,用戶可以選擇打破內容鎖並且編輯文檔的該部分。在這樣的 情形中,該鎖可以警告該用戶在編輯被鎖的章節時會引起衝突。圖3是具有五個數據單元210、220、230、240、250的文檔200的示意框圖。在一個 實施例中,文檔200是文字處理文檔而數據單元210-250是文本段落。在另一個實施例中, 文檔200是演示文檔而第一數據單元210是標題或主題標目,第二數據單元220是圖片或 其它數據對象,以及其餘的數據單元230、240、250是文本框。第一用戶可以在文檔200的數據單元210-250中的一個或多個周圍生成鎖。在圖 3所示的示例中,第一用戶已經鎖住了第二數據單元220,如交叉影線所示。通過生成內容 鎖,第一用戶已經指示第一用戶想要編輯第二數據單元220。例如,第一用戶可以在第一用 戶主動編輯數據單元220時生成該鎖。在另一個實施例中,第一用戶可以生成該鎖並且隨 後在稍後編輯數據單元220。在其它實施例中,在第一用戶編輯文檔時自動生成該鎖。如上 所述,管理文檔200的創作應用可防止除第一用戶之外的用戶編輯被鎖的數據單元220。一般而言,由第一用戶生成的內容鎖在該鎖存在期間向所有訪問該文檔的其他用 戶顯示。在一個實施例中,第一用戶也可以查看內容鎖。鎖可以使用不同類型的指示物來 顯示。例如,在一個實施例中,被鎖數據單元的背景可以被著色、加陰影或加圖案(例如,見 圖3的數據單元220)。在另一個實施例中,被鎖單元的內容(例如,文本、圖片、形狀、或其 它數據對象)可被著色、加陰影或加圖案。在又一個實施例中,可毗鄰於被鎖數據單元顯示 框、括號、或符號來指示該鎖。鎖元數據可以用各種不同格式來存儲。例如,鎖元數據可用表格式來存儲。存在 元數據也可以用各種格式來存儲。例如,存在元數據可以用表來存儲。然而,在另一個實施 例中,鎖和存在元數據可用不同格式來存儲。—般而言,具有作為根據本發明的原理的發明性方面的示例的特徵的創作環境可 在用戶計算設備(例如,個人計算機、伺服器計算機、筆記本計算機、PDA、智慧型電話、或任何 其它這樣的計算設備)上實現。這裡參考圖4描述一個被配置為實現創作環境的用戶計算 系統400的非限制性實施例。在圖4中,用於實現本發明的原理的示例性計算系統400包括用戶計算設備如用 戶計算設備410。在基本配置中,用戶計算設備410 —般包括至少一個處理單元415用於執 行存儲在系統存儲器420中的應用和程序。取決於計算設備410的確切配置和類型,系統 存儲器420可包括但不限於,RAM、ROM、EEPR0M、快閃記憶體存儲器、CD-ROM、數字多功能盤(DVD) 或其它光存儲設備、磁盒、磁帶、磁碟存儲或其它磁存儲設備、或者其它存儲器技術。系統存儲器420 —般存儲適用於控制計算設備410的操作的作業系統422,諸如華 盛頓州雷德蒙德市的微軟公司的WINDOWS 作業系統。系統存儲器420還可包括其中可 以存儲文檔的用戶副本427的文檔高速緩存426。文檔的元數據429也可存儲在用戶高速 緩存426中。系統存儲器420還可存儲一個或多個軟體應用,諸如用於創建和編輯文檔的創作 應用424。適於根據本發明的原理的用於創作文檔的創作應用424的一個非限制性示例是 來自華盛頓州雷德蒙德市的微軟公司的MICROSOFT OFFICE WORD創作軟體。創作應用 的其它非限制性示例包括POWERPOINT 演示軟體和VISIO 繪製和圖表製作軟體,它 們都來自華盛頓州雷德蒙德市的微軟公司。
計算設備410還可具有諸如鍵盤、滑鼠、筆、語音輸入設備、觸摸輸入設備等輸入 設備430用於輸入和操作數據。還可包括諸如顯示屏幕、揚聲器、印表機等的輸出設備435。 這些輸出設備435在本領域是眾所周知的並且在此不詳細討論。計算設備410還可包含通信連接440,它允許設備410與其它計算設備通信,例如 通過分布式計算環境中的網絡(例如,內聯網或網際網路)與圖1的存儲設備120通信。作 為示例而非限制,通信設備介質440包括接線介質如接線網絡或直接線連接和無線介質如 聲音、RF、紅外和其它無線介質。參考圖5-19,創作應用與存儲設備交換內容和元數據所使用的同步過程可根據創 作應用的用戶所選擇的保密模式而不同。圖5是示出示例性同步過程500的流程圖,在用 戶計算設備110上實現的創作系統100可以通過該過程將要創作的文檔的用戶副本155與 存儲在存儲設備120上的文檔的主副本150同步。同步過程500在開始模塊502處初始化 和開始並且繼續到第一更新操作504。第一更新操作504將用戶副本155的元數據與主副本150的元數據同步。在一些 實施例中,第一更新操作504在不需要與用戶交互的情況下同步元數據。例如,第一更新操 作504可在存儲設備120和用戶計算設備110之間提供按周期性時間間隔進行的元數據的 交換。在一個實施例中,第一更新操作504每隔若干秒提供一次元數據的交換。然而,在其 它實施例中,第一更新操作504可提供按較短或較長的時間發生的元數據的交換。獲得操作506周期性地檢查存儲設備120的存儲高速緩存125以確定是否有來自 其他用戶的任何內容更新可用。如果有這樣的內容更新可用,則獲得操作506獲得這些內 容更新。在一個實施例中,獲得操作506使得用戶設備110輪詢存儲設備120並且從存儲 高速緩存125拉取任何內容更新。在另一個實施例中,獲得操作506使得存儲設備120應 請求向用戶設備110發送內容更新。然而,在其它實施例中,存儲設備120在沒有來自用戶 設備110的提示的情況下發送任何可用的內容更新至用戶設備110。確定模塊508確定創作應用130被配置為所處的操作模式(例如公共或私有)。例 如,確定模塊508可確定創作應用被配置為處於公共操作模式中。一般而言,創作應用130 在公共模式中操作時,創作應用130 —般與存儲設備120共享內容更新。在一個實施例中, 在公共模式中操作的創作應用130在完成定稿動作(例如,用戶保存文檔、自動保存功能激 活等)時發送內容更新至存儲設備120。在另一個實施例中,確定模塊508可確定創作應用130被配置為處於私有操作模 式中。一般而言,在私有模式中操作的創作應用130—般不與存儲設備120共享內容更新。 在一個實施例中,在私有模式中操作的創作應用130即使在完成定稿動作(例如,用戶保存 文檔、自動保存功能激活等)時也不將內容更新發送至存儲設備120。在這樣的實施例中, 由創作應用130生成的內容更新僅在用戶切換到公共操作模式時才會被發送到存儲設備 120。因此,如果確定模塊508確定創作應用130被配置為處於公共操作模式中,則發送 操作510發送由創作應用130生成的內容更新至存儲設備120。同步過程500在停止模塊 512處完成並結束。然而,如果確定模塊508確定創作應用130被配置為處於私有操作模式 中,則同步過程500繼續至停止模塊512而不實現發送操作510。圖6是被配置為實現公共模式同步循環的創作系統600的示意框圖。創作系統600—般包括存儲設備620和一個或多個用戶設備610。要創作的文檔的內容652和元數據 654被存儲在存儲設備620上的存儲器625中。在圖6所示的示例中,第一用戶設備610A 和第二用戶設備610B都訪問存儲在存儲設備620上的內容652和元數據654。用戶計算設 備610A、610B各自分別包括本地高速緩存635A、635B,並分別包括要創作的文檔的用戶副 本 655A、655B。每一用戶計算設備610的本地高速緩存635被配置為存儲發布模塊632、保護模塊 634、獲得模塊636、集成模塊638、和元數據同步模塊639。保護模塊634被配置為將內容 改變存儲至本地高速緩存635。在一個實施例中,保護模塊634觸發發布模塊632的激活。 發布模塊632被配置為將來自本地高速緩存635的內容更新提供(例如,推送、發送等)至 存儲設備620的存儲存儲器625。在一個實施例中,發布模塊632被配置為在本地高速緩存 635中對由用戶副本655生成的內容更新排隊以用於發送至存儲設備620。獲得模塊636被配置為從存儲設備620的存儲存儲器625獲得(例如,拉取、接收 等)內容更新。在一個實施例中,獲得模塊636被配置為在用戶設備610的本地高速緩存 635中對從存儲存儲器625獲得的內容更新排隊。集成模塊638被配置為將這些內容改變 實例化到文檔的用戶副本655中。在一個實施例中,集成模塊638被配置為指示內容更新 的可用性並且接收用戶對審閱、忽略、或實例化這些改變的選擇。元數據同步模塊639同步要創作的文檔的用戶副本655與存儲在存儲設備620上 的主副本之間的元數據更新。在一個實施例中,元數據同步模塊639在存儲設備620與用 戶設備610之間以定期的時間間隔發送元數據更新。在另一個實施例中,元數據同步模塊 639在元數據更新變為可用時發送元數據更新。因為在存儲設備620與用戶設備610之間 定期地共享這些元數據更新,在用戶設備610的本地高速緩存635中存儲的元數據一般反 映出要創作的文檔的主副本的元數據的當前狀態。圖7是示出公共模式同步過程700的示例操作流的流程圖,創作應用通過該過程 可以將正在由該創作應用編輯的文檔與該文檔的主副本同步。公共模式同步過程700在開 始模塊702處初始化和開始並且繼續至創作操作704,該操作根據用戶指令編輯文檔。例 如,創作操作704可查明由用戶執行的鍵盤敲鍵並且實現相應的編輯指令。在另一個實施 例中,創作操作704可查明由用戶執行的滑鼠點擊並且實現相應的編輯指令。第一存儲操作706周期性地收集任何元數據更新並且將它們保存至用戶設備的 本地高速緩存。因此,萬一創作應用崩潰或者以其它方式出錯,元數據更新是受到保護的。 在一個實施例中,第一存儲操作706在用戶提供將改變保存至文檔的指令時保存元數據。 在另一個實施例中,第一存儲操作706在自動保存功能激活時存儲元數據。在另一個實施 例中,第一存儲操作706無論用戶交互的情況如何都以定期的時間間隔(例如,每隔若干毫 秒、秒、分等)保存元數據。第一發布操作708周期性地將存儲在本地高速緩存中的任何元數據更新發送至 存儲設備。一般而言,第一發布操作708在不需要與用戶進行任何交互的情況下自動地發 送元數據更新。例如,第一發布操作708可按定期的時間間隔(例如,每隔若干毫秒、秒、分 等)發送對元數據的改變(例如,軟體增量)。在另一個實施例中,第一發布操作708在本 地高速緩存中的元數據更新可用時發送這些元數據更新至存儲設備。在另一個實施例中, 第一發布操作708應存儲設備請求發送元數據更新。
第二存儲操作710周期性地將任何內容更新保存至用戶設備的本地高速緩存。 此,萬一創作應用崩潰或者以其它方式出錯,內容更新是得到保護的。在一個實施例中,第 二存儲操作710在第一存儲操作706存儲元數據更新時保存內容更新。然而,在其它實施 例中,第二存儲操作710可在與第一存儲操作706存儲元數據更新的不同時間將內容改變 保存到本地高速緩存。在一個實施例中,第二存儲操作710可將對內容的改變保存在隊列 或其它有序列表中以便使內容更新能夠按照生成它們的次序來順序發送。第二發布操作712發送內容更新至存儲設備。在一個實施例中,第二發布操作712 在用戶提供共享的指令(例如,用戶明確地執行發布動作、實現創作應用的自動保存功能 等)時將內容更新發送至存儲設備。在另一個實施例中,第二發布操作712在可從創作應 用得到內容更新時發送這樣的內容更新。在另一個實施例中,第二發布操作712在不要求 與用戶進行任何交互的情況下自動地發送內容更新。在又一個實施例中,第二發布操作712 可應存儲設備請求發送內容更新。第一實例化操作714周期性地從存儲設備獲得元數據更新並且自動地將這些元 數據更新實例化到創作應用正在創作的文檔中。例如,第一具體化操作714可在定期的時 間間隔(例如,每隔若干毫秒、秒、分等)獲得由其它用戶生成的元數據更新。在另一個實 施例中,第一實例化操作714在元數據更新可用時獲得這些元數據更新。通常,不要求與用 戶進行交互來實例化這些元數據更新。例如,任何新生成的鎖將在獲得這些元數據更新時 自動向用戶顯示。第二實例化操作716周期性地從存儲設備獲得內容更新並且使這些內容更新可 供用戶使用來查看和/或進行實例化。例如,第二實例化操作716可在定期的時間間隔(例 如,每隔若干毫秒、秒、分等)獲得由其他用戶生成的內容更新。在另一個實施例中,第二實 例化操作716在內容更新可用時獲得這些內容更新。通常,創作應用向用戶指示內容更新 可用並且使用戶能夠選擇是要審閱、實例化還是忽略這些內容更新。公共模式同步過程700 在停止模塊718處完成並結束。圖8是被配置為實現私有模式同步循環的創作系統800的示意框圖。創作系統 800 一般包括存儲設備820和一個或多個用戶設備810。要創作的文檔的內容852和元數據 854存儲在存儲設備820上的存儲器825中。在圖8所示的示例中,第一用戶設備810A和 第二用戶設備810B正在並發地訪問存儲在存儲設備820上的內容852和元數據854。用戶 計算設備810A、810B各自包括本地高速緩存835A、835B和要創作的文檔的用戶副本855A、 855B。每一用戶計算設備810的本地高速緩存835被配置為存儲發布模塊832、保護模塊 834、獲得模塊836、集成模塊838、和元數據同步模塊839。保護模塊834被配置為將來自用 戶副本855的內容更新存儲到本地高速緩存835用於稍後發送到存儲設備820的存儲存儲 器825。在一個實施例中,保護模塊834被配置為根據生成內容更新的次序存儲這些更新。 例如,保護模塊834可被配置為在本地高速緩存835中對由用戶副本855生成的內容更新 排隊以用於發送到存儲設備820。發布模塊832被配置為將存儲在本地高速緩存中的內容改變發送至存儲設備 820。一般而言,發布模塊832在它接收到發布內容改變的指令時共享這些內容改變。例如, 如果用戶通過創作應用的用戶界面選擇發布選項,則發布模塊832可將內容改變發送至存
11儲設備820。保護模塊834不自動觸發發布模塊832。獲得模塊836可被配置為從存儲設備820的存儲存儲器825獲得(例如,拉取、接 收等)內容更新。在一個實施例中,獲得模塊836被配置為在本地高速緩存835中對從存 儲存儲器825獲得的內容更新排隊以用於稍後實例化到要創作的文檔的用戶副本855中。 集成模塊838被配置為促進將內容改變實例化到文檔的用戶副本855中。例如,集成模塊 838可被配置為向用戶指示新的內容更新可用於實例化。在另一個實施例中,集成模塊838 可被配置為將內容更新自動地實例化到要創作的文檔的用戶副本855中。元數據同步模塊839在要創作的文檔的用戶副本855與存儲在存儲設備820上的 主副本之間同步元數據更新。在一個實施例中,元數據同步模塊839與上面參考圖6所述 的元數據同步模塊639相同。然而,在其它實施例中,元數據同步模塊839可用其它方式被 配置為在用戶設備810與存儲設備820之間同步元數據。圖9是示出用於私有模式同步過程900的示例操作流的流程圖,創作應用可通過 該過程將創作應用正在編輯的文檔與該文檔的主副本同步。私有同步過程900在開始模塊 902處初始化和開始,並且繼續至創作操作904,該操作按照用戶指令編輯要創作的文檔。 例如,創作操作904可以與上面參考圖7描述的創作應用704相同。第一存儲操作906周期性地將在實現創作操作904時生成的任何元數據更新保存 到本地高速緩存。在一個實施例中,第一存儲操作906與上面參考圖7描述的公共模式同步 過程700的第一存儲操作706相同。然而,在其它實施例中,可使用不同的過程來存儲元數 據更新。第一發布操作908周期性地將來自本地高速緩存的元數據更新發送至存儲設備。 在一個實施例中,第一發布操作908與上面參考圖7所述的公共模式同步過程700的第一 發布操作708相同。然而,在其它實施例中,可使用不同的過程來共享元數據更新。第二存儲操作910周期性地將在用戶設備上實現創作操作904時生成的任何內容 更新保存到用戶設備的本地高速緩存。一般而言,第二存儲操作910在用戶執行數據保護 動作(例如,選擇保存文檔)時發生。在一個實施例中,第二存儲操作910與上面參考圖7 所述的公共模式同步過程700的第二存儲操作710相同。然而,在其他實施例中,可使用不 同的過程來存儲內容更新。確定模塊912確定是否將內容更新上載到存儲設備。在一個實施例中,確定模塊 912確定用戶是否已經提供用於共享內容改變的任何指令。例如,確定模塊912可確定用戶 是否已經在創作應用的用戶界面上選擇了「發布」按鈕。如果確定模塊912確定用戶已經 提供了共享內容改變的指令,則第二發布操作914將這些內容改變發送到存儲設備。然而, 如果確定模塊912確定用戶已經提供了共享內容的指令,則私有同步過程900跳過第二發 布操作914並且繼續至第一實例化操作916。第一實例化操作916周期性地從存儲設備獲得元數據更新並且自動地將這些元 數據更新實例化到創作應用正在創作的文檔中。例如,第一實例化操作916可與上面參考 圖7所述的公共模式同步過程700的第一實例化操作714相同。然而,在其它實施例中,可 使用其它過程從存儲設備獲得元數據。第二實例化操作918周期性地從存儲設備獲得內容更新並且使得這些內容更新 可供用戶查看和/或進行實例化使用。例如,第二實例化操作918可以與上面參考圖7所 述的公共模式同步過程700的第二實例化操作716相同。然而,在其它實施例中,可使用其它過程從存儲設備獲得內容。私有模式同步過程900在停止模塊920處完成並結束。圖10是示出用於切換過程1000的操作流的流程圖,創作應用通過該過程可有選 擇地被配置為處於公共操作模式或私有操作模式中。切換過程1000在開始模塊1002處初 始化和開始並且繼續至接收操作1004。接收操作1004獲得對特定的操作模式的選擇。在 一個實施例中,接收操作1004可查明通過用戶界面工具的模式選擇。例如,接收操作1004 可確定用戶已經點擊了創作應用用戶界面的用戶界面的切換按鈕。切換操作1006將創作應用配置成所選擇的操作模式。例如,切換操作1006可將 目前被配置為處於私有操作模式中的創作應用配置成處於公共操作模式中。在這樣的實施 例中,所存儲的內容改變可自動地與文檔的主副本共享。在其它實施例中,切換操作1006 可將目前被配置為處於私有操作模式中的創作應用配置成處於公共操作模式中。在這樣的 實施例中,創作應用開始扣留來自主副本的內容改變。在一個實施例中,創作應用開始將內 容改變存儲在本地高速緩存存儲器中。指示操作1008將創作應用的用戶界面配置為向用戶指示所選擇的操作模式。例 如,如果用戶選擇讓創作應用在公共模式中運行,則指示操作1008可向用戶指示正在與其 他用戶共享內容改變。如果用戶選擇讓創作應用在私有模式中運行,則指示操作1008可向 用戶指示不與其他用戶共享內容改變。切換過程1000在停止模塊1010處完成並結束。參考圖11-19,可通過預演一個示例應用來更好地理解本發明的原理。圖11-19 表示在協作創作會話期間向存儲在存儲設備1120上的文檔的主副本、第一創作應用1130A 正在編輯的文檔的第一用戶副本、和第二創作應用1130B正在編輯的第二用戶副本所作的 改變。還示出分別存儲在用戶計算設備的本地高速緩存1135A、1135B中的內容和元數據更 新。在一個實施例中,第一創作應用1130A和第二創作應用1130B並發地編輯該文檔。然 而,在其它實施例中,第一和第二創作應用1130A、1130B可以使用相同的過程在不同的時 間編輯(即訪問)該文檔。在圖11中,第一創作應用1130A被配置為處於公共操作模式中並且第二創作應用 1130B被配置為處於私有操作模式中。然而,在其它實施例中,每一創作應用1130可被配置 為處於任何所需的操作模式中。因為第一創作應用1130A正在公共模式中操作,第一創作 應用1130A—般遵循上面參考圖7所述的公共模式同步過程700。因為第二創作應用1130B 正在私有模式中操作,所以創作應用1130B—般遵循上面參考圖9所述的私有模式同步過 程 900。文檔的主副本具有對應的主鎖表。為了方便,在圖11-19所示的示例中,將主鎖表 作為文檔的主副本的一部分顯示。然而,在其它實施例中,主鎖表可與文檔的主副本分開存 儲。同樣,為易於理解,關聯於文檔的每一用戶副本的鎖在圖11-19中作為用戶副本的一部 分示出。然而,在其它實施例中,元數據可與每一用戶副本分開存儲。在所示的示例中,主副本的內容包括包含文本「你好世界」的第一數據單元和包含 圍繞該第一數據單元的第一鎖El的主副本的元數據。第一鎖El被指派給第一創作應用 1130A的第一用戶。因此,第一創作應用1130A可編輯第一數據單元。其它創作應用諸如第 二創作應用1130B被禁止編輯第一數據單元。在用戶設備的本地高速緩存1135A、1135B中 反映出主副本的內容和元數據。在圖11中,第一創作應用1130A和第二創作應用1130B各自訪問和開始編輯文檔的主副本。第一創作應用1130A編輯文檔的第一用戶副本以如由刪除線批註指示地刪除詞 語「你好」(見圖7的創作操作704)。第二創作應用1130B編輯文檔的第二用戶副本以添 加包含文本「再見世界」的第二數據單元(見圖9的創作操作904)。圍繞第二數據單元生 成被指派給第二用戶的第二鎖E2。圖12分別示出公共模式同步過程700和私有模式同步過程900的第一存儲操作 706、906的效果。創作應用1130A、1130B每一個將在文檔的相應用戶副本中生成的任何元 數據改變保存到相應的本地高速緩存1135A、1135B中用於發送到存儲設備1120。在所示的 示例中,第一創作應用1130A尚未添加任何新鎖或者釋放第一鎖E1。因此,沒有元數據的改 變被存儲到圖12中的本地高速緩存1135A中。然而,第二創作應用1130B已經添加了圍繞 新數據單元的第二鎖E2。因此,第二鎖E2被存儲在本地高速緩存1135B的元數據表中。圖13分別示出公共模式同步過程700和私有模式同步過程900的第一發布操作 708,908的效果。相應的本地高速緩存1135A、1135B各自將所存儲的元數據發送到存儲設 備1120。在所示的示例中,第二本地高速緩存1135B將新鎖E2發送到存儲設備1120。然 而,第一本地高速緩存1135A沒有元數據改變要發送到存儲設備1120。根據公共模式同步過程700的第二存儲操作710,第一創作應用1130A在用戶 (例如,明確地或者隱含地)提供存儲內容的指令時將任何內容改變保存到本地高速緩存 1135A用於發送到存儲設備1120。根據公共模式同步過程700的第二發布操作712,存儲 內容的指令觸發本地高速緩存1135A將內容更新發布到存儲設備1120。在所示的示例中, 從第一數據單元移除詞語「你好」被存儲在圖12的本地高速緩存1135A中並且被發送到圖 13中的存儲設備1120。與此相對地,根據私有模式同步過程900的第二存儲操作910,第二創作應用 1130B將任何內容改變保存到本地高速緩存1135B。在圖12所示的示例中,在本地高速緩 存1135B中反映出第二數據單元(「再見世界」)的添加。然而,根據私有模式同步過程900 的確定模塊912,本地高速緩存1135B僅在用戶提供發布指令時才將更新後的內容發送到 存儲設備1120。在圖13所示的示例中,沒有提供發布指令並且第二數據單元沒有被發送到 存儲設備1120。圖14和15分別示出公共模式同步過程700和私有模式同步過程900的第一實例 化操作714、916的效果。每一創作應用1130A、1130B從存儲設備1120獲得元數據更新並 且自動將這些元數據更新實例化到文檔的相應用戶副本中。在所示的示例中,從存儲設備 1120上的文檔的主副本拉取第二鎖E2並且將它保存到第一用戶設備的第一本地高速緩存 1135A中,如圖14所示。第一創作應用1130A自動將第二鎖E2實例化到圖15中的文檔的 第一用戶副本中。然而,由於第一創作應用1130A沒有對第一用戶副本的元數據作出任何 改變,因此沒有對與第二用戶副本和第二本地高速緩存1135B相關聯的元數據作出改變, 因為該元數據已經反映出與文檔的主副本相關聯的元數據。另外,在圖14和15中分別示出公共模式同步過程700和私有模式同步過程900的 第二實例化操作716、918的效果。每一創作應用1130A、1130B從存儲設備1120獲得內容更 新並且使得這些內容更新可供用戶查看和/或進行實例化。在所示的示例中,第二本地高 速緩存1135B沒有將任何內容改變轉發給存儲設備1120。因此,第一本地高速緩存1135A 和第一創作應用1130A在圖14和15中沒有從存儲設備1120獲得任何內容更新。
然而,由於第一創作應用1130A已經共享了內容改變,第二本地高速緩存1135B從 存儲設備1120獲得從第一數據單元刪除詞語「你好」的內容更新(見圖14)。一創作應用 1130B將來自本地高速緩存1135B的內容更新實例化到圖15中的文檔的用戶副本中。在一 個實施例中,第二創作應用1130B的用戶界面自動地將內容更新實例化到文檔的第二用戶 副本中(見圖15)。然而,在另一個實施例中,第二創作應用1130B向第二用戶指示內容更 新可用。在這樣一個實施例中,第二創作應用1130B在第二用戶提供實例化的指令時實例 化該內容更新。在圖16中,第二用戶將第二創作應用1130B切換到公共模式配置中。在一個實施 例中,第二用戶選擇第二創作應用1130B的用戶界面上的用於切換第二創作設備1130B的 操作模式的按鈕。然而,在其它實施例中,第二用戶可用其它方式提示第二創作應用1130B 切換到公共操作模式中。在切換操作模式之後,第二創作應用1130B可遵循上面參考圖7 描述的公共模式同步過程700開始。例如,第二創作應用1130B可開始共享內容更新以及 元數據更新。在一個實施例中,還共享以前存儲的內容更新。在一些實施例中,將創作應用從私有操作模式切換到公共操作模式不會使以前存 儲的內容自動地與存儲設備共享。相反,切換創作應用1130的模式改變本地高速緩存1135 以後的行為。例如,當創作應用1130被配置為處於公共模式中時用戶選擇「保存」文檔,則 內容改變將被自動地發送到存儲設備1120。在一個實施例中,任何以前存儲的改變也與新 的內容改變一起發送。然而,在其它實施例中,以前存儲的改變可在創作應用1130被切換 到公共模式中時被自動發送到存儲設備1120而不需要另外的用戶交互。在圖16所示的示例中,第二創作應用1130B已經被切換到公共模式中。用戶在切 換創作應用1130B之後還沒有選擇存儲內容改變。因此,第二數據單元還沒有被發送到存 儲設備1120。在圖17所示的示例中,第二本地高速緩存1135B從用戶接收存儲指令並且根 據圖7的公共模式同步過程700的第二發布操作712將包含文本(「再見世界」)的第二數 據發送到存儲設備1120。在圖18中,第一本地高速緩存1135A從存儲設備1120獲得內容 更新並且,在圖19中創作應用1130A將該內容更新實例化到文檔的第一用戶副本中。現在參考圖20-22,具有作為根據本發明的原理的發明性方面的示例的特徵的創 作系統2000可使用戶即使在創作應用與存儲文檔的主副本的任何存儲設備斷開時也能夠 創作文檔的用戶副本。創作系統2000包括執行用於創作文檔的用戶副本2055的創作應用 2030的用戶設備2010。在所示的示例中,用戶設備2010是離線的(例如,與網絡2060斷 開連接)。因此,用戶設備2010不共享在創作文檔的用戶副本2055時生成的內容或元數據 改變,直到連接至網絡2060為止。用戶設備2010還包括其中存儲了有關文檔的用戶副本2055的元數據2039的本 地高速緩存2035。在一個實施例中,可周期性地更新元數據2039以反映出對文檔的本地 高速緩存2055所作的改變。在另一個實施例中,在每一創作會話結束時更新元數據2039。 本地高速緩存2035還包括存儲高速緩存2031、上載高速緩存2033、和獲得高速緩存2037。創作應用2030周期性地將內容改變保存到存儲高速緩存2031中。在一些實施例 中,在整個創作過程中不時地將內容更新存儲在存儲高速緩存2031中(例如,經由自動保 存功能)。在其它實施例中,創作應用2030可在用戶提供保存文檔的指令時存儲內容改變。 在一個實施例中,存儲高速緩存2031根據生成多個內容更新的次序存儲這些更新。然而,在另一個實施例中,在創作會話結束時將內容更新存儲在存儲高速緩存2031中。例如,可 在文檔的用戶副本2055與文檔的初始版本(未示出)之間進行比較並且將差異存儲在存 儲高速緩存2031中。本地高速緩存2035在用戶設備2010連接至網絡2060時通過網絡2060將存儲 在上載高速緩存2033中的任何內容改變發送到存儲設備(未示出)。例如,本地高速緩存 2035可在用戶設備2010 —連接到網絡2060時就共享存儲在上載高速緩存2033中的內容 更新。在一個實施例中,本地高速緩存2035即使在創作應用在用戶設備2010連接至網絡 2060之前停止執行時也可共享存儲在上載高速緩存2033中的內容更新。一般而言,創作應用2030被配置為所處的操作模式確定在上載高速緩存2033中 何時安排內容更新。如果創作應用2030被配置為處於公共操作模式中,則本地高速緩存 2035可自動地將內容更新存儲在上載高速緩存2033中用於以後發送至網絡2060。在一個 實施例中,本地高速緩存2035將來自存儲高速緩存2031的內容更新複製到上載高速緩存 2033。然而,如果創作應用2030被配置為處於私有操作模式中,則本地高速緩存2035不 自動將內容改變保存到上載高速緩存2033中。例如,在一個實施例中,可在創作應用2030 被切換到公共模式中時將內容改變存儲在上載高速緩存2033中。在另一個實施例中,無論 創作應用2030的操作模式是什麼,可在用戶提供共享內容改變的指令時將內容改變存儲 到上載高速緩存2033中。尚未被實例化到第一用戶副本2055中的以前獲得的內容更新可被存儲在獲得高 速緩存2037中。無論用戶設備2010是否連接至網絡2060,這些內容更新可在任何時間被 實例化到用戶副本2055中。在一個實施例中,獲得高速緩存2037存儲要與用戶副本2055 集成的內容更新的有序列表。內容更新可在它們被實例化到文檔的用戶副本2055中時從 獲得高速緩存2037中移除。在一些實施例中,用戶可選擇「取消」來自獲得高速緩存2037 的內容更新的實例化。在一個這樣的實施例中,內容更新可在用戶取消實例化時被添加回 獲得高速緩存2037中。圖21示出用於創作過程2100的操作流,創作應用諸如創作應用2030可通過該過 程在創作應用2030離線時編輯文檔的用戶副本如用戶副本2055。創作過程2100在開始模 塊2102處初始化和開始並且繼續至獲得操作2104。獲得操作2104接收要在文檔的用戶副 本2055上實現的編輯指令。通常,獲得操作2104接收要在用戶副本2055內的一個或多個 數據單元上實現的編輯指令。第一確定模塊2106檢查要被編輯的數據單元是否被鎖。例如,第一確定模塊2106 可檢查存儲在第一用戶設備2010的本地高速緩存2035中的元數據2039以確定是否有外 部鎖(即關聯於另一個用戶的鎖)與要被編輯的數據單元相關聯。如果第一確定模塊2106 確定要被編輯的數據單元被另一個用戶鎖住,則出錯操作2108禁止對該數據單元的編輯。 例如,在一個實施例中,出錯操作2108可通知創作應用2030的用戶不應當編輯該數據單 元。在另一個實施例中,出錯操作2108可通知創作應用2030的用戶不能編輯該數據單元。 創作應用2100循環回到獲得操作2104以再次開始。然而,如果第一確定模塊2106確定要被編輯的數據單元未被鎖住,則請求操作 2114將對鎖的請求添加到存儲在本地高速緩存2035中的元數據2039。然而,因為不能將該請求與文檔的主副本同步,所以請求操作2114不會真正地將鎖指派給該數據單元。在請求 該鎖之前,可選的警告操作2110可向創作應用2030的用戶發出警告。例如,警告操作2110 可向用戶指示創作應用2030離線並且因此不能將對用戶副本2055所作的改變與文檔的主 副本同步。警告操作2110還可提醒用戶在不能同步改變時編輯文檔的用戶副本2055可能 導致衝突。如果實現警告操作2110,則第二確定模塊2112確定創作應用2030是否應當繼續 實現編輯指令。例如,第二確定模塊2112可通過向用戶呈現的用戶界面工具從創作應用 2030的用戶接收選擇。如果第二確定模塊2112確定不應當實現編輯指令,則創作過程2100 被指引回到獲得操作2104以便再次開始。然而,如果第二確定模塊2112確定應當實現編輯指令,則創作過程2100繼續至上 述請求操作2114。執行操作2116根據編輯指令編輯用戶副本2055。第三確定模塊2118確 定是否應當將文檔存儲在本地高速緩存2035中。在一個實施例中,第三確定模塊2118確 定是否已經從用戶接收到保存文檔的指令。在另一個實施例中,第三確定模塊確定是否已 經激活了自動保存功能。如果第三確定模塊2118確定不應當保存文檔,則創作過程2100循環回到獲得操 作2104並且再次開始。然而,如果第三確定模塊2118確定應當保存文檔,則存儲操作2120 將因實現編輯指令導致的文檔中的改變的指示添加到本地高速緩存2035的存儲高速緩存 2031。例如,存儲操作2120可將編輯指令本身添加到存儲高速緩存2031。在另一個實施 例中,存儲操作2120可將內容增量(例如,因實現編輯指令引起的用戶副本中的差異的指 示)添加到存儲高速緩存2031。第四確定模塊2122確定創作應用2030是被配置為處於公共操作模式中還是處於 私有操作模式中。如果第三確定模塊2120確定創作應用2030被配置為處於公共操作模式 中,則發布操作2124與存儲設備共享內容更新。例如,本地高速緩存2035可將保存在存儲 高速緩存2031中的內容更新複製到上載高速緩存2033並且將上載高速緩存2033發送到 存儲設備。在一個實施例中,發布操作2124在第一用戶設備連接至網絡2060時指示應當 將改變和/或編輯指令實例化到文檔的主副本中的次序。創作過程2100在停止模塊2128 處完成並結束。然而,如果第四模塊2122確定創作應用2030被配置為處於私有操作模式中,則第 五模塊2126確定用戶是否已經明確提供上載內容改變的指令。如果已經明確提供了上載 內容改變的指令,則創作過程2100繼續至發布操作2124。然而,如果尚未提供上載內容改 變的指令,則創作過程2100如上所述地在停止模塊2122處完成並結束。一般而言,用戶設備諸如用戶設備2010在通過網絡如網絡2060連接至存儲設備 時至少同步元數據。在一個實施例中,用戶設備即使在創作應用不在執行時也同步元數據。 用戶設備是否同步內容可取決於創作應用是被配置為處於公共操作模式還是私有操作模 式中。創作應用被配置為所處的操作模式是相關的,即使在用戶設備連接至網絡時創作應 用沒有在執行。圖22示出可由用戶設備諸如用戶設備2010在該用戶設備通過網絡如網絡2060 連接至存儲設備時實現的轉換過程2200的操作流。轉換過程2200在開始模塊2202處初始 化和開始並且繼續至連接操作2204,該操作以通信方式將用戶設備2010耦合至網絡2060。
17用戶設備2010可通過網絡2060以通信方式連接至存儲文檔的主副本的存儲設備。獲得操作2206檢索包含內容與元數據的文檔的主副本的更新版本以便開始將用 戶副本2055與主副本同步。在一個實施例中,獲得操作2206向存儲設備輪詢主副本的最 新近版本。在另一個實施例中,獲得操作2206在進行連接時自動從存儲設備接收最新近的 版本。在一個實施例中,即使在創作應用2030不在執行時也實現獲得操作2206。比較操作2208確定所獲得的主副本與用戶副本2055之間的任何差異。例如,比 較操作2208確定元數據的任何差異和/或內容的任何差異。第一確定模塊2210基於該比 較確定在用戶副本2055和所獲得的主副本之間是否存在任何衝突。例如,第一確定模塊 2210可確定創作應用2030在用戶設備2010離線之後是否編輯了在主副本上被鎖住和/或 編輯的任何數據單元。在一個實施例中,在用戶設備2010連接至網絡2060時不管創作應 用2030是否在執行都實現比較操作2208和確定模塊2210。如果第一確定模塊2210確定沒有衝突存在,則轉換過程2200繼續到第一共享操 作2214,該操作將來自文檔的用戶副本的元數據更新發送到主副本。例如,第一共享操作 2214可將對創作應用2030編輯的數據單元的鎖請求發送到主副本。然而,如果第一確定模 塊2210確定衝突存在,則解決操作2212禁止進一步的編輯直至解決衝突為止。—般而言,解決操作2212向創作應用2030的用戶提供衝突存在的通知。在一個 實施例中,解決操作2212在創作應用2030被訪問時提供通知。在另一個實施例中,解決操 作2212在創作應用2030訪問文檔的用戶副本2055時提供通知。在一個實施例中,解決操 作2212向用戶顯示衝突並且使用戶能夠調整衝突。在另一個實施例中,解決操作2212向 用戶提供每一衝突的一組可能的解決方案。在已經解決了衝突時,轉換過程2200繼續至第 一共享操作2214並如上所述地執行該操作。第二確定模塊2216查明創作應用2030的操作模式(例如,公共模式或者私有模 式)。如果第二確定操作2216確定創作應用2030正在公共模式中操作,則第二共享操作 2222將內容更新發送到存儲設備用於集成到文檔的主副本中。在一個實施例中,第二共享 操作2222發送存儲在本地高速緩存2035中的上載高速緩存2033 (圖21)中的所有內容改 變。轉換過程2200在停止模塊2224處完成並結束。然而,如果第二確定模塊2216確定創作應用2030在私有模式中操作,則第三確定 模塊2220確定用戶是否已經提供了共享內容更新的指令。例如,第三確定模塊2218可通 過創作應用2030的用戶界面接收共享改變的指令而不管創作應用2030正被配置為處於私 有操作模式中。在一個實施例中,第三確定模塊2218查明通過創作應用2030的用戶界面 提供的用戶命令。如果第三確定模塊2218確定已經提供了共享內容的指令,則轉換過程2200繼續 至排隊操作2220,在該操作中準備內容更新供發送到存儲設備。例如,內容更新可存儲在更 新高速緩存諸如更新高速緩存2033中(圖20)。轉換過程2200繼續至第二共享操作2222 並且如上所述地執行該操作。本發明的實施例可實現為計算機過程(方法)、計算系統、或者製品諸如計算機程 序產品或計算機可讀介質。可用任何數量的方式來實現這些過程(程序),包括在本文檔中 描述的結構。一種這樣的方式是通過對在本文檔中描述的設備類型進行機器操作。另一種 可選方式是在計算設備上執行各方法的各個操作中的一個或多個並結合一個或多個人類操作員執行這些操作中的某些操作。這些人類操作員不需要相互協作,而是只需要每個人 具有執行該程序的一部分的機器。電腦程式產品可以是計算機系統可讀並且編碼了用於執行計算機過程的指令 的電腦程式的計算機存儲介質。電腦程式產品還可以是計算系統可讀並且編碼了用於 執行計算機過程的指令的電腦程式的在載波上的傳播信號。本文使用的術語計算機可讀 介質包括存儲介質和通信介質兩者。本領域的技術人員將會了解,本發明可與其它計算機系統配置一起實踐,包括手 持設備、多處理器系統、基於微處理器或可編程消費電子產品、小型計算機、大型計算機等 等。本發明還可在分布式計算環境中實踐,其中任務是由通過通信網絡連結的遠程處理設 備執行的。在分布式計算環境中,程序模塊可位於本地和遠程存儲器存儲設備中。一般而 言,程序模塊包括執行特定任務或實現任何抽象數據類型的例程、程序、組件、數據結構、和 其它類型的結構。
權利要求
一種用於在用戶設備(110,610,810,2010)上編輯文檔的用戶副本(155,655,855,2055)的創作系統,所述用戶副本是基於所述文檔的主副本(150)生成的,所述創作系統包括存儲在所述用戶設備上的本地高速緩存(426,635,835,2035),所述本地高速緩存包括存儲高速緩存(2031)和上載高速緩存(2033)被配置為在所述用戶設備上執行的創作應用(130,424,1130,2030),所述創作應用被配置成編輯文檔的用戶副本,所述創作應用適於有選擇地被配置為處於從由公共操作模式和私有操作模式組成的組中選擇的一種操作模式,所述創作應用被配置為基於對所述文檔的所述用戶副本所作的編輯生成元數據更新並基於對所述文檔的所述用戶副本所作的編輯生成內容更新;元數據同步模塊(639,839,2039),被配置為無論所述創作應用被配置為處於何種操作模式都在所述文檔的所述用戶副本與所述文檔的所述主副本之間同步元數據更新;保護模塊(634,834),被配置為在所述保護模塊接收到存儲所述文檔的指令時將所生成的內容更新存儲到所述本地高速緩存的存儲內容高速緩存中,所述保護模塊還被進一步配置為如果所述創作應用被配置為處於所述公共操作模式中則在將所生成的內容更新存儲到所述存儲高速緩存中時將所述生成的內容更新存儲到所述上載高速緩存中;以及發布模塊(632,832),被配置為與所述文檔的所述主副本共享存儲在所述上載高速緩存中的所述內容更新,其中與所述文檔的所述主副本共享所述內容更新將所述內容更新集成到所述主副本中。
2.如權利要求1所述的創作系統,其特徵在於,還包括獲得模塊,被配置為不論所述創作應用被配置為處於何種操作模式都從所述文檔的所 述主副本獲得外部內容更新,所述外部內容更新是由一個或多個其它創作應用生成的;以 及獲得高速緩存,所述獲得模塊將從所述主副本獲得的所述外部內容更新存儲在所述獲 得高速緩存中。
3.如權利要求2所述的創作系統,其特徵在於,所述創作應用被配置為在所述獲得模 塊已經將所述外部內容更新存儲在所述第二內容高速緩存中時提供所述外部內容更新可 用的指示,以及其中,所述創作應用被配置為將所述外部內容更新中的一個或多個實例化 到所述文檔的所述用戶副本中。
4.如權利要求1所述的創作系統,其特徵在於,如果所述創作應用被配置為處於所述 私有操作模式中並且所述保護模塊已經接收到共享所述內容更新的指令,則所述保護模塊 還在將所生成的內容更新存儲到所述存儲高速緩存中時將所生成的內容更新存儲到所述 上載高速緩存中。
5.如權利要求1所述的創作系統,其特徵在於,所述創作應用被配置為通過至網絡的 連接訪問所述文檔的所述主副本。
6.如權利要求5所述的創作系統,其特徵在於,所述創作應用被配置為在所述創作應 用未連接至所述網絡時能夠編輯所述文檔的所述用戶副本。
7.如權利要求5所述的創作系統,其特徵在於,所述創作應用被配置為在所述創作應 用未連接至所述網絡時提供警告,所述警告指示所述創作應用不能將所述用戶副本與所述主副本同步。
8.如權利要求1所述的創作系統,其特徵在於,所述元數據更新包括至少一個由所述 創作應用生成的、圍繞正在編輯的所述文檔的至少一個數據單元的鎖,所述鎖禁止其它創 作應用在所述文檔的相應用戶副本上編輯所述數據單元。
9.一種計算機實現的方法,所述方法將文檔的用戶副本與所述文檔的主副本同步,所 述文檔的所述用戶副本被存儲在用戶設備(110,610,810,2010)上並且所述文檔的所述主 副本(150)被存儲在存儲設備(120,620,820,1120)上,所述存儲設備被配置為以通信方式 耦合至所述用戶設備,所述方法包括將所述用戶設備(110,610,810,2010)連接至所述存儲設備;為創作應用(130,424, 1130,2030)選擇私有操作模式;在所述用戶設備處用所述創作應用編輯所述文檔的所述用戶副本(155,655,855, 2055)以生成至少第一內容更新;周期性地從所述用戶設備將通過編輯所述文檔的所述用戶副本生成的任何元數據更 新發送到所述存儲設備,其中所述元數據更新被實例化到存儲在所述存儲設備上的所述主 副本(150);在所述用戶設備處存儲通過編輯所述文檔的所述用戶副本生成的所述內容更新; 在所述主副本已經被更新以包括外部元數據更新時,在所述用戶設備處周期性地從所 述文檔的所述主副本接收所述外部元數據更新;將從所述文檔的所述主副本接收到的所述外部元數據更新實例化到所述文檔的所述 用戶副本中;在所述主副本已經被更新以包括外部內容更新時,在所述用戶設備處周期性地從所述 文檔的所述主副本接收所述外部內容更新。
10.如權利要求9所述的計算機實現的方法,其特徵在於,還包括 接收實例化指令;以及根據實例化指令將所述外部內容更新實例化到所述文檔的所述用戶副本中。
11.如權利要求9所述的計算機實現的方法,其特徵在於,還包括 在所述創作應用中提供所述外部內容更新可用性的指示;在所述創作應用中接收查看所述外部內容更新的指令; 提供用於在所述文檔的所述用戶副本中實例化所述外部內容更新的選項;以及 實現所選擇的用於在所述文檔的所述用戶副本中實例化所述外部內容更新的選項。
12.如權利要求9所述的計算機實現的方法,其特徵在於,還包括 接收將所述創作應用配置為處於公共操作模式中的指令;將所述創作應用切換到所述公共操作模式中;以及與所述文檔的所述主副本共享存儲在所述用戶設備處的所述內容更新。
13.如權利要求12所述的計算機實現的方法,其特徵在於,還包括 將所述用戶設備與所述存儲設備斷開連接;繼續用所述創作應用編輯所述文檔的所述用戶副本;在將所述用戶設備與所述存儲設備斷開連接之後,在所述用戶設備處存儲由所述創作 應用生成的任何內容更新;以及在所述用戶設備重新連接至所述存儲設備時共享存儲在所述用戶設備處的所述內容 更新。
14.如權利要求9所述的計算機實現的方法,其特徵在於,還包括將所述用戶設備與所述存儲設備斷開連接;繼續用所述創作應用編輯所述文檔的所述用戶副本;以及在將所述用戶設備與所述存儲設備斷開連接之後,在所述用戶設備處存儲由所述創作 應用生成的任何內容更新;其中在所述用戶設備重新連接至所述存儲設備時不與所述存儲設備共享存儲所述在 所述用戶設備處的所述內容更新直到所述創作應用被切換到所述公共操作模式中為止。
15.一種存儲計算機可執行指令的計算機可讀存儲介質,所述計算機可執行指令在由 計算設備執行時執行一種創作存儲在用戶設備(110,610,810,2010)上的文檔的用戶副本 (155,655,855,2055)的方法,所述方法包括將創作應用(130,424,1130,2030)配置為處於公共操作模式中,其中所述創作應用被 配置為由所述用戶設備(110,610,810,2010)執行以創作所述文檔的所述用戶副本(155, 655,855,2055),其中所述用戶設備是離線的;用所述創作應用編輯所述文檔的所述用戶副本以生成多個內容更新;在所述用戶設備處存儲由所述創作應用生成的任何元數據;在所述用戶設備處的一個隊列(2031)中存儲由所述創作應用生成的所述內容更新;將所述用戶設備連接至所述存儲設備;在所述用戶設備連接至所述存儲設備時,即使所述創作應用在所述用戶設備連接之前 被關閉,也要將所述元數據與所述文檔的所述主副本(150)共享。
16.如權利要求15所述的計算機可讀介質,其特徵在於,還包括在所述用戶設備連接至所述存儲設備時,即使所述創作應用在所述用戶設備連接之前 被關閉也共享存儲在所述隊列中的所述內容更新。
17.如權利要求15所述的計算機可讀介質,其特徵在於,還包括在將所述用戶設備連接至所述存儲設備之後從所述文檔的所述主副本獲得外部元數 據更新;以及自動地將所述元數據更新實例化到所述文檔的所述用戶副本。
18.如權利要求15所述的計算機可讀介質,其特徵在於,在所述用戶設備處的所述隊 列中存儲由創作應用生成的所述內容更新包括在所述創作應用從所述用戶接收定稿指令 時在所述隊列中存儲所述內容更新。
19.如權利要求18所述的計算機可讀介質,其特徵在於,在所述創作應用被配置為處 於所述公共模式中時接收所述定稿指令觸發對所述內容更新的共享。
20.如權利要求18所述的計算機可讀介質,其特徵在於,在所述創作應用被配置為處 於所述私有模式中時接收所述定稿指令不觸發對所述內容更新的共享。
全文摘要
協作創作應用提供其中二個或多個用戶可以並發編輯文檔的創作環境。每一用戶編輯文檔的一個副本、發送更新到該文檔的主副本、以及從該文檔的主副本接收更新。創作環境可被配置為處於公共操作模式或者私有操作模式中,在公共操作模式中,自動同步內容和元數據,在私有操作模式中,自動同步元數據並且僅應用戶請求同步內容。創作應用可在公共或私有模式中離線編輯文檔。
文檔編號G06F21/00GK101896915SQ200880121295
公開日2010年11月24日 申請日期2008年11月11日 優先權日2007年12月14日
發明者C·J·安託斯, E·J·伯恩斯坦, J·B·貝勒, M·R·奈特 申請人:微軟公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀