新四季網

應用程式之間xml數據的實時同步的製作方法

2023-10-09 15:09:59

專利名稱:應用程式之間xml數據的實時同步的製作方法
應用程式之間XML數據的實時同步背景計算機用戶已經逐漸習慣於用戶友好的軟體應用程式,它們幫助用戶寫、計 算、組織、準備演示、發送與接收電子郵件、製作音樂等等。例如,字處理應用程 序允許用戶準備各種有用的文檔。電子表格應用程式允許用戶輸入、操縱和組織數 據。幻燈片演示應用程式允許用戶創建包含文本、圖片、數據或其它有用對象的幻 燈片演示。然而,由這類應用程式創建的文檔(例如,字處理文檔、電子表格、幻燈片 演示文檔)在存儲/傳輸文檔上下文所需要的任意元數據內容方面功能有限。例如, 建立在字處理文檔之上的解決方案可能要求存儲描述文檔各種狀態的工作流數據, 例如,先前的工作流核准狀態(日期、時間、名稱)、當前核准狀態、完成前的未 來工作流狀態、文檔作者的名稱和辦公地址、文檔變化,等等。存儲該信息的選項 主要限於對文檔變量或具有限制的現有定製對象連結和嵌入(OLE)文檔性質的使 用。例如,不能存儲分層數據;字符長度有限,等等。有關這類方法的性質存儲在 單個存儲中,例如OLE性質存儲器,這意味著這些性質具有衝突的可能性。而且, 這樣存儲的性質沒有數據驗證。這類應用程式及有關文檔的用戶難以將任意數據與 文檔存儲在一起,而這卻是許多用戶的共同需求。發明內容提供本概述以便以簡化形式介紹概念的精選,這些概念將在以下的詳細描述 中被進一步描述。本概述並不旨在標識要求保護的主題的關鍵特徵或本質特徵,也 不旨在用於幫助確定要求保護的主題的範圍。將一或多個數據存儲與文檔內主呈現存儲(primary presentation storage)分開 地保存,從而存儲、關聯並允許使用與計算機生成文檔相關聯的任意數據。用於結 構化與文檔相關聯的信息的數據,諸如文檔元數據,被保存在其中保存不同數據片 之間的關係的一個數據存儲中。數據存儲向數據存儲中的各種數據片暴露應用程式 編程接口 (API),以允許不同數據消費者(data consumer)實時訪問和操作一或多個數據片。多個數據消費者可以同時訪問和編輯同一文檔數據片,並且解決對一 給定數據片的任何有衝突的改變。每個數據消費者可以接收或拒絕這一改變以及作為原始改變的結果作出額外的副效應(side-effect)改變。這樣,就可以在數據消 費者之間實時地同步數據。數據片可按照標記語言如可擴展標記語言(XML)來結構化。XML模式可與 每一數據片相關聯,並且數據存儲可基於與給定數據片相關聯的XML模式來自動 地驗證數據的XML結構。這有助於防止允許非法的改變進入系統。


圖1示出了計算機的示例性計算體系結構;圖2是示出一個或多個客戶應用程式以及一個或多個數據存儲以及數據存儲 的內容之間的關係的框圖;圖3示出了顯示內部和外部數據消費者與XML數據存儲之間的交互的系統圖不;圖4示出了實時的同步的示例;圖5示出了兩個客戶和XML數據存儲之間的交互;圖6顯示了兩個外部數據消費者和對XML數據存儲的改變之間的交互;圖7顯示了涉及多個副效應改變的進程;以及圖8示出了依照本發明的各方面顯示最後執行調用程序的副效應的進程。
具體實施方式
現在參考其中相似的數字代表相似的元素的附圖,描述本發明的各種方面。 具體地,圖1和相應的討論旨在提供對在其中可以實現本發明實施例的合適計算環 境的簡要描述。一般而言,程序模塊包括例程、程序、組件、數據結構和其它類型的結構, 它們執行特定的任務或者實現特定的抽象數據類型。也可使用其它計算機系統配 置,包括手持式設備、多處理器系統、基於微處理器或可編程消費電子產品、小型 機、大型機等等。也可使用分布式計算環境,其中任務由通過通信網絡連結的遠程 處理設備執行。在分布式計算環境中,程序模塊可被置於本地或遠程的存儲器設備 中。在通篇說明書和權利要求書中,下列術語採用與此處相關聯的含義,除非該術語的上下文另有指示。術語"呈現"指文檔的可見部分,諸如列印文檔時會出現的文本和布局等。術語"標籤"指插入文檔中描述XML文檔內元素的字符。每個元素可以具有 不多於兩個的標籤開始標籤和結束標籤。也有可能具有空元素(沒有內容),在 此情形中允許一個標籤。術語"標記語言"或"ML"指用於文檔內特殊代碼的語言,用於規定文檔的 諸部分如何由應用程式來解釋。在字處理文件中,標記語言規定文本被如何格式化 或布局。術語"元素"指XML文檔的基本單元。元素可包含屬性、其它元素、文本和 用於XML文檔的其它內容區域。在標籤之間的XML內容被認為是該元素的"子"(或後代)。因此,嵌入在 元素的內容中的其它元素稱為"子元素"或"子節點"或者元素。直接嵌入在元素 內容中的文本被認為是該元素的"子文本節點"。元素內的子元素與文本一起構成 元素的"內容"。術語"屬性"指設置為特定值且與元素相關聯的附加性質。元素可具有任意 數量的與其相關聯的屬性設置,包括一個也沒有。屬性用於將附加信息與將不再包 含其它元素或者作為文本節點來對待的元素相關聯。術語"XPath"是運算符,它使用模式表達式(pattern expression)來標識XML 文檔中的節點。XPath模式是用斜槓分開的子元素名稱列表,它描述到通過XML 文檔的路徑。模式"選擇"匹配該路徑的元素術語"副效應改變"是指響應於另一改變作出的改變。術語"文檔"可以由描述在相關聯的內容類型中定義的各種性質的任意XML, 以及可用於描述文檔的實際表面內容的其他標記語言組成。術語"XML數據存儲和/或數據存儲"指諸如字處理文檔,電子表格文檔,幻 燈片演示文檔等的文檔內的容器,它在文件打開時提供對存儲在該文檔中的數據 (例如XML格式)的存儲和修改的訪問。下面參考圖2提供XML數據存儲的進 一步定義。參加圖1,用於實現本發明的一個示例性系統包括計算設備,諸如計算設備 100。在一個非常基本的配置中,計算設備100通常包括至少一個處理單元102和 系統存儲器104。取決於計算設備的確切配置和類型,系統存儲器104可以是易失 性的(諸如RAM)、非易失性的(諸如ROM、快閃記憶體等)或是兩者的某種組合。系統存儲器104通常包括作業系統105、 一個或多個應用程式104,並且可以包括 程序數據107。在一個實施例中,應用程式106可以包括字處理程序120。這一基 本配置在圖1中由虛線108中的那些組件示出。計算設備100也可具有其它特徵或功能性。例如,計算設備100也可含有附 加的數據存儲設備(可移動和/或不可移動),諸如磁碟、光碟或磁帶。這樣的額 外存儲在圖1中由可移動存儲109和不可移動存儲110示出。計算機存儲介質可包 括易失性和非易失性、可移動和不可移動介質,它們以用於存儲諸如計算機可讀指 令、數據結構、程序模塊或其它數據這樣的信息的任意方法或技術來實現。系統存 儲器104、可移動存儲109和不可移動存儲IIO都是計算機存儲介質的示例。計算 機存儲介質包括,但不限於,RAM、 ROM、 EEPROM、快閃記憶體或其它存儲器技術、 CD-ROM、數字多功能盤(DVD)或其它光存儲、磁帶盒、磁帶、磁碟存儲或其 它磁性存儲設備、或能用於存儲所需信息且可以由計算設備IOO訪問的任何其它介 質。任何這樣的計算機存儲介質都可以是設備100的一部分。計算設備100也可以 具有諸如鍵盤、滑鼠、筆、語音輸入設備、觸摸輸入設備等輸入設備112。也可以 包括諸如顯示器、揚聲器、印表機等的輸出設備114。這些設備在本領域是公知的, 因此不必在此詳細討論。計算設備100也可以包含允許該系統與其它計算設備118諸如經網絡通信的 通信連接116。通信連接116是通信介質的一個示例。通信介質通常可具體化為諸 如載波或其它傳輸機制等己調製數據信號中的計算機可讀指令、數據結構、程序模 塊或其它數據,並且包括任何信息傳遞介質。術語己調製的數據信號是指以在該信 號中編碼信息的方式來設置或改變其一個或多個特性的信號。作為示例,而非限制, 通信介質包括有線介質,諸如有線網絡或直接線連接,以及無線介質,諸如聲學、 RF、紅外線和其它無線介質。如此處所用的術語計算機可讀介質既包括存儲介質 又包括通信介質。可在計算設備100的系統存儲器104中存儲多個程序模塊和數據文件,包括 適於控制聯網個人計算機操作的作業系統105,諸如來自華盛頓雷德蒙德的微軟公 司的Windows作業系統。系統存儲器104也可存儲一或多個程序模塊,諸如字處 理應用120以及下述的其它應用。字處理應用120用於提供創建、編輯和處理電子 文檔的功能性。—根據本發明的一個實施例,字處理應用120包括來自微軟公司的WORD程序。 然而應該了解,可利用來自其它製造者的字處理應用程式。字處理應用的例示僅為了示例,而非不限制可產生並操作文檔的其它類型的應用。例如,可以等效地應用
能處理各種形式內容(例如,文本、圖像、圖片等)的其它應用程式106,諸如電
子表格應用程式,資料庫應用程式,幻燈片演示應用程式,畫圖或計算機輔助應用
程序等等。產生並操作各種不同類型文檔的示例應用程式106包括來自微軟公司的 OFFICE 。
實施例可實現為計算機過程、計算系統、或者製造品,如電腦程式產品或 計算機可讀介質。電腦程式產品可以是計算機系統可讀且對指令的電腦程式進
行編碼以執行計算機過程的計算機存儲介質。電腦程式產品也可以是計算系統可 讀的且對指令電腦程式進行編碼以執行計算機過程的載波傳播信號。
圖2是例示一或多個客戶應用程式與一或多個數據存儲之間的關係以及數據 存儲中的內容的框圖。 一般而言,在將一或多個數據存儲與文檔內主呈現存儲分開 保存,以存儲、關聯並允許使用與計算機生成文檔相關聯的跨多個數據消費者的任 意數據。用於結構化與文檔相關聯的信息的數據,諸如文檔元數據,被保存在其中 保存不同數據片之間的關係的一個數據存儲中。數據存儲向數據存儲中的各種數據 片暴露應用程式編程接口 (API),以允許不同應用訪問和操作一或多個數據片。 如在此使用的,術語"數據消費者"、"應用"和"過程"能互換地使用,除非上 下文另有明確指示。
數據片可按照標記語言如可擴展標記語言(XML)來結構化。XML模式可與 每一數據片相關聯,並且數據存儲可基於與給定數據片相關聯的XML模式來驗證 應用於數據的XML結構,以確保每個請求的有效性。數據存儲可包含根據可擴展 標記語言(XML)結構化的任何數量的任何數據項,例如元數據。因此,文檔解 決方案提供者可將任意元數據作為XML與給定文檔存儲在一起,並且讓該信息在 發生事件時由有權訪問數據的給定解決方案來處理,諸如當數據從數據存儲中移除 或被加載到數據存儲時和/或當用戶打開/編輯/保存文檔時。
當文檔正在編輯的同時,還提供對XML形式數據的程序性訪問。根據一個實 施例,提供一種解決方案開發者熟悉的標準機制,通過該機制在打開文檔時能以在 程序上訪問和修改數據。這一程序性的訪問被設計用於模擬標準XML API。通過 應用編程接口為一或多個編輯客戶應用(例如,文檔編輯或創建應用和/或第三方 應用插件解決方案等等)提供對數據的程序性訪問。因此,多個客戶應用可訪問並 編輯相同的文檔數據片,並且解決任何對給定數據片的有衝突的改變。數據消費者 可以響應任何給定改變作出副效應改變。例如,響應於將公司名稱設置為"Microsoft (微軟)",數據消費者可以將證券代碼改成"MSFT"。此外,對數 據的改變和任何相關聯的副效應可由數據存儲來"捆綁",使得撤消一或多個改變 將後退所有相關改變。這幫助減少對數據消費者本身開發的負擔,以確保當用戶例 如通過壓下撤消命令從文檔表面啟動原始改變撤消時所有的改變都得以後退。標準XML模式(XSD)也可用於定義與文檔元數據相關聯的任何定製XML 數據片的內容,以確保應用於該文檔數據的XML數據是有效的。這些模式可附連 到存儲在文檔中的XML數據的任何實例中,並且數據存儲可被配置為不允許會導 致該數據的XML結構變成無效(即,XML標籤與其內容相反)的任何對XML數 據的改變。這幫助確保解決方案開發者能將特定的XML元數據片附連到文檔,並 且確保該XML數據將根據相關聯的模式繼續在結構上保持"正確",無論哪個數 據消費者(例如,插件)修改該數據。模式可以被存儲在計算機可讀介質中,諸如 在文件中或在硬碟上。現參考圖2,文檔數據220包括XML結構數據以及表示文檔的表面或呈現層 視圖的相關聯文檔數據。例如,文檔數據220可包括XML結構(例如,標題標籤, 正文標籤,結論標籤)以及字處理文檔、電子表格文檔、幻燈片演示文檔等的相關 聯的表面視圖數據(例如,字詞,語句,段落)。數據存儲208是文檔數據儲存庫,用於存儲一或多個與關聯於給定文檔的一 或多個類型的數據相關聯的結構化數據片。儘管僅示出一個數據存儲器,但可使用 不止一個數據存儲。元數據l 225 (結構化的數據項)可包括XML結構和用於關 聯於文檔的第一元數據片的相關聯數據。例如,元數據1 225可包括XML結構數 據(例如日期標籤,名稱標籤等),它們列出文檔作者,文檔創建日期,文檔最後 改變/保存日期等等。元數據2 230 (結構化數據項)可包括XML結構數據(標籤) 以及表示關聯於文檔的第二元數據片的相關聯元數據。元數據1和元數據2是為了 示例,而非限制可保存在數據存儲208中關聯於給定文檔的大量不同類型數據。例 如,如在此所述的,任意數據可按有權訪問文檔數據的解決方案開發者或用戶的需 要,由一或多個軟體應用來結構化並添加到文檔。模式文件240、 245可選地可被附連到存儲在數據存儲208中的每一數據片, 用於指示與應用於每一數據片225、 230的可擴展標記語言(XML)相關聯的句法 和驗證規則。XML模式文件提供一種在XML環境中描述和驗證數據的方法。模 式文件陳述使用什麼XML標記數據(包括元素和屬性)來描述XML文檔中的內 容,並且模式文件定義XML標記句法,包括每一元素所允許的位置,在元素內允許什麼類型的內容以及在哪些元素可出現在其它元素中。模式文件的使用確保文檔(或者單個的數據片)以一致且能預知的方式來結構化。模式文件240、 245可由 用戶創建並且一般由相關聯的標記語言諸如XML來支持。該文檔的模式化通過在數據存儲層處拒絕違反給定模式文件的任何改變來允 許數據存儲提供"保證"文檔的結構有效性的能力。按照一實施例,數據存儲208 使用模式驗證模塊260針對相關聯的模式文件驗證添加的XML結構或者對給定數 據片的改變。例如,如果文檔創建者或編輯者對給定數據片例如元數據1作出XML 結構上的改變,其中編輯者添加或移除給定的XML標籤,則數據存儲208將使用 模式驗證模塊針對相關聯的模式文件來檢査XML結構上的改變以確保改變的合法 性。如果改變不是有效的,則向編輯者產生一個錯誤。如所理解的,對應用於給定 數據片的XML結構的這種控制考慮了結構上的一致性和可預知性,這對於允許客 戶和第三方應用程式與相關聯數據交互尤為重要。任何數據消費者可以提供可用於 驗證數據的模式。數據存儲208提供可由客戶應用205 (例如,字處理應用,電子表格應用,幻 燈片演示應用等)以及第三方應用210、 215通過相應應用205、 210、 210的對象 模型(OM)訪問的一或多個應用編程接口 (API) 270。這些API允許客戶應用和 第三方應用將任何現有XML文件加載到給定文檔的數據存儲208,因而確保該數 據現在是文檔的一部分並且將在其生存期中在該文檔內傳播(例如,通過打開/編 輯/保存/重命名等)或者直到該數據從數據存儲中移除為止。按照一個實施例,數 據存儲中的數據以其XML格式可用,甚至在給定數據片225、 230的源應用被關 閉或者不可用的情況下。S口,可以經由一組API來訪問給定數據片225、 230。如 下所述,API還允許客戶和第三方應用對應用於數據項225、 230的XML標記數 據進行改變。一旦XML數據225、 230被加載到數據存儲中以便與文檔220相關聯,則可 使用數據存儲接口將其作為標準XML來操縱,其中數據存儲接口被設計為提供與 現有XML編輯接口相似的方法,以便利用開發者的XML編程標準的現有知識。 這允許用戶對添加到用於文檔的數據存儲的XML數據進行標準XML操作,諸如 添加元素和屬性,移除元素和屬性,改變現有元素/屬性的值,以及讀取相關聯XML 樹的任何現有部分的值。使用這些XML標準操作,解決方案可以使用文檔存儲結 構化的複雜元數據。例如,可編寫第三方用215,它通過讀取添加到每一文檔的數 據存儲器208的元數據1 225,而從多個文檔定位和提取文檔作者名稱和文檔創建日期。示例的第三方可以是一個為作出由給定組織創建的所有文檔的文檔作者名稱 和文檔創建日期列表而編程的應用。按照本發明的實施例,第三方應用可使用應用於元數據1的XML結構來有效地定位和提取所需數據。例如,可編寫第三方應用 來語法分析元數據1文件的XML結構以定位XML標籤,諸如〈docauthor〉和 ,用於獲得和使用關聯於這些標籤的數據。如應了解的,上述內 容僅是一或多個應用可通過數據存儲208與關聯於文檔的結構化數據交互的許多 方法中的一個示例。此外,數據存儲器208提供任意數量的API接口 270給任何單獨的XML數據 片220、 225、 230 (也稱為存儲項),以使多個應用205、 210、 215能夠與同一數 據片一起工作。例如,若干解決方案,諸如客戶應用(例如字處理應用)和第三方 應用解決方案(例如上述應用),可與同一組文檔性質(例如包含在元數據2 230 文件中的性質) 一起工作。使用數據存儲208,這些應用的每一個通過其自己的數 據存儲API接口 270接收對所需XML數據230的獨立訪問,這些API接口 270 允許每一個應用通過其自己OM與數據通信而不必處理讓多個數據消費者訪問同 一數據片的複雜性。為了允許這多個數據消費應用205、 210、 215訪問同一數據,數據存儲208 在XML數據的任意部分被另一應用改變時通知這些應用的每一個,使得給定應用 可響應於該改變(既包括在內部對於其自己過程的又包括在外部由對同一數據的其 它改變所引起的)。當一個應用請求對給定數據項的改變時,該請求被自動發送到 所有其它應用,以允許其它應用決定如何或是否響應所請求的改變。按照一個實施 例,這是通過允許每一個應用註冊對其具有接口的XML數據的任意部分的"監聽" 來實現的,使得給定的應用解決方案/程序僅接收屬於其自己邏輯的那些消息。例 如, 一種類型的應用210可能希望註冊監聽對給定XML數據的所有改變以便向第 三方解決方案提供詳細的商務邏輯能力,而另一類型的應用215可能希望僅監聽對 同一數據內的一兩個特定的XML元素的改變,因為其邏輯不關心對XML數據的 任何其它部分的改變。按照該實施例,多個應用205、 210、 215可訪問和編輯同一文檔數據片,並 且解決對給定數據片的任何衝突改變。例如,當一個應用所作的一個改變引起由另 一應用所作的"副效應"改變時,可對任何給定的改變作出副效應。例如,第一應 用210的任務是從關聯於給定文檔的一或多個數據項225、 230提取公司名稱以將 這些名稱翻譯成相應的股票代碼,如果可用,則用來編譯有關給定文檔的公司股票引起給定數據片中的給定公司名稱添加或改變,例 如將公司名稱從"公司ABC"改變為"公司XYZ",則第一應用可監聽該改變, 從而自動更新其股票代碼列表以包括代替"公司ABC"的"公司XYZ"的股票代 碼。此外,這類改變及任何相關聯的副效應可由數據存儲208進行捆綁,使得撤消 一或多個改變時後退所有相關改變。圖3示出了顯示內部和外部數據消費者與XML數據存儲之間交互的系統圖。 如所示的,系統300包括文檔315、數據存儲302,呈現層304、每一個都包括錯 誤存儲和撤消存儲的XML存儲l-N (306)、全局改變存儲308、可選全局撤消存 儲310、耦合到內部數據消費者1-N314的內部代理程序312以及耦合到外部數據 消費者l-N 318的外部代理程序316。使用數據存儲302和XML數據存儲器306,文檔具有包含任何數量的任意數 據項的能力(只要每個數據項遵循標準的XML句法)。任意元數據可作為XML 存儲在文檔內並且該信息在文檔由用戶打開/編輯/保存時可自動往返。如上所述,當文檔正在被編輯時通過可使用的API提供對該數據的程序性訪 問,提供一種解決方案開發者所熟悉的標準機制,通過該機制在文檔打開時可程序 性地訪問和修改該信息。按照一個實施例,該程序性訪問被設計為模擬標準的XML 接口。使用API,當諸如字處理應用的應用正在運行時,可以添加/移除數據;可 將數據填充到存儲項(數據存儲的一部分)內;使用標準的XML結構操縱數據; 可將模式與數據存儲中的任意XML數據相關聯; 一旦與數據存儲項相關聯,模式 可被添加/移除/修改;以及可將XML改變作為事件發送給任何監聽的客戶。如所 示的,API包括外部代理程序316和內部代理程序312,前者為外部數據消費者318 而後者為任何內部數據消費者314提供與數據存儲302交互的接口 。對數據存儲302的操縱可實時發生。如上所述,數據存儲302和306可包含 一或多種類型的數據。例如,公司可能具有一個數據存儲,這是他們正在用於存儲 他們想要存儲在單一數據存儲器內的所有不同類型的數據的數據存儲,同時另一公 司可能想要在不同數據存儲內器存儲不同類型的數據。數據消費者(內部314和/或外部318)可以註冊涉及有關數據存儲中的數據 的動作的事件。例如,數據消費者可註冊以接收在對一或多個數據存儲作出任何類 型的改變時的事件。另一數據消費者可針對發生於數據存儲內某一元素或某組元素 的改變進行註冊。常規事件包括添加項目、改變項目和從數據存儲之一移除項目。 當事件發生時,已經註冊過的各數據消費者可對改變作出反應,同時保持數據存儲器的狀態一致。很多時候,數據消費者在作出改變時不執行任何動作。在其它時候, 數據消費者會響應於事件而執行某(些)動作。例如,數據消費者可響應於改變而 作出某些其它改變,諸如響應於題目改變而更新文檔內的首部。數據消費者還可執行不影響文檔的某些其它操作。例如,如果插入股票報價機代碼,則數據消費者可 檢索關聯於該股票代碼的數據,即使所有檢索到的數據並不顯示在文檔的呈現層 內。數據消費者也可以使用其驗證邏輯拒絕改變。例如,如果數據消費者1收到不 接受的改變,則該數據消費者可向代理程序返回一個標誌,表示不接受該改變。只要改變不被接受,則使得該改變連同任何副效應退回(rollback),使得該改變從 未發生過。每一XML存儲306可使用其撤消存儲來撤消其已作出的改變。作為替 代,可使用全局撤消存儲310來撤消在各數據存儲上作出的改變。假設存在對發生 於文檔性質的事件感興趣的三個數據消費者,因此這些數據消費者的每一個已經注 冊以接收有關這些性質改變的事件。當作出改變時,數據存儲確定己經註冊的每一 數據消費者並且按預定的順序將改變通知它們每一個。每一數據消費者進而可響應 於該改變而執行某個動作。如果該改變以及由己註冊數據消費者作出的、作為該改 變的結果的任何改變不被任一數據消費者接受,則涉及該初始改變的所有改變被撤 消。外部代理程序應用編程接口層316提供由外部數據消費者318對數據存儲302 的訪問並且允許第三方客戶與數據存儲器302交互,就象與關聯於應用的內部數據 消費者與數據存儲器交互一樣。為標識目的,為數據存儲302內的每一XML數據 存儲306提供唯一的ID。這幫助定位XML數據存儲306。在任何時候,數據消費者可添加用於驗證數據存儲內數據的模式。當添加了 模式並且數據消費者試圖改變任何數據時,數據存儲確定使用提供的模式改變是否 有意義。 一旦模式被附連,代理程序就變為驗證中的對象。專門定義的XML模式可用於圍繞在文檔中的內容提供語義標記,所述文檔諸 如文字處理文檔、電子表格文檔等。這種強大的功能使開發者能創建解決方案,所 述解決方案可以利用該專門的XML嵌入直接作用於他們的數據的結構和內容,而 非要求他們的解決方案處理下層應用程式的呈現格式的各種複雜狀況。例如,如果用戶要在XML不可用的應用程式中創建用於股票調査記錄的封面 頁,那麼提取有用數據(例如公司名稱、證券報價機代碼、證券評級)會需要使用 與文檔的呈現格式密切聯繫的應用程式的對象模型。這當然地意味著所得的解決方 案邏輯也依賴於與文檔的呈現格式,並且如果呈現改變就會遭受失敗。例如,如果代碼期望報價機符號在第一個表格的第3列第2行中,那麼添加新的行/列會破壞 該邏輯。然而,對啟用了XML的應用程式而言,該代碼現在可以被連結到消費者 自身的數據的結構,從而消除邏輯依賴呈現的必要性。該相同的邏輯會搜索 XML節點的內容,並且無論它存在於文檔中的任何位置都找到它以便編輯它,即使其上下文情景呈現已被徹底改變。XML模式通常包封若干類型的數據,包括元數據(例如,用於存儲/處理的 作者數據);正文數據(例如,被報導的公司);以及列表數據(例如,證券價格 歷史)。然而,這些數據類型不是互斥的。實際上,它們通常是同一XML文檔中 大量重疊的區域。理想情況下,雖然該數據都是使用單一的XML模式來表達的, 但是這些不同的數據"類型"的每個可以在特定地適用於該數據的最佳表達的環境 中被編輯或進行其他操作。例如,一種形式似乎允許用戶方便地編輯文檔的元數據, 而該文檔正文則可經字處理應用程式編輯。這是實時發生的,使得用戶能夠同時填 寫文檔和表格的部分。數據存儲也可以每次接收一個以上元素。假設作為一個特定的流的數據 (XML)在某些情況下會有助於滿足該模式。例如,假設所附模式表示如果證券 數據存在,它必須具有至少兩個公司。如果證券數據是一個接一個添加的,那麼它 會是無效的。依照一個實施例,使用單次通過來驗證數據。代替會導致對數據存儲作出改 變的二次通過,在數據被提交給數據存儲之前執行驗證。這有助於防止數據消 費者將錯誤引入數據存儲。。如此處所述,現在可以獨立於中央XML數據存儲302中的任何特定應用程式 文檔來存儲與文檔相關聯的XML數據。可以為一個XML數據的呈現/編輯創建多 個環境。通過它們到XML數據存儲中相同數據的連接,該數據的表達被自動地同 步。這樣,多個應用程式可以同時顯示相同的下層XML數據。這意味著向用戶提 供了編輯應用程式中相同數據的能力,即"最佳工作工具(the best tool for job)"。 例如,用於編輯元數據信息的形式、用於編輯數據自由形式部分的字處理文檔表面 等。這也意味著用戶可以按需在多個應用程式中編輯該數據。如果在多個應用程式 中出現相同的信息,那麼用戶可以基於它們當前編輯的上下文情況,按需在這些應 用程序的任何應用程式中編輯該數據。雖然現在每個應用程式同時訪問與文檔相關聯的整個XML數據,但是每個應 用程序可以各自作出是否顯示和編輯該數據的任何部分的選擇。這意味著每個應用程式僅需要顯示在該上下文情景中相關的數據部分。例如,可以在文檔中顯示所有的XML數據,而另一應用程式可能只對數據中一個XML節點的值感興趣,由此 只需顯示數據的數據的這一部分,而無需擔心'帶上'XML結構的剩餘部分才能 確保上下文情景。用戶可以在顯示相同XML信息的任何應用程式中編輯數據並且使得在引用 數據該部分的所有位置中數據馬上更新(連同任何適用的業務邏輯)。這種接收每 個XML改變的實時消息的能力是有用的,因為它允許創建反映出在單個XML文 檔內各種編輯需求的重疊性質的編輯環境。應用程式也可以共享錯誤信息。用戶定義的內容錯誤集合可以被存儲在每個 數據存儲中。例如,業務邏輯可以指示〈startDat^節點必須具有〈endDate〉節點之 前的值。為了使多個數據消費者能集體共享它們的錯誤,在每個XML存儲中包括 錯誤存儲,用於存儲XML中節點的列表+錯誤(由錯誤文本和名稱組成)。正如 XML改變一樣, 一個客戶可以創建錯誤,而該錯誤改變接著被廣播給每個客戶。 這樣,多個應用程式可以依賴於將驗證邏輯在該數據的所有表示中共享的單個實 現。換而言之,在正顯示XML數據的每個應用程式中無需複製相同的邏輯。撤銷存儲可以是全局撤銷存儲310和/或撤銷存儲可以包括在每個XML存儲 中。每個數據消費者的改變請求可以被連接到一個撤銷棧中,諸如撤銷存儲310, 它將每個改變與所有相關的改變組合起來,這樣每個改變都能作為一整體撤銷。這 使所有的客戶能請求'撤銷'整個的最近改變,保持整個文檔處於己知的"良好" 狀態。數據的同步不限於一組預定義的數據消費者的集合。換而言之,新的數據消 費者可以在任何時候對任何XML數據註冊以獲取通知,並且馬上能夠如同所有其 他客戶一樣編輯相同的數據。例如,最初只有外部數據消費者1和2可以共享數據。 稍後, 一個或多個數據消費者可以使用數據存儲註冊,並且開始共享數據。一個數據消費者擔當XML數據的"所有者"並且負責維護XML數據的持 久形式;向請求數據消費者提供數據的副本;從數據消費者接收對數據的改變請求; 以及將改變的通知發送給經註冊的數據消費者。依照一個實施例,數據存儲擔當所 有者並處理所有的更新和對每個數據消費者的通知。XML數據存儲包括可用於諸 如字處理應用程式、電子表格應用程式、幻燈片演示程序和其他數據消費者之類的 不同應用程式的一組接口。各接口針對獲取期望的XML數據片;通知數據存儲 數據消費者想要對數據存儲作出的改變;以及註冊以便從XML數據存儲接收有關其他數據消費者對存儲項目作出的改變的通知。只要數據存儲將改變通知數據消費者,那麼數據消費者可以什麼也不做並 接受改變;請求一個或多個副效應改變以及拒絕改變。副效應改變一般涉及添加響 應於對數據存儲作出的其他改變而起始改變的邏輯。例如,使用股票調査筆記的數據消費者可能希望在數據存儲中的〈stockSymbol^節點改變時接收通知,並且響應 於這一改變向web服務提交數據並更新數據存儲內的〈stockData/〉子樹。為了撤銷/取消,可以將副效應改變與原始改變捆在一起,並且用數據存儲對 它們進行不同地處理。對它們進行不同地處理是因為副效應改變是響應改變而被請 求的,它自身尚未提交給XML數據存儲。如果數據消費者(314和/或318)請求對XML數據存儲302的改變,可以出 於不同的原因拒絕該改變,包括改變是無效的(例如不合式的XML);改變被 數據消費者中的某些邏輯拒絕等。一些數據消費者可以將它們自身版本的數據保存在獨立於XML數據存儲302 維護的存儲器320中。維護該XML數據的多個副本會導致問題,包括副本可能沒 有同步(例如,在性質面板中的'標題'與內聯在文檔中顯示的'標題'不相匹配)。 為了解決該問題,在會話期間維護每一XML數據片的一個"主"副本。接著在會 話期間由多個數據消費者使用該主副本。當會話結束時,可以更新數據的其他副本 以便反應XML數據存儲的當前狀態。依照一個實施例,數據存儲302可以被配置 成合併來自不同數據存儲的相同項目,接著保存每個副本並在稍後退出。當接收到 對公共數據項目的請求時,數據存儲302將這兩個數據存儲項目包裹在單個父節點 中;創建導入與每個數據項目相關聯的模式的合併的XSD;並且將用於該存儲項 目的接口傳遞給數據消費者。數據存儲器302被配置成檢測過多的遞歸,並且在檢測到時,如果數據存儲 檢測到響應於給定改變的副效應的循環就引起自動失敗。依照一個實施例,深度超 過16層或者總的副效應超過1000個的循環被認為是過多的。數據存儲也可以被配 置成當XML數據存儲發現改變在結構上是無效的時,自動地拒絕任何改變及其副效應。這意味著如果客戶請求結構化改變,並且發現該改變在結構上無效,那麼數 據存儲將其自身恢復為最近己知的良好狀態並生成可傳遞給其他數據消費者的錯誤。每個數據消費者(內部314/外部318)也可以拒絕無效的改變。例如,數據消 費者可以包括其自身的驗證層。如果在數據消費者內請求的改變是無效的,那麼用其現有的驗證層拒絕該改變,並且使其自身的數據存儲退回,而無需通知XML數 據存儲。如果該改變是來自XML數據存儲的,那麼數據消費者返回由數據存儲拋 出的事件拒絕,而數據存儲發起取消以返回其'最近已知良好'狀態。在由其他數據消費者請求對數據存儲作出改變的情況下,如果數據存儲具有 與當前數據相關聯的XML模式集合(305),那麼該數據存儲會試圖驗證那些改 變。如果模式存在,那麼數據存儲就拒絕任何結構上的無效。為了支持數據綁定,諸如內部數據消費者1 314之類的內部應用程式數據消費 者處理XML數據存儲內和文檔表面315上的動作之間的交互。當用戶編輯數據綁 定欄位時,該改變影響文檔的內容(於是向應用程式的撤銷棧添加一記錄),但是 也影響數據存儲的XML內容(於是向數據存儲的撤銷棧添加一記錄)。為了幫助 確保表面和數據一直保持同步,應用程式的撤銷棧(用戶與之交互)能夠將表面改 變連同相應的XML數據存儲撤銷引用'綁定,到一個撤銷記錄中,確保每個桟頂 部項目的撤銷能夠保持應用程式和數據存儲處於相同狀態。不同的替換可用於處理用戶發起的撤銷,包括為包括主應用程式的每個數 據消費者維護分開的撤銷桟;共享全局撤銷棧;以及基於當前的焦點限制數據消費 者的撤銷。當使用全局撤銷棧時,數據消費者直接將撤銷請求傳遞給主應用程式,主應 用程序接著將最後一個項目從其撤銷棧取消(撤銷會是相同的,而不管聚焦在應用 程序幀中的哪裡)。這意味著用某些普適記錄將XML數據存儲的所有改變都集中 到主應用程式的撤銷棧上(例如"撤銷性質編輯")。例如,如果在字處理應用程 序中用戶向〈company/^公司)欄位鍵入"Microsoft Corp.(微軟公司)",那麼該 操作導致數據存儲的撤銷棧包括該動作。接著,如果用戶要在字處理應用程式中按 下撤銷以便移除該文本,那麼字處理應用程式撤銷其撤銷棧上最近的操作(並通知 數據存儲撤銷其棧上最近的操作),這會導致其他客戶作出該動作。相反地,如果 用戶接著在字處理應用程式中鍵入某些非綁定文本並在面板中按下撤銷,那麼其他 客戶會丟棄該請求直至主應用程式,這會從其撤銷棧移除最近的動作(在這種情況 下,對文檔表面的編輯)。當數據消費者拒絕XML數據存儲發送的改變時,XML數據會以"壞的"業 務邏輯狀態結束。例如,假設存在對經費報告執行檢查的業務邏輯。邏輯包括檢査 行項目是否超過$100;如果是,那麼數據消費者拒絕對〈LineltemAmount^ (行項 目量)的更新。如果不是,那麼數據消費者使用新的行項目量更新總數。如果總數超過$500,那麼數據消費者拒絕對々eportTota1/〉(報告總價)的更新。現在使用以 上邏輯,假設用戶輸入$50的發票行,使得總價高於$500,那麼第一邏輯檢査成功, 但是第二邏輯檢查拒絕對總價的更新。這意味著如果僅撤銷最近的改變,那麼就會 有發票使得行項目的總和與總價不匹配。結果,依照一個實施例,撤銷原始改變的 所有副效應。數據存儲302用作允許將這些處理捆在一起以供撤銷的處理機制。依照各實 施例,使用處理'拒絕'的三個不同的替換。首先,數據存儲可以發出撤銷改變以 返回到有效狀態(也稱為"退回")。第二,撤銷和取消具有不一致(non-parity), 而第三,客戶都不能取消。第一個替換是使得XML數據存儲發出撤銷改變,以回到有效狀態。這必須撤 銷所有的操作返回觸發商業邏輯錯誤的改變。在該替換中,XML數據存儲可以發 出將'撤銷'標記設置為真的改變請求,並使得數據消費者對其自身執行這些改變; 以及XML數據存儲可以發出帶有其'撤銷'標記設置的改變請求。以下是一個示 例。用戶編輯客戶1中的節點A{ (客戶1作出內部邏輯) 通知XML數據存儲{ 存儲更新通知客戶2有關A{ 改變B(使其排隊等候,返回OK通知客戶1有關B( 內部邏輯 改變C(內部邏輯通知XML數據存儲(使其排隊等候,返回OKOAC通知客戶2有關C{ 改變D(使其排隊等候,返回OK通知客戶1有關D( 內部邏輯退回DOM改變到D返回失敗通知客戶2撤銷D 通知客戶2撤銷C通知客戶i撤銷 "Microsoft Corp."在這種情況下,XML數據存儲上的撤銷記錄不會主存該處理。相反,它會主 存允許它將控制傳遞給客戶以完成該撤銷動作的標記。假設用戶接著進入字處理應 用程序並執行撤銷應用程式的畫布會向回更新,並且接著將控制傳遞給數據存儲。 XML數據存儲本會嘗試撤銷最近的處理,但是卻看到標記並將控制傳遞給數據消 費者用於該撤銷。數據消費者會執行到該存儲的撤銷請求,並接著將其作為撤銷廣 播給所有其他的客戶。這意味著如果用戶在客戶內執行了動作,之後是對字處理應用程式中不同欄位的動作,那麼撤銷棧會如同存儲應用程式數據消費者1標記(傳遞給進程1)公司-> "Microsoft Corp." +存儲撤銷公司-> "MicrosoftCorp."日期^ "January 20,2005 (2005年1月20日)"日期+ "January 29,2005 (2005年1月29日)" +存儲撤銷標記(傳遞給主應用程式)在這種情況下,如果用戶的下一個動作是在主應用程式中撤銷,那麼主應用程式(和數據存儲)會作出撤銷動作,數據消費者會對其自身的DOM執行撤銷並丟棄撤銷標記。如果用戶的下一個動作是在數據消費者中撤銷,那麼數據消費者會 將把對該動作的控制交給主應用程式(因為頂部的動作僅是'標記'),並且會執 行相同的主應用程式撤銷。圖4示出了實時同步的示例。在最簡單的情況之一下,"實時同步"是指使 得在一個位置(例如字處理器應用程式)出現的對XML數據的用戶編輯實時地反 映在另一位置/應用程式的UI中的能力。當編輯文檔時,影響XML數據的改變被 傳遞給對數據感興趣的其他已註冊的數據消費者,諸如字處理應用程式和性質面 板。這有助於確保每個應用程式的XML數據的內容保持相同。參考窗口 400,打開文檔415以供編輯並顯示性質面板420。在性質(property) 面板(405)和文檔(410)中都顯示了標題。假設窗口 400中的標題(Title) 405從 "Data Binding-Live Sync Integration"改變成"Foo Bar Biz",如窗口 425中的標 題435和標題440中所示。 一旦在性質面板標題435內更新標題,就將改變發送給 字處理應用程式,這樣使得它可以接受或拒絕改變。在該示例中,應用程式接受使 用性質面板應用程式對標題作出的改變,並且文檔內的標題440被更新。圖5-8示出了用於在數據消費者之間的XML數據的實時同步的進程。當閱讀對在此提供的例程的討論時,應當了解,各種實施例的邏輯操作是 作為(l)運行於計算機系統上的一系列計算機實現的動作或程序模塊,以及/或 者(2)計算機系統內互連的機器邏輯電路或電路模塊來實現的該實現是取決於 實現本發明的計算機系統的性能要求來選擇的。因此,所例示的並且構成在此 所述的實施例的邏輯操作被不同地表示為操作、結構性設備、動作或模塊。這 些操作、結構性設備、動作和模塊可用軟體、固件、專用數字邏輯以及它們的 任何組合來實現。圖5示出了兩個客戶和XML數據存儲之間的交互。數據存儲520接收使用應用程式510對節點A作出的用戶編輯。數據消費者 1 530從數據存儲520接收對節點A的改變的通知。作為對節點A的改變的結果, 數據消費者1請求對節點B的副效應改變。數據存儲520使得副效應改變B進入 隊列以供稍後執行。 一旦使得來自數據消費者1的所有副效應改變進入隊列,數據 存儲520就通知數據消費者2 (540)節點A的改變。數據消費者2請求對節點C 的副效應改變。作為響應,數據存儲使節點C改變進入隊列以供稍後執行。此時,完成了與節點A有關的處理,但是仍然有對節點B和節點C的未決副效應改變。 由於數據消費者1請求對節點B的改變,數據存儲將有關對B提出的改變的通知 發送給數據消費者2。數據消費者2不作出任何改變作為響應,並接受這一改變。 類似地,數據消費者2要求對節點C的改變,因此數據存儲將節點C的改變的通 知發送給數據消費者l。數據消費者1接受這一改變。在該示例中,所有改變被所 有感興趣的數據消費者接受。因此,數據存儲提交對數據存儲的改變。簡而言之, 數據存儲允許每個數據消費者響應改變作出任何改變,數據存儲以接受到這些改變 的順序來執行和通知這些改變,由此允許連續地通知它們。圖6顯示了兩個外部數據消費者和對XML數據存儲的改變之間的交互。 在原始改變是由諸如圖5中所示的創建文檔的應用程式之類的內部客戶生成 的情況下,數據消費者作出些許改變。該示例示出來自多個客戶的改變的兩條基本 規則。第一條規則是頂級改變在深度上首先發生。第二條規則涉及使得副效應改變 進入隊列。第一條規則是指改變的副效應在任何新的改變可能發生之前發生。考慮以下 示例,其中數據消費者1執行函數以作出兩個改變。第一個改變是對節點A做出 的,而第二個改變是對節點B做出的。當數據消費者1 (630)請求對節點A的改變時,該通知在XML數據存儲620 接收到改變節點A的請求之後被發送給數據消費者2 (640)。作為響應,數據消 費者2請求對節點C的副效應改變,這被數據存儲放入隊列以供稍後執行。數據 消費者1接著請求對節點B的改變,這也被放入隊列,因為對節點A的改變還未 完成。數據消費者2接受對節點A的改變,並且作為響應,數據存儲執行排隊的 對C的副效應改變。數據消費者1接收對節點C的改變的通知,並可以響應於這 一改變。在該示例中,數據消費者1接受這一改變。數據存儲接著執行數據消費者 1請求的排隊的對B的副效應改變。數據消費者2從它會對其作出響應的數據存儲 中接收改變B的通知。數據消費者2接受這一改變並且各改變被提交給數據存儲。在這種情況下,數據消費者2首先響應對A的改變,這樣使得以下兩行代碼 觸發兩個唯一的改變doc.CustomXMLParts(l).SelectSingleNode.AddNode("foo,,,"bar") doc. CustomXMLParts(l).SelectSingleNode.AddNode("foo2,,,"bar")第二條規則是指由於請求改變的副效應而將其被放入隊列,因此在第一個改 變的副效應發生之前隊列內會放入多個改變的事實。圖7顯示了涉及多個副效應改變的過程。以下示例示出了以下改變。假設當數據消費者1 (730)接收到節點A改變的通知時,希望執行對節點B和C的副效 應改變。響應於對節點B的改變的通知,數據消費者2 (740)希望執行對節點D、 E和F的副效應改變。參見圖7,可以看出作為對節點A的改變的結果,數據消費者1使得其所有 副效應改變在與節點B的改變有關的副效應之前執行。因此,對節點C的改變會 在對節點D、 E和F的改變之前發生。圖8示出了顯示最後執行調用程序的副效應的進程。在這種情況下仍可以看 出由數據消費者1自身生成的副效應會在所有其他的客戶有機會看到改變並生成 它們自身的副效應之後發生。這是必須的副效應,因為XML數據存儲要在它能夠 將成功條件返回給調用程序並允許調用程序提供使用其來作出副效應的事件之前 將改變通知每個客戶(以確保每個客戶有機會接受/拒絕該改變)。可以預知的是 請求改變的數據消費者應該是最後的,以便聽取XML數據存儲的所有客戶是接受 還是拒絕這一改變。同樣,這有助於確保在兩個改變衝突且是非結構化的情況下, 調用程序的改變會獲勝,這也是通常期望的結果。以上的說明書、示例和數據提供了對本發明的組分的製造和使用的完整描述。
權利要求
1.一種具有計算機可執行指令用於同步與計算機生成的文檔相關聯的以及在各數據消費者之間共享的數據的計算機可讀介質,包括將與文檔相關聯的結構化數據項目存儲在數據存儲中,其中所述數據存儲獨立於所述文檔;由第一數據消費者發起對所述數據存儲內結構化數據的改變;確定何時有對所述結構化數據項目的改變感興趣的其他數據消費者;將所述改變通知其他數據消費者,其中所述其他數據消費者可以執行下列至少一項接受所述改變、拒絕所述改變;以及作為所述原始改變的結果發起副效應改變;以及當接受所述改變時將所述改變提交給所述數據存儲,而當拒絕所述改變時就把所述數據存儲退回到發起所述改變之前的狀態。
2. 如權利要求1所述的計算機可讀介質,還包括依照可擴展標記語言(XML) 規範在所述數據存儲內構造所述結構化數據項目。
3. 如權利要求2所述的計算機可讀介質,還包括向允許程序性地訪問所述結 構化數據項目的數據消費者暴露應用程式編程接口 (API);其中當所述文檔打開 時所述API提供訪問所述數據存儲內所述結構化數據項目的能力,並且其中所述 API允許一個以上數據消費者同時訪問相同的結構化數據項目;並且其中所述API 向所述數據消費者提供註冊以獲取涉及所述結構化數據項目中的一個和多個的通 知的能力。
4. 如權利要求3所述的計算機可讀介質,還包括使用由所述第一數據消費者 改變的結構化數據項目的值來更新與所述其他數據消費者之一相關聯的顯示。
5. 如權利要求4所述的計算機可讀介質,其特徵在於,所述副效應改變被放 入隊列以供稍後執行,其中所述稍後執行在每個所述數據消費者都有機會接受、拒 絕和作出副效應改變之後發生。
6. 如權利要求4所述的計算機可讀介質,其特徵在於,當接受時提交所述改 變包括處理每個副效應並確定每個副效應是否被接受。
7. 如權利要求4所述的計算機可讀介質,還包括維護可用於將所述數據存儲 返回到發起所述改變之前的狀態的撤銷列表。
8. —種用於在數據消費者之間共享與計算機生成的文檔相關聯的數據的計算 機實現的方法,包括發起對包含在數據存儲內且與文檔相關聯的結構化數據項目的改變;其中所 述結構化數據項目依照可擴展標記語言(XML)來結構化的,並且其中所述數據 存儲是獨立於所述文檔的;將所述改變的通知提供給已註冊的數據消費者; 將作為所述改變的結果的副效應改變放入隊列以供稍後處理; 確定何時來自所述己註冊數據消費者之一的響應是拒絕所述改變,以及當所 述響應是拒絕時,將所述改變和來自所述數據存儲中的所有數據消費者的任何副效 應改變退回到最近己知良好狀態;以及確定何時每個所述己註冊數據消費者都接受所述改變,以及當每個所述已注 冊數據消費者都接受所述改變時,使用由所述數據消費者之一通過API提供的 XML模式文件驗證所述改變,並且將所述改變提交給所述數據存儲。
9. 如權利要求8所述的計算機實現的方法,其特徵在於,發起對包含在所述 數據存儲內的結構化數據項目的改變;包括暴露為所述數據消費者提供訪問所述數 據存儲內的結構化數據項目的能力的應用程式編程接口 (API),其中所述API允 許一個以上數據消費者同時訪問相同的結構化數據項目。
10. 如權利要求9所述的計算機實現的方法,還包括響應所述通知接收副效 應改變,並延遲對所述數據存儲內的所述副效應改變的執行直至所述改變已被處 理。
11. 如權利要求10所述的計算機實現的方法,還包括將所述數據存儲內的副 效應改變放入隊列中。
12. 如權利要求10所述的計算機實現的方法,其特徵在於,確定何時每個已註冊的數據消費者接受所述改變包括確定何時所述改變被每個數據消費者接受以 及何時每個所述副效應改變的被接受。
13. 如權利要求10所述的計算機實現的方法,還包括維護用於將所述數據存 儲返回到所述最近已知良好狀態的撤銷列表。
14. 一種用於在數據消費者之間同步與計算機生成的文檔相關聯的數據,包括內部數據消費者,被配置成創建和編輯所述文檔並且被配置成與關聯於所述 文檔的結構化數據項目相交互;各外部數據消費者,被配置成與關聯於所述文檔的結構化數據項目相交互;以及數據存儲,被配置成獨立於所述文檔存儲與所述文檔相關聯的結構化數據項 目,其中所述數據存儲包括API代理程序,被配置成與所述外部數據消費者和所 述內部數據消費者交互並且被配置成接收所提出的改變且響應所述提出的改變將 所提出的改變通知己註冊的數據消費者,當所述提交的改變被接受時將所述改變提 交給所述數據存儲而當所述提出的改變不被接受時,確保所述數據存儲處於有效狀 態,其中所述數據存儲還包括改變存儲,被配置成存儲所述提出的改變和與所述提 出的改變相關聯的副效應改變;以及撤銷存儲,被配置成使所述數據存儲退回所述 有效狀態。
15. 如權利要求14所述的系統,還包括依照可擴展標記語言(XML)規範在 所述數據存儲內構造所述結構化數據項目。
16. 如權利要求15所述的系統,其特徵在於,所述數據存儲還被配置成將所 述副效應改變放入隊列以供稍後執行,其中所述稍後執行被配置成在每個已註冊的 數據消費者都有機會接受、拒絕和作出副效應改變之後發生。
17. 如權利要求16所述的系統,其特徵在於,所述數據存儲還被配置成處理 每個副效應並確定每個副效應是否被接受。
18. 如權利要求16所述的系統,其特徵在於,所述數據存儲被進一步配置成 接收對應用於所述結構化數據項上的可擴展標記語言(XML)標記數據的改變;讀取對所述XML標記數據的改變所指向的、與所述結構化數據項目相關聯的 XML模式文件;依照所述讀取的XML模式文件,確定對所述XML標記數據做出的改變是否 有效;以及如果依照所述讀取的XML模式文件對所述XML標記數據的改變是無效的, 則不允許對所述XML標記數據的改變;而當依照所述讀取的XML模式文件對所 述XML標記數據的改變是有效的時,則提交所述改變。
19. 如權利要求16所述的系統,其特徵在於,所述數據存儲包括各自包括撤 銷存儲和改變存儲的多個XML數據存儲。
20. 如權利要求19所述的系統,其特徵在於,每個撤銷存儲被配置成與所述 其他撤銷存儲通信。
全文摘要
將一或多個數據存儲與文檔內主呈現存儲分開地保存,從而存儲、關聯並允許使用與計算機生成文檔相關聯的任意數據。數據存儲向數據存儲中的各種數據片暴露應用程式編程接口(API),以允許不同應用訪問和操作一或多個數據片。多個客戶應用程式可訪問和編輯同一文檔數據片,並且解決對一給定數據片的任何有衝突的改變。每個數據消費者可以接收或拒絕改變並能作出附加的副效應改變作為原始改變的結果。這樣,可以在數據消費者之間實時地同步數據。
文檔編號G06F17/00GK101263480SQ200680033162
公開日2008年9月10日 申請日期2006年9月7日 優先權日2005年9月9日
發明者A·泰爾哈特, B·M·瓊斯, D·巴拉克, M·斯維基, R·A·利特爾, S·庫帕拉, T·A·戴維斯 申請人:微軟公司

同类文章

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

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有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-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀