TWI472934B - 用於交叉同步資料之方法、物品及裝置 - Google Patents

用於交叉同步資料之方法、物品及裝置 Download PDF

Info

Publication number
TWI472934B
TWI472934B TW97104848A TW97104848A TWI472934B TW I472934 B TWI472934 B TW I472934B TW 97104848 A TW97104848 A TW 97104848A TW 97104848 A TW97104848 A TW 97104848A TW I472934 B TWI472934 B TW I472934B
Authority
TW
Taiwan
Prior art keywords
data item
client
data
synchronization
cross
Prior art date
Application number
TW97104848A
Other languages
English (en)
Other versions
TW200842627A (en
Inventor
Ricard Roma Dalfo
Rolando Jimenez Salgado
Satish Thatte
Anton Kirillov
Maarten Mullender
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of TW200842627A publication Critical patent/TW200842627A/zh
Application granted granted Critical
Publication of TWI472934B publication Critical patent/TWI472934B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)
  • Multi Processors (AREA)

Description

用於交叉同步資料之方法、物品及裝置
本發明係關於交叉同步資料之技術。
在一用戶端-伺服器系統中,通常存在多個用戶端裝置與一或多伺服器通信。由用戶端-伺服器系統提供之一服務係能夠同步在一用戶端裝置及一伺服器之間以及經由一伺服器之多個用戶端裝置之間之資料。當單一使用者使用多個用戶端裝置(例如一膝上型電腦及一桌上型電腦)時,可能期望此功能。該伺服器可以被用於促進從一用戶端裝置傳送至另一用戶端裝置之資料之改變,從而使一使用者不需要多次進行相同改變。但是在一些情況中,一用戶端裝置可能需要與一個以上之伺服器保持同步。如此可能使同步操作變得複雜,其係由於一同步操作可能干擾另一同步操作,一同步操作可能慢於另一同步操作,一同步操作可能具有連通性而另一同步操作沒有,以及其他原因。因此,需要一裝置或網路之經改進同步技術。
提供本“發明內容”係為了以一簡化方式介紹一組概念,在下文之“實施方式”中將進一步對其進行描述。本“發明內容”無意於確定本申請專利之發明的關鍵特徵或基本特徵,也無意於用來限制本申請專利之發明範圍。
各種具體實施例可針對用於使用由多個用戶端-伺服器系統提供之服務的用戶端裝置之交叉同步技術。更特定言之,一些具體實施例可針對用於同步在多個用戶端資料庫及多個用戶端裝置之間之資料的交叉同步技術。當例如每一用戶端資料庫使用不同用戶端-伺服器系統中之不同伺服器實施一獨立同步技術時,這一點可能是有利的。在一具體實施例中,例如,一用戶端裝置可包括一交叉同步組件。該交叉同步組件可被配置用於:在多個用戶端裝置之間,使用多個同步電路同步不同應用程式的多個資料項目。該交叉同步組件可以判斷:在第一用戶端裝置對多個資料項目做出的修改是否經由使用一致性資訊被傳播至一第二用戶端裝置,該一致性資訊係由一一致性群組之一一致性群組項目維持,該群組中包括該等資料項目。採用這一方式,對於由不同用戶端資料庫所維持之資料的修改可以一種有效方式促進或複製到其他用戶端裝置,而不會干擾不同用戶端-伺服器系統之間的任何同步操作。同時亦描述和主張其他具體實施例。
各種具體實施例可針對用於同步在多個用戶端資料庫及多個用戶端裝置之間之資料的交叉同步技術。當例如每一用戶端資料庫使用不同用戶端-伺服器系統中之不同伺服器實施一獨立同步技術時,這一點可能是有利的。舉例而言,一用戶端裝置可包含用於一產能應用程式之一第一 用戶端資料庫或資料儲存,該應用程式例如來自由華盛頓雷蒙德的微軟公司所開發的MICROSOFT® OFFICE應用程式(例如一MICROSOFT OUTLOOK®應用程式)組合軟體。。該產能應用程式可使資料與一第一伺服器同步,例如一MICROSOFT EXCHANGE®伺服器。該用戶端裝置也可包括一第二用戶端資料庫或資料儲存,用於由一商務營運(LOB,line of business)應用程式所使用之商務營運資料。可以使該LOB資料與一不同於該第一伺服器之第二伺服器同步。舉例而言,該第二伺服器可包括一用於一LOB系統之中間層LOB伺服器。但是在一些情況中,由該等用戶端裝置使用之不同同步技術可導致在該第一用戶端資料庫及第二用戶端資料庫所儲存資料之間產生不一致資料。舉例而言,將資料儲存在該第一用戶端資料庫中之一產能應用程式可內嵌或引用由該第二用戶端資料庫儲存之LOB資料。但是,為該第一用戶端資料庫所儲存資料使用的同步技術可以不同於由該第二用戶端資料庫所儲存資料使用的同步技術。結果,可能出現一些情況,其中每一用戶端裝置之個別資料庫之間的資料可能在不同時間內進行同步,或者根本未進行同步,從而導致一既定用戶端裝置上內部資料庫之間的不一致。結果,該用戶端裝置可能需要高效率地交叉同步多個內部用戶端資料庫之間的資料,而不會干擾或影響每一用戶端資料庫及不同伺服器之間的同步操作。相應地,各種具體實施例包括一種交叉同步技術,其以一種高效率及有效的方式交叉同步各種用戶端資料庫 及各種用戶端裝置之間的資料。
值得注意,儘管一些具體實施例可以使用“第一”、“第二”、“第三”等詞語來描述結構、事件、邏輯及操作,此等詞語僅被用作標記,而無意於對其物件施加數字上的要求。另外,對於一既定實施方式,使用此等詞語之任何結構、事件、邏輯或操作可以被顛倒。舉例而言,在一具體實施例中,該第一用戶端資料庫可包括一OUTLOOK用戶端資料庫,該第二用戶端資料庫可包括一LOB用戶端資料庫,而在另一具體實施例中,該第一用戶端資料庫可包括一LOB用戶端資料庫,該第二用戶端資料庫可包括一OUTLOOK用戶端資料庫。類似地,在一具體實施例中,該第一伺服器可包括一EXCHANGE伺服器,該第二伺服器可包括一中間層LOB伺服器,而在另一具體實施例中,該第一伺服器可包括一LOB伺服器,該第二伺服器可包括一EXCHANGE伺服器。因此,“第一”、“第二”、“第三”等詞語僅被用作標記,以區分元件,而非限制該等元件之結構、事件、邏輯或操作。
第1圖說明一同步系統100之一具體實施例。該同步系統100可能適於同步在各種裝置及系統之間之資料。如第1圖所示,該同步系統100包括兩用戶端-伺服器系統。該第一用戶端-伺服器系統160包括一伺服器102及用戶端裝置108、128。該第二用戶端-伺服器系統170包括一伺服器122及用戶端裝置108、128。該等伺服器102、122可以各包括個別伺服器資料庫104、124及其他元件。該等 用戶端裝置108、128可各包括個別應用程式110、130及個別應用程式150、180,及其他元件。該等應用程式110、130可各使用個別用戶端資料庫112、132。該等應用程式150、180可各使用個別用戶端資料庫114、134。該伺服器122更可被連接至一應用系統140。該等用戶端裝置108、128也可經由一一致性群組項目(CGI,consistency group item)電路190交流資訊。應當理解,儘管可以根據一用戶端-伺服器系統來描述一些具體實施例,但也可以實施用於點對點系統的其他具體實施例。該等具體實施例不被限制於此上下文中。
例如,在一具體實施例中,該第一用戶端-伺服器系統160可被實施為一EXCHANGE系統,其由華盛頓雷蒙德的微軟公司開發。EXCHANGE係一訊息傳送平台。伺服器102可以被實施為一EXCHANGE伺服器。該等用戶端裝置108、128可以被實施為EXCHANGE用戶端。駐存於個別用戶端裝置108、128且由其執行之應用程式110、130可以被實施為OUTLOOK應用程式。OUTLOOK係一個人訊息管理器,且其係MICROSOFT OFFICE應用程式組合軟體的一部分。儘管經常主要被用作一電子郵件(email)應用程式,但其亦提供其他應用服務,例如行事曆、任務和連絡人管理、記事及一日誌。應用程式110、130可以被用作獨立應用程式,但也可結合EXCHANGE伺服器102操作,以為一組織內之多位使用者提供增強功能,例如共用信箱及行事曆、公共資料夾及會議時間指派。用於OUTLOOK 應用程式110、130之用戶端資料可以被儲存在個別OUTLOOK用戶端資料庫112、132中。
在一具體實施例中,例如,該第二用戶端-伺服器系統170可以被實施為一商務營運(LOB)系統之一部分。一LOB應用系統140可包括各種LOB應用程式,其通常實施於企業硬體平台上,用於商務實體。駐存於個別用戶端裝置108、128且由其執行之應用程式150、180可以被實施為LOB應用程式,例如LOB用戶端應用程式。LOB應用程式係被設計用於提供各種商務應用服務的應用程式。LOB應用程式的實例可包括:客戶關係管理(CRM,Customer Relationship Management)應用程式、企業資源規劃(ERP,Enterprise Resource Planning)應用程式、供應鏈管理(SCM,Supply Chain Management)應用程式,以及其他使用商務導向應用邏輯之商務應用程式。諸如LOB應用程式之類的各種應用程式可以構建及使用自訂資料模型,其被儲存為結構化文件,例如可延伸標記語言(XML,Extensible Markup Language)或者超文字標記語言(HTML,Hypertext Markup Language)文件。在一具體實施例中,例如,伺服器122可被實施為一LOB中間層伺服器系統,其幫助在該LOB應用系統140及該等用戶端裝置108、128之間交流LOB資訊。LOB應用系統140之用戶端資料可以被儲存於LOB用戶端資料庫114、134中。在一些情況下,該等LOB資料庫114、134可以各被稱為一「用戶端資料儲存(CDS,Client Data Store)」,該LOB 伺服器122之伺服器資料庫124可以被稱為「中間層資料儲存(MDS,Middle-Tier Data Store)」。
該等用戶端-伺服器系統160、170之每一者通常實施一獨立的同步技術,用於同步多個用戶端裝置108、128之間的資料。舉例而言,該等用戶端-伺服器系統160、170實施個別同步電路118、138,用於同步用戶端裝置108、128之間的用戶端資料,以及該等伺服器102、122與該等用戶端裝置108、128之間的用戶端資料。資料改變可以來自任意數目的不同位置,包括來自經由一圖形使用者介面(GUI,graphic user interface)在該等用戶端裝置108、128的使用者106,以及來自促進改變的伺服器102、122。在由伺服器102提供之EXCHANGE服務的概念下,也可從其他用戶端發生改變,例如一OUTLOOK Web Access、來自同一使用者之其他OUTLOOK用戶端機器、OUTLOOK的其他同步夥伴、行動應用程式、第三方應用程式,等等。
以實例說明之,該EXCHANGE系統160可經由伺服器102在該等用戶端裝置108、128之間實施一同步電路118。採用這一方式,在用戶端裝置108上對OUTLOOK應用程式110之用戶端資料庫112所儲存的OUTLOOK用戶端資料所做的修改,可以在該用戶端裝置128中被複製到該OUTLOOK應用程式130之用戶端資料庫132,反之亦然。類似地,該LOB系統170可經由伺服器122在該等用戶端裝置108、128之間實施一同步電路138。採用這一方式,在用戶端裝置108上對LOB應用程式150之用戶端資 料庫114所儲存的LOB用戶端資料所做的修改,可以在該用戶端裝置128中被複製到用戶端資料庫134,反之亦然。
但是,當使用同步電路118、138時可能發生問題。例如,在某些情況下,該OUTLOOK應用程式110可包括、共用或者關聯被儲存於該LOB用戶端資料庫114中之LOB資訊。因此,對OUTLOOK用戶端資料集或者LOB用戶端資料集所做出的修改可以在用戶端-伺服器系統160、170之間經由該等同步電路118、138強制多個複製事件。如此可能佔用不必要之頻寬數量以及產生潛在之衝突。此外,可以在內部及外部對於來自許多不同實體之既定資料集進行改變。結合在各種資料儲存及不同伺服器之間發生的多個同步事件,在OUTLOOK用戶端資料集及LOB用戶端資料集之間出現資料衝突及不一致性之可能性變得非常大。
各種具體實施例嘗試藉由在用戶端裝置108、128中實施新穎交叉同步技術來解決此等及其他問題。在一些具體實施例中,該等交叉同步組件116、136可以被實施於該等個別用戶端裝置108、128中。例如,在一具體實施例中,該交叉同步組件116可以被用於同步對用戶端資料庫112、114所儲存之用戶端資料的改變。例如,在一具體實施例中,該交叉同步組件136可以被用於同步對用戶端資料庫132、134所儲存之用戶端資料的改變。在一些情況下,該等交叉同步組件116、136可以執行同步操作,同時減少該等同步電路118、138上的不必要通訊流量。該等交叉同步電路118、138將在解決資料衝突方面為一終端使用 者提供幫助,且最終提供一平台,應用程式開發人員可利用該平台而不需要解決交叉同步問題。值得注意,儘管一些具體實施例可以針對用戶端裝置108或用戶端裝置128描述交叉同步操作,但應理解,該等同一交叉同步操作皆可被應用於該等用戶端裝置108、128兩者。
當使用於本文時,“組件”及“系統”等詞語意指一電腦相關實體,或者為硬體、或者為硬體與軟體之組合、或者為軟體、或者為執行中之軟體。舉例而言,一組件可以被實施為執行於一處理器上之程序、一處理器、一硬碟機、多個儲存驅動器(光學及/或磁儲存媒體)、一物件、一可執行應用程式、一執行緒、一程式及/或一電腦。藉由說明之方式,運行於一伺服器上之應用程式及該伺服器均可以為一組件。一或多個組件可存在於一過程及/或執行緒中,一組件可位於一電腦及/或分散於兩個或多個電腦中,如對於一既定實施所做之描述。該等具體實施例不被限制於此上下文中。
舉例而言,在一具體實施例中,該等交叉同步組件116、136可以被實施,以在一或多個被設計用於儲存OUTLOOK資訊的本機資料庫與一或多個被設計用於儲存LOB資訊的本機資料庫之間執行一致性檢查。在一些情況下,OUTLOOK可以提供一單一檢視,其具有OUTLOOK資訊及LOB資訊兩者。舉例而言,一OUTLOOK應用程式之“資料夾清單”通常顯示用於多個OUTLOOK項目之多個資料夾。OUTLOOK項目中之一部分係標準OUTLOOK 項目,其被稱為OUTLOOK內建式項目,且通常被儲存於OUTLOOK用戶端資料庫112中,作為一".OST"檔案。但是,該等OUTLOOK項目之一部分可以引用或包含LOB資訊。此等OUTLOOK項目可被稱為OUTLOOK/LOB項目,通常被儲存在OUTLOOK用戶端資料庫112中,作為".PST"檔案。儘管可以在OUTLOOK/LOB項目、資訊及應用程式之概念下描述該等交叉同步組件116、136之各種實施實例,但應理解,該等交叉同步組件116、136可被實施用於任意兩或多個保持相同或類似資料類型的資料庫,以利於在各種保存此等資料之本機資料庫之間進行一致性檢查。
在各具體實施例中,該等交叉同步組件116、136提供了在OUTLOOK用戶端資料庫112、132之間以及個別LOB用戶端資料庫114、134之間移動資料所需要的基礎結構。存在兩種由OUTLOOK所儲存之基本LOB資料集。第一種是儲存於由EXCHANGE所維持之資料夾中的LOB資料(例如,儲存在.OST檔案中)。第二種是儲存於該LOB儲存中之資料夾中的LOB資料(例如,儲存在.PST檔案中)。交換式資料具有更多困難的同步問題,此係因為其資料也可以由其他交換式用戶端改變。對於交換式資料的假定是:其他OUTLOOK用戶端將經由EXCHANGE伺服器102更新至經由同步電路118之MICRSOFT OUTLOOK應用程式110、130同步程序。非交換式資料係LOB儲存中之資料(例如,在.PST檔案中),且此資料可以由LOB用戶端改 變,或者由開啟適當表單之OUTLOOK應用程式110、130改變。但是,該非交換式資料通常不會由EXCHANGE伺服器102改變。非交換式資料之一突出特徵係該等OUTLOOK應用程式110、130將不會經由同步電路118更新此資料。
在各種具體實施例中,該交叉同步組件116將幫助提供一解決方案,以在該OUTLOOK用戶端資料庫112及該該LOB用戶端資料庫114之間執行一致性檢查及同步其間之資料,且該交叉同步組件136將幫助提供一解決方案,以同步在該OUTLOOK用戶端資料庫132及該LOB用戶端資料庫134之間之資料。舉例而言,如果在該OUTLOOK應用程式110中創建一新的OUTLOOK內建項目,且儲存在OUTLOOK用戶端資料庫112之一".OST"檔案中,則將在該LOB用戶端資料庫114中創建一相關交易。在另一實例中,如果在該OUTLOOK應用程式110中創建一新的OUTLOOK/LOB項目,且儲存在OUTLOOK用戶端資料庫112之一".PST"檔案中,則將在該LOB用戶端資料庫114中創建一相關交易。於是,對兩項目之改變均經由該等交叉同步組件116、136被保持為最新。
相對於習知同步技術,該等交叉同步技術可提供幾個優點。一個優點係該等交叉同步技術可以允許來自不同系統之多個物件作為單一物件向使用者顯示。舉例而言,對於一使用者之行事曆上的約會及相關時間物件(例如一時間追蹤物件),即為此種情況。對於該使用者,其係相同約 會,它們正在從事一特定專案。嚴格來說,其係兩個不同系統,追蹤分佈在該等兩系統中之資料。另一優點係該等交叉同步技術可以促進在系統之間進行改變,例如,當該等改變發生於兩分離物件未能保持“一致”的架構之外時,以及當對該用戶端裝置/應用程式所做之改變需要與擁有伺服器進行交叉同步時。
藉由以下實例及使用情景可以進一步描述同步系統100之操作及有用性。許多使用者使用多個裝置來從事其工作。例如,一些使用者在工作時使用一桌上型電腦,而在其他地方使用一膝上型電腦。使用者應當能夠在一裝置上開始工作,而在另一裝置上繼續工作。一管理者可能在在OUTLOOK中擁有雇員連結人,以及來自各種資源之雇員資訊(包括,薪金資訊、組織資訊、審核資訊、經驗資訊,等等),所有該等內容均顯示於OUTLOOK中一合併使用者介面(UI,user interface)中。當管理者在工作時於桌上型電腦上改變此資訊時,他應當能夠在家中繼續工作。如果該資訊中一部分進行同步,而不是全部資訊進行同步,則該同步系統100應當發出一警告。例如,如果因為部分修改未被該LOB系統接受而在同步期間發生一錯誤,則該管理者應當得到提示,且能夠在家中於膝上型電腦上糾正此情景。
該等交叉同步組件116、136使用且利用該等用戶端資料儲存(CDS)與LOB系統之間的同步電路138(有時稱為「CRUD同步」),以及其他同步技術,例如由OUTLOOK 及OUTLOOK EXCHANGE提供的同步電路118。但是,在一些情景中,該等交叉同步組件116、136可能不必被設計為影響此等同步電路118、138。
該等交叉同步組件116、136之交叉同步操作被設計用於使資訊在各種子系統之間保持一致或和諧。該等各部分資訊之間的關係可能很複雜。例如,財會團隊的某位工作人員可能希望OUTLOOK中的連絡人資訊能夠反映CRM系統中該財會部分的連絡人資訊,同時具有在SHAREPOINT中保存的連絡人資訊。這並不意味著所有此等資訊將會相同。OUTLOOK中可能有一些不應被同步至CRM系統之連絡人,反之亦然。並非CRM中之全部連絡人都應被顯示在OUTLOOK中,任意特定連絡人之資訊可能被特別區分出。例如,該財會管理者可能擁有該連絡人不應被共用之個人資訊,例如,配偶生日、寵物名字,或者將在下一次會見中討論的主題。此類資訊通常係該財會管理者之私有資訊,因此,儘管與OUTLOOK連絡人相關,但不應在該CRM連絡人之外的任意位置被看到。
進一步以此為例,在人力資源情景中,雇員連絡人資訊不能被其他人改變。如果一位管理者在其系統中擁有其部門的連絡人資訊,而且一位同事的電話號碼被輸入,使該管理者的系統不能使用它,則該位管理者可能希望改變它。該連絡人的OUTLOOK部分由該管理者擁有。該人力資源部分由LOB系統擁有。該管理者應當能夠修改其自己的部分,而不應受到歸另一系統擁有之部分的妨礙。此等 約束或限制可能藉由對特別屬性執行「升級及降級」操作來實施,下文將更詳盡地進行說明。
在各種具體實施例中,該等交叉同步操作嘗試使各子系統之項目保持一致,儘管該等項目不一定要相同。可以在OUTLOOK項目與LOB項目之間保持一致性之概念下,描述交叉同步操作之主要實例。其他情景包括不同LOB系統之項目間的一致性、包含於文件中之資訊、其屬性以及LOB系統中之項目。「項目」一詞被用於表示一檢視,其係關於一LOB實體、OUTLOOK項目、SHAREPOINT中之文件資訊、或者其他可以被唯一識別且必須被管理之資訊單元。
該等交叉同步操作假定使用者在處理一組位於不同用戶端系統(例如,用戶端裝置108、128)上之項目,且假定應用程式設計者及使用者均希望使該等項目保持同步。此等項目將使用各種同步電路完成其同步,例如同步電路118、138,以及其他可能電路。
在一具體實施例中,將結合OUTLOOK連絡人(OC,OUTLOOK Contact)項目及CRM連絡人(CC,CRM Contact)項目之概念,來描述該等交叉同步組件116、136之交叉同步操作。該等兩系統共用一些資訊,但各有一些不可供另一系統使用之資訊。該OUTLOOK使用者介面顯示兩者之組合。一OUTLOOK視察程式可顯示該OUTLOOK連絡人資訊,且具有一些額外區域用於顯示該等CRM連絡人資訊。
在各種具體實施例中,該同步系統100使用伺服器102同步儲存於OUTLOOK ".OST"檔案中之OUTLOOK連絡人資訊。該使用者可以隨意在LOBi用戶端或非LOBi用戶端上改變該資訊,例如在MICROSOFT OUTLOOK WEB ACCESS (OWA)或使用一遠端裝置。一LOBi用戶端可以是指一支援交叉同步操作之LOB用戶端。
在各種具體實施例中,該同步系統100使用同步電路138之LOBi同步服務,來同步儲存於CDS中之CC資訊。例如,使用者可以使用該LOB之UI在一LOBi用戶端或一非LOBi用戶端上改變此資訊。
該等交叉同步組件116、136升級或降低該OC及該CC之間的屬性。此操作將起始或執行用戶端-伺服器系統160、170之間的交叉同步操作。
至少存在三種基本情景,用於修改由該等用戶端裝置108、128所維持之用戶端資料庫中儲存的資料,以及該等三種情景之組合。首先,一使用者可以修改一LOBi用戶端上之連絡人資訊。該OC修改藉由該同步電路118(例如,OUTLOOK同步)經由伺服器102同步至其他客戶端,該CC修改藉由同步電路138(例如,LOBi同步)經由伺服器122傳播至LOB及其他用戶端。第二,一使用者可以對OWA中之連絡人項目進行修改。此修改傳播至其他用戶端。該等用戶端中至少一者需要將該修改由OUTLOOK連絡人項目傳播至該CRM連絡人項目。根據該LOB,該修改被傳播至該LOB伺服器122之次數不應超過一次。第 三,一使用者可以對該CRM連絡人項目進行修改。該修改傳播至其他用戶端,且該等用戶端中至少一者需要將該修改傳播至該OUTLOOK連絡人項目。組合包括在多個位置進行之修改、連通性之各種狀態以及同步之速度。該等組合之一部分通常會導致衝突,而其他組合應當保持不可被該使用者看見。衝突經常也可以被自動處理,否則它們必須被表現出來,使該使用者能夠解決該問題。該等交叉同步組件116、136應當被設計用於偵測全部衝突,但僅在需要時顯示衝突。
該等交叉同步組件116、136應當被配置用於執行各種操作群組。第一,該等交叉同步組件116、136應當被配置用於執行一致性檢查,以偵測相關項目之一群組中的全部項目是否與另一群組中之項目一致,如果不一致,則確定哪些項目是新的,哪些項目是舊的。第二,該等交叉同步組件116、136應當被配置用於將對特定項目所做之修改傳播至其他項目。第三,該等交叉同步組件116、136應當被配置用於執行修改偵測,以偵測屬性是否需要被交叉同步。例如,該等交叉同步組件116、136應當知道對一OUTLOOK項目所做之修改是否需要被傳播至一LOB項目,或者反之亦然。第四,該等交叉同步組件116、136應當被配置用於實施擁有權規則。例如,該等擁有權規則可被用於指派哪一用戶端進行更新,且避免特定項目之重複更新。第五,該等交叉同步組件116、136應當被配置用於處理商務錯誤。例如,涉及到相關項目之群組(該等項 目被一起編輯,及應當保持一致性),該等交叉同步組件116、136應當在與該LOB系統同步時處理錯誤。第六,該等交叉同步組件116、136應當被配置用於處理衝突。但是,該等交叉同步組件116、136不一定需要直接偵測衝突,此係因為該等同步電路118、138可以執行此等操作。第七,該等交叉同步組件116、136應當被配置用於處理佔用問題。該等交叉同步組件116、136應當負責等待不一致性得以解決,以及等待多長時間。第八,該等交叉同步組件116、136應當被配置用於執行「復原(Undo)」及「PST」處理操作。例如,一使用者應當能夠刪除一項目,然後選擇“復原”功能以還原原始狀態。第九,該等交叉同步組件116、136應當被配置用於在更新到達時,處理取代會議及任務之OUTLOOK行為。所有附加至該項目之使用者特定資訊在每次更新中將會丟失。第十,該等交叉同步組件116、136應當被配置用於支援「Monikers」。例如,該等交叉同步組件116、136應當處理指向電子郵件中「附帶項目("Bound item")」及其他位置之連結。遵循該連結,將開啟具有相關資訊之OUTLOOK項目。該等moniker可以使用例如用戶端識別碼或LOB識別碼。
在各種具體實施例中,該等交叉同步組件116、136也許不能控制及影響該等同步電路118、138。例如,該等交叉同步組件116、136可以未被通知同步操作將何時發生,或甚至在其已經發生後亦未被通知。結果,在幕後所做之修改可能導致與一使用者所做之修改發生衝突,從而 導致一預期外衝突。因此,該等交叉同步組件116、136應當配置用於僅在該使用者希望該OUTLOOK項目被修改時才改變OUTLOOK項目,從而儘可能避免對OUTLOOK項目之幕後更新。
每次OUTLOOK項目被修改時,該經修改項目藉由該同步電路118經由伺服器102進行同步。此同步可能導致與其他由系統或由一使用者所做之修改產生衝突,且可能無法預測哪一修改將會獲勝。因此,對於OUTLOOK項目所允許之修改數目應當有一實際限制。當系統進行一修改,而使用者正在編輯該項目時,不應當出現問題,因為該UI將一起保存該等修改。但是,該等交叉同步組件116、136應當儘可能嘗試避免在幕後對該項目進行修改。
在各種具體實施例中,該等交叉同步組件116、136應當被配置用於在由用戶端資料庫112、114及/或用戶端資料庫132、134所儲存的資訊之間執行一致性檢查。例如,當一使用者修改OUTLOOK中之一合併約會及時間註冊時,該等兩者被顯示於單一合併使用者經歷、資料檢視或應用程式UI中。如果在一用戶端裝置上一不同位置處,將與一客戶之售前約會修改為一售後約會,則在OUTLOOK之單一表單中完成此操作。但是,該修改之該等兩部分(例如,該約會及時間註冊)經由不同的同步電路118、138獨立傳播至該等其他用戶端裝置。該位置修改使用該同步電路118經由該伺服器102進行傳播,而該專案修改使用該同步電路138經由該伺服器122進行傳播。 如果該使用者在另一用戶端裝置開啟該約會,且該修改僅部分被傳播,則由該約會及時間註冊項目合併的資訊將會不一致,而該等交叉同步組件116、136應當通知該使用者。此外,該使用者將會獲知哪一部分係過期的,且提供該使用者具有糾正及儲存該項目之選項。
在某些方面,一致性及交叉同步是兩個可能需要不同解決方案之相關問題。擁有屬性升級及降級,意味著該等項目應當被保持一致,且它們應當一起漫遊。然而反過來不一定成立。在一些情況下,該等項目應當一起漫遊,且如果他們沒有一起漫遊,則該使用者希望得到一警告,但是屬性不需要被來回複製。這意味著當項目群組之屬性升級/降級已被定義時,該項目群組為應當被保持一致性之項目群組之一子集。
在各種具體實施例中,該等交叉同步組件116、136應當被配置用於對所有必須被保持一致的項目使用一致性群組。一致性群組包含OUTLOOK項目、LOB項目及其他項目之任意集合。在一具體實施例中,每個項目可以僅是該等項目的一個且惟一一個一致性群組的一部分,該等項目是該交叉同步過程之一部分。在其他情況下,該等交叉同步組件116、136只需要檢查該等項目是否已經一起進行同步(漫遊),且在未一起進行同步時提出警告,在此情況下,該限制不再適用。
一般來說,一致性群組共用許多特徵、功能或實施細節。舉例而言,一致性群組通常具有一配置。一致性群組 還具有一類型。一致性群組實體具有一識別碼。可以程式方式添加及刪除項目,只要該等項目符合該群組之定義即可。亦支援不完全一致性群組。例如,一定義了三個項目之一致性群組可以僅包含該等項目中的兩個。
為每一個一致性群組,創建一一致性群組項目(CGI),其保存所有該等一致性資訊。此CGI被儲存在CDS中,且使用該標準CRUD機制複製到該漫遊服務,如該CGI電路190所示。該CGI可以藉由用戶端-伺服器系統160、170,經過另一網路裝置或伺服器或網頁服務被複製,或者直接經由點對點聯網技術進行複製。該等具體實施例不被限制於此上下文中。
該CGI擁有所有必要關鍵資訊及版本資訊。根據該項目類型及同步電路之能力,該版本資訊可以是對全部屬性、時間戳記及某一其他特定版本識別符之雜湊。對於每一項目類型,該等交叉同步組件116、136可使用一外掛程式。如果該CGI資訊沒有匹配一或多個項目,則該群組不一致,且該等交叉同步組件116、136可以推斷哪些部分係較新的部分。
在各種具體實施例中,該等交叉同步組件116、136使用一漫遊服務,以同步在用戶端裝置108、128之各種內部用戶端資料庫之間之資訊。例如,在一具體實施例中,該CGI係個人的,它在一使用者之裝置之間漫遊,但不共用於使用者之間。該等交叉同步組件116、136可能使用該等交叉同步電路118、138中之一者或兩者以漫遊/同步該 CGI。
在各種具體實施例中,該等交叉同步組件116、136為應用程式提供一API,該等應用程式開啟、編輯及儲存一致性群組。在每一次做出或偵測到一應當由該用戶端裝置處理之修改時,該等經修改項目之新雜湊總和被計算,且與該等新時間戳記一起儲存。該CGI於是將與其他系統同步。
在各種具體實施例中,該等交叉同步組件116、136可被配置用於執行升級及降級操作。可以採用事件處理器描述之形式來組織該屬性升級及降低。舉例而言,可以提供描述,以說明在各種情況下將複製哪些屬性,例如以下情況:由一OUTLOOK項目創建一新LOB項目,由一LOB項目創建一新的OUTLOOK項目,一LOB項目係關聯一OUTLOOK項目,一OUTLOOK項目之屬性已經被改變,一LOB項目之屬性已經被改變,OUTLOOK及LOB項目均已被改變(自動衝突解決),OUTLOOK項目已經被刪除,LOB項目已經被刪除,該等項目被一起儲存,該等項目正在被編輯,等等。應當實施邏輯以限制該綁定(例如,升級及降級)行為,以避免級聯(cascading)更新。一級聯更新之實例可包括對一OUTLOOK項目之修改,其導致對5個LOB項目之更新,該等更新之每一者可更新其他OUTLOOK項目,等等。應當儘可能地被避免此條件發生。
在一般操作中,該等交叉同步組件116、136僅在一致性群組之概念下執行交叉同步操作。例如,在一具體實施 例中,該等交叉同步組件116、136應當僅在該相同一致性群組中的項目之間執行。在該一致性群組之內,該解決方案為每一事件定義哪些屬性必須在項目之間被傳播。一同步儲存中之一新項目(例如,在用戶端資料庫112、114中之一新LOB項目)可能觸發創建一新一致性群組。舉例而言,由該LOB系統發送之一LOB項目可能導致創建多個OUTLOOK項目。該LOB項目於是將具有與該等OUTLOOK項目之一升級/降級關係。在交叉同步操作中所有相關用戶端應當被配置用於處理整個升級/降級群組(其中全部LOB實體可用),否則該等用戶端應忽略該升級/降級行為。
對於每一事件,該一致性群組定義包含定義該升級/降級事件特定行為。該定義可包括一操作清單,其定義例如項目創建、項目刪除、將由源項目複製到目標項目之屬性、複製序列,等等。如果定義了一特定操作,而在該操作中源項目或目標項目不為該群組之一部分,則可略過該操作。升級/降級行為可被實施為一可插式組件,且該行為可以被任意修改,而且在一些情況下包括某一商務邏輯。該一致性群組定義規定該等項目必須以何種順序進行儲存,以及在發生失敗時必須做些什麼。或者,該操作清單或一個別操作可以被一工作流排程取代。
該項目類型之能力及該同步電路之能力確定了一項目是否可以被創建、刪除、作為一操作之源或目標。這可以依事件不同而產生不同狀況。一特定類型的外掛程式可以 定義該等能力,例如藉由使用屬性。
對於每一項目類型可指定一外掛程式。該外掛程式被要求擷取屬性資訊、設定屬性資訊、儲存該項目及其他所需要之操作。舉例而言,該等交叉同步組件116、136不需要知道該等項目之資料格式或者任何其他特定資訊。一升級/降級處理器可以被用於負責一特定一致性群組類型之交叉同步操作。
對一OUTLOOK項目或者一LOB項目之修改需要被傳播至其他項目。該同步系統100偵測到該項目已經改變,且該等改變必須被傳播。可以藉由儲存對該項目之升級/降級之源屬性的雜湊來處理此問題。舉例而言,它可以是一組用於修改事件之源屬性。當所計算之雜湊與所儲存之雜湊不匹配時,表示一非LOBi應用程式已經修改了該項目。該等交叉同步組件116、136不需要知道是否其他屬性之任何一個已經被修改。
該同步系統100將修改事件之全部源屬性的雜湊總和與項目儲存在一起。將不影響該經計算雜湊之修改忽略。當該經計算之雜湊不同於已儲存雜湊時,該等LOBi系統中至少一者必須執行該屬性升級/降級。如果該項目類型沒有儲存該雜湊之能力,則該類型不能加入作為升級/降級之源物件。
在各種具體實施例中,該等交叉同步組件116、136可能需要處理擁有權問題。擁有權係關於誰負責將一致性群組之項目保持在一致性狀態,或者使其變為一致性狀 態。如果一LOBi應用程式進行一修改,則該LOBi應用程式負責一致性最終結果。根據該等修改偵測操作,如果另一用戶端接收到該修改之其他部分,且其餘部分尚未到達,則其他用戶端只能等待,直到其餘部分到達為止。但是,如果一項目是由一諸如OWA、pocket OUTLOOK之非LOBi應用程式修改,或者由諸如SAP入口之LOB應用程式修改,則該等修改需要被傳播,且其僅需要被傳播一次。在此情況下可能會使用該等同步電路118、138之不同能力。舉例而言,假定經由交換(exchange)所做之一修改被偵測到,且該修改需要經由該修改偵測邏輯進行傳播。如果多個用戶端平行進行此操作,則經由同步電路138之CRUD同步接收到多個對基本相同之更新的請求。該LOB項目之值將會相同,但為該一致性群組定義的版本資訊將會不同。該同步電路138將能夠解決此衝突。
其他同步情景可能由於缺乏對同步操作之控制而更為複雜。舉例而言,經由LOB系統做出且由CRUD同步傳播至用戶端資料庫114或134的修改,不應當由多個用戶端處理,因為如此會在OUTLOOK中導致衝突。此處,有可能必須創建新的OUTLOOK項目,同時避免重複創建。但是,即使在不同機器上對相同項目之更新會在OUTLOOK中導致(通常是隱藏的)重複,而且附加雜湊及版本資訊將會導致額外的複雜性。值得注意,一既定一致性群組內之可能功能係由該等項目類型及其同步通道的能力定義。如果該目標之同步電路不支援重複偵測,則交叉同步需要 擁有權邏輯。如果該目標之同步電路支援重複偵測,則交叉同步操作可繼續應用該修改。
根據該(等)目標之功能,必須建立擁有權。如果該等目標項目是LOB項目,則所有用戶端可執行升級/降低行為。如果該目標包括一OUTLOOK項目,則首先必須指派擁有權,以便僅一用戶端可進行該修改。該資訊被維持於該組態中,其可由該解決方案之設計者設定。
在各種具體實施例中,該等交叉同步組件116、136使用一擁有者服務,其允許一用戶端請求對一特定一致性群組之特定版本的擁有權。為了執行一被標記為需要擁有權之事件,該用戶端請求對目前版本之擁有權。如果被授予該擁有權,則該用戶端或者立即或者在稍後執行該事件。一特定版本之擁有權係永久的。沒有其他用戶端會自動嘗試執行相同事件。該使用者總是開啟該項目,且強制在沒有擁有權之系統中執行該事件。此可能導致一衝突,可能的話其應當被自動解決。一旦擁有權被指派,其不再改變。此意味著如果該通信不完整,則相同用戶端將再次接收該特定版本的同一擁有權資訊。該裝置識別碼被添加至該CGI。在每次對相同項目進行後續修改時,擁有權被重定。
在各種具體實施例中,該等交叉同步組件116、136可被配置用於處理各種商務錯誤。與相關項目之群組(其被一起編輯且保持其一致性)相關聯的問題是:在與該LOB系統進行同步時,處理錯誤所面臨的問題。一單一表單使 一使用者同時編輯多個項目。該等項目被一起儲存,然後個別進行同步。如果在同步該等項目之一時報告一商務錯誤,則該等修改不會被該後端系統接受。因此,當後續用戶端進行同步時,它們將不會接收到被拒斥項目,但它們將接收其他項目,從而處於一不一致狀態。
當該LOB送回一商務錯誤時,CRUD同步將通知該等交叉同步組件116、136。該等交叉同步組件116、136於是將在該CGI中儲存該錯誤資訊以及被拒斥版本(例如,可能是delta)。交叉同步操作還原該原始項目。如果資料存取層(DAL,data access layer)、CDS及CRUD同步邏輯支援此特徵,則該項目本身將被設定為錯誤。該CGI以及所有被接收之項目將被同步至其他用戶端,使所有用戶端可以呈現相同的使用者經歷。該使用者經歷可以使全部已修改資訊、被拒斥項目的原始版本及該LOB送回之錯誤資訊可供使用。該CGI以及所有被接收之項目將被同步至其他用戶端,如此使所有用戶端可以呈現相同的使用者經歷。
在各種具體實施例中,該等交叉同步組件116、136可被配置用於處理衝突。例如,在一具體實施例中,發生衝突之修改將由同步電路118、138偵測到。該等交叉同步組件116、136將不會嘗試偵測衝突,而是由該等同步電路118、138嘗試偵測該等衝突。當CRUD同步(例如,同步電路138)偵測到一衝突時,該等交叉同步組件116、136將參與該衝突之解決。對於同步電路118偵測到之衝突執 行相同操作。由EXCHANGE同步偵測到之衝突將經由設定最後一次修改獲勝而解決。該同步系統100可能必須偵測到該同步電路118解決了一衝突,然後處理可能存在之不一致性。
在第一衝突實例中,一使用者在該用戶端裝置108上將一項目群組由版本X修改為版本A,在用戶端裝置128上修改為版本B,如下面的第1表說明:
假定交換(exchange)首先同步,然後讓版本A“獲勝”。複本B被保留,如下面的第2表所示:
Exchange中的版本保存了A、B兩個複本,但只有可由該使用者直接看見的複本A將必須進行同步回用戶端裝置108。取決於連接情況,該同步可能立即進行,或者可能花費一點時間。
幾乎同時,CRUD同步進行自己的工作,且該等用戶端之一將首先同步。中間層及LOB只是接收該版本。進行同步的用戶端和中間層都不再儲存原始資訊(X)。後期同步的用戶端將仍然保有它。用戶端裝置108進行同步,如下面的第3表所示:
用戶端裝置128進行同步,如下面的第4表所示:
另一端接著將嘗試同步,而一衝突被偵測到。但是,與Exchange同步相對,CRUD同步不會自動選擇一版本優先於另一版本,它將保存全部相關複本,包括原始版本、LOB中之目前版本及發生衝突之版本(X-A-B或X-B-A),如下面的第5表及第6表所示:
最終,全部用戶端將接收全部相關資訊,如下面的第 7表及第8表所示:
將擁有足夠資訊之第一用戶端應當解決該衝突。此衝突解決方案可能具有一些會被CRUD同步識別為重複的修改,但它們也可能具有一些將被Exchange同步視為衝突的修改。取決於該既定情景,該用戶端必須先請求擁有權然後才能執行解決衝突。
上文所使用之上述實例說明為自動解決衝突設計解決方案的重要性。如果A在Exchange和後端均獲勝,則在技術上存在一種一致性狀態。如果A在Exchange中獲勝, 且B在後端中獲勝,則明顯存在不一致性。例如,在一具體實施例中,該等交叉同步組件116、136將使A在第一種情景中獲勝,但它將使該使用者知道一衝突已經被解決。該使用者將能夠選擇該替代者且修改至B。
在第二種情況中,該一致性群組將被設定為一錯誤狀態,類似於一商務衝突之情況,且該使用者將可以在A及B之間進行選擇,以糾正該情況。
在一衝突之第二實例中,假定一使用者在該用戶端裝置108上進行一修改,如下面的第9表所示:
該資訊僅一部分同步至該用戶端裝置128,如下面的第10表所示:
該使用者決定在該使用者裝置128上開啟該項目。該等交叉同步組件116及/或136偵測到該不一致,且警告該使用者。儘管如此,該使用者修改該項目且儲存它,如下面的第11表所示:
如果該等同步電路同步該等項目,則一些電路將會偵測衝突,而其他電路將不會偵測衝突,這是因為在該同步電路上沒有衝突。但是,希望輸出結果是最終修改(B)獲勝。
該等交叉同步組件116及/或136將在CGI中標記該事件,及該等用戶端裝置108、128將自動解決該衝突。由於該資訊不是完全可用的,因此該使用者不能回復至版本A。在此實例中,該同步電路118已經偵測到沒有衝突,且將僅使版本B可用。但是,如果選擇同步電路138,則結果相同。在一具體實施例中,所有丟失的資訊可能被儲 存在CGI中,以減少此等問題。
在各種具體實施例中,該等交叉同步組件116、136提供了一種可配置衝突解決器。該可配置衝突解決器提供一既定同步組件之配置資訊。該可配置衝突解決器提供一預設可配置組件,如果情景是一致的,則該組件保持該情景之狀態,而允許使用者修改,如第一實例所示。如果情景是不一致的,如第二實例所示,則該可配置衝突解決器提供一三向合併(例如,屬性位準合併)、時間式獲勝者(例如,最後者獲勝)、來源式獲勝者(例如,用戶端獲勝還是LOB獲勝),或者使該衝突保持未被解決狀態,而將其看作一商務錯誤。
在各種具體實施例中,該等交叉同步組件116、136偵測一LOB項目上之衝突,或者得到有關其之通知。其能夠存取三個版本:原始版本、LOB目前擁有之版本,以及其擁有之衝突版本。其可以偵測已經位於該LOB上之競爭版本是由另一LOBi用戶端創建,還是直接在該LOB中創建。如果該競爭版本不是來自一LOBi用戶端,將不會存在任意其他相關競爭項目,且該衝突應被立即解決。該等交叉同步組件116、136在該CGI中儲存全部衝突資訊。所有相關項目的全部新版本被儲存在該CGI中,直到對該群組做出新的修改為止。但對已經儲存該資訊的項目(例如,OUTLOOK)為一例外。於是,該使用者以一種可配置方式得到通知。如果該競爭版本來自一LOBi用戶端,則該系統將等待該CGI到達,或者交叉同步操作繼續下一階 段之操作。如果該等交叉同步組件116、136在該CGI上偵測到一衝突,則它將等待,直到衝突中的全部項目均已到達,然後繼續操作。
如果該等交叉同步組件116、136擁有完整的衝突資訊,包括該CGI以及該衝突中的所有相關項目,則該等交叉同步組件116、136將解決該衝突。該可配置衝突解決器可被用於一期望實施之衝突解決邏輯。該等交叉同步組件116、136在該CGI中儲存全部衝突資訊。所有相關項目的所有相關新版本被儲存在該CGI中,直到對該群組做出新的修改為止。但對已經儲存該資訊的項目(例如,OUTLOOK)為一例外。
如果該等交叉同步組件116、136偵測到一使用者已經經由一非LOBi應用程式在OUTLOOK中選擇一替代版本,則該適當交叉同步組件請求擁有權,使該群組保持一致。可以藉由從該CGI中選擇相應版本,或者藉由應用屬性升級/降級來達到此目的。該等交叉同步組件116、136更新該CGI。該等交叉同步組件116、136支援該應用程式(例如,OUTLOOK增益集)選擇另一版本。
在各種具體實施例中,該等交叉同步組件116、136可以處理佔用情景。在一些情況中,該同步系統100必須等待完整資訊。此資訊可在某一點到達,或者它可能因為各種原因而永遠不會到達。該使用者可能已經做了一些工作,或者另一系統可能已經無法使用或者其僅用於其它目的。此等情況包括:(1)由一租用管理之不完整同步或更 新;(2)在另一LOBi用戶端上之一致性修改之不完整同步;及(3)不完整衝突資訊。所有三種情況的共同問題是:選擇要等待其餘部分到達(其可能發生也可能不發生)或者決定一適當等待期間,當超過該期間時則允許該使用者繼續工作。
該同步系統100可以偵測部分同步。在一些情況下,該同步系統100可以解決該問題,因為它知道重複更新只會導致通信及計算額外負擔,而不會導致錯誤或令人混淆之行為。只是在該訊息的標頭中出現一個警告,顯示一衝突已經被解決,這一方式可能是適當的。在這些情況下,在偵測之後不久,該部分更新可以在該裝置上被完成。
但是,其他情況可能更為關鍵,例如,一新OUTLOOK項目之創建,或者一影響多個項目之修改的部分傳播。同步系統100可以不自動解決這些問題,而是向使用者提供有關該項目自身之資訊,或者在「系統匣應用程式("System Tray Application")」中提供一訊息,該訊息顯示「在其他位置進行的更新尚未被完全同步:按一下此處,查看未完成項目的清單」,或者在後續螢幕上顯示有關解決這些衝突的一些額外警告。選擇一項目,編輯且儲存它,創建該項目及該群組之一新版本。此新版本於是將覆寫任何尚未處理的修改。
該佔用邏輯可包括該同步系統100,在一短暫延遲之後為非關鍵修改執行更新。可以根據典型同步間隔及特定使用情景定義該延遲。非關鍵修改之實例可包括:以用於 偵測及刪除重複內容之同步電路對項目進行升級/降級,僅影響使用包括該CGI之同步電路138的項目的更新,等等。如果可能,該同步系統100將經由該「系統匣應用程式」在經過某一延遲間隔之後(例如,20-30分鐘),提供有關該項目中經部分更新的一致性群組的資訊。系統讓使用者選擇忽略未被處理的同步,且繼續工作。
在各種具體實施例中,該等交叉同步組件116、136可被配置用於處理會議項目和任務項目。與會議及任務相關之一問題是該等更新取代該等現有項目。因此,如果一使用者受邀參加會議,並且使用者藉由添加屬性、一致性等來修改該約會,則當該使用者傳送一更新時,這些修改將丟失。當使用者在OUTLOOK之預覽窗格中檢視該更新時,以及當未使用該預覽而開啟該項目時,會發生此情況。項目之取代有一後果,即該項目在OUTLOOK中不再具有相同的項目識別碼(Entry ID),因此必須使用通用物件識別碼(Global Object ID)來查找。該等交叉同步組件116、136應當確保該等會議及任務在進行更新之後(例如,添加雜湊、升級及降級)被修改,且確保該一致性群組被更新。
在各種具體實施例中,該等交叉同步組件116、136可被配置用於處理moniker。外部應用程式必須能夠使用一LOB識別碼引用與LOB項目相關聯的OUTLOOK項目。該moniker邏輯要求有可能使用一致性資訊(LOB類型及識別碼)來開啟一OUTLOOK項目,有可能使用moniker作為電子郵件及文件中之連結,以及一moniker之求解應 當較快。用戶端資料儲存中之一致性群組必須被用於滿足該等要求。
在各種具體實施例中,該等交叉同步組件116、136可被配置用於一項目之狀態資訊。該等交叉同步組件116、136所需要之各項目狀態資訊可以被儲存在該項目本身中,例如,當其由該服務(例如,LOB服務、EXCHANGE服務或其他服務)管理時,或者,如果該屬性在原始項目中不可用,而且該項目由該同步電路138管理,則它可以儲存在該項目之“封裝”內。
利用一致性群組中之每一項目,可儲存各種類型之資訊,例如該項目之唯一識別碼(對於各種項目類型,該唯一識別碼可能不同)、一致性群組項目識別碼(CGI-ID,consistency group-Item ID)、全域唯一識別碼(GUID,globally unique ID)、對用於交叉同步操作之來源屬性所計算的雜湊(例如,源雜湊)、該項目之唯一版本識別碼,例如一時間戳記、當在該項目上或以該項目可用時之最後修改的時間戳記,等等。
在每一CGI中,可儲存各種類型之資訊,例如,CGI識別碼、CGI之版本識別碼、同步電路所提供之時間戳記、裝置識別碼定義的擁有權,等等。各項目狀態資訊包括該項目類型以幫助找到相關中繼資料中之類型資訊、該項目之識別碼資訊、LOB項目之類型資訊及LOB識別碼、項目識別碼及GUID、該項目之唯一版本識別符、當可在該項目上或可以該項目使用之最後修改的時間戳記、任意錯誤 資訊或衝突資訊、使用者語言之錯誤訊息、被拒斥項目之狀態(原始項目被還原)、有關故意創建的衝突之資訊(全部項目資訊),等等。
在各種具體實施例中,該等交叉同步組件116、136也可保持及儲存各種類型之中繼資料資訊。對於每一一致性群組類型,需要以下定義:(1)一致性群組類型;(2)項目類型清單;及(3)針對每一類型及項目類型的外掛程式說明及受支援事件。對於每一被假定為項目特有之受支援事件,諸如以下資訊被儲存:若需要擁有權時之擁有權說明、操作順序。
在各種具體實施例中,可以使用一具有可插入組件(有時被稱為“外掛程式”)之提供者模型來實施該等交叉同步組件116、136。舉例而言,一CRUD同步外掛程式可被用於同步電路138。在另一實例中,一OUTLOOK-EXCHANGE同步外掛程式可被用於同步電路118。每一外掛程式通常係一獨立組件,可使用獨立機制。其他被插入儲存及同步提供者需要其本身之定義,進而需要機制及可插入組件。該交叉同步架構也可為該等外掛程式定義一組介面。
在各種具體實施例中,該等交叉同步組件116、136可實施邏輯,以執行前文所述之各種交叉同步操作,以及其他操作。例如,在一具體實施例中,上述各種事件係個別狀態修改,交叉同步組件116、136需要檢測該等修改,且將該等修改用作動作之一觸發器。該等事件可以由 CRUD同步產生,或者由OUTLOOK中之一掃描程序產生。可以存在許多類型的已定義事件,以及該事件之傳輸機制,所有該等機制都被設計用於啟動交叉同步操作。
由該等交叉同步組件116、136執行之基本交叉同步操作可以如下所示。首先,由一用戶端裝置獲得擁有權,然後該用戶端裝置才能在幕後進行修改。該用戶端裝置可以使用該CGI之目前版本呼叫一擁有權服務。如果呼叫用戶端裝置之裝置識別碼被送回,則此資訊被儲存於該CGI中,且送回TRUE值,以表示該擁有權已經由該呼叫用戶端裝置獲得。但是,如果另一裝置識別碼被送回,則此資訊被儲存於該CGI中,且FALSE值被送回,以表示該擁有權被另一用戶端裝置獲得。
在LOBi修改之情況下,一經計算之源雜湊值被指派至一已儲存源雜湊值。
該等交叉同步組件116、136需要確定一項目是否係一致性群組之一部分,以在會議請求及任務請求之情況下,處理OUTLOOK覆寫項目之異常行為。如果該項目沒有CGI識別碼,並且如果該項目係作為一邀請結果之會議或任務,並且如果不存在包含該項目識別碼(例如,該全域物件識別碼)之CGI,則送回不是一致性群組之部分的項目。如果該等測試中任意一者係FALSE,則送回該CGI識別碼。
該等交叉同步電路116、136需要收集所有項目之資訊,以查看該一致性群組是否一致。它還需要處理未處理事件。例如,當該使用者在連接至網路之後立即開啟一項 目時,會存在對於CDS之佇列操作或者來自該CDS之事件的一清單。該CGI可以被開啟,且對於該CGI中之每一項目,為未處理事件發出請求,然後該項目被讀取。如果請求未被處理,則該等未處理請求被排序,該等有序請求被依次執行。受影響之項目隨後被儲存。
如果交叉同步組件116、136不具有全部資訊,並且預期更多資訊將會到達,則交叉同步組件116、136必須等待後續事件。但是,由於各種原因,該等事件可能永遠不會到來。例如,在一具體實施例中,該等交叉同步組件116、136將等待後續事件,但設定一其正在等待之標記。此標記可被「系統匣圖示(System Tray Icon)」應用程式或者其他使用者介面解讀為在一時間延遲之後向一使用者顯示警告。
在一些情況下,該等交叉同步組件116、136也可以處理對於一項目所輸入之創建/更新/刪除(CUD,Create/Update/Delete)通知。該等通知可能源於CRUD同步或者任意另一提供者。OUTLOOK將使用一掃描器程序來偵測修改,然後通知交叉同步組件116、136。如果接收到一項目之「創建」通知,則該等交叉同步組件116、136希望知道是否必須創建一新的一致性群組。這一點對於所有項目類型均相同或類似,包括OUTLOOK項目。如果為該項目類型註冊一創建事件,並且如果不需要擁有權或者已經獲得擁有權,則創建一新的CGI,且該「創建」事件操作將被執行。如果所輸入之創建/更新/刪除(CUD)通知係一 「更新」,則該同步電路138向該適當交叉同步組件116、136通知一輸入之LOB項目。此處假定CRUD同步舉例說明一或多個交叉同步組件116、136,且呼叫它。如果該輸入之CUD通知係一「刪除」,且如果事件源項目係CGI之成員,且如果該一致性群組係一致的,且如果不需要擁有權或者已經取得擁有權,則執行該等事件操作(例如,升級/降級邏輯),且該CGI進行更新。否則,交叉同步組件116、136可以假定該輸入之項目比本地項目還新,且可執行等待及通知操作。
在一些情況下,該等交叉同步組件116、136也可以處理對於CGI所輸入之CUD通知。如果該輸入之CUD通知係一「創建」、「更新」或「刪除」,且如果該一致性群組不一致,則執行等待及通知操作。
在一些情況下,該等交叉同步組件116、136也可以接收來自該等同步電路118、138中一或多個同步電路之衝突通知。該等通知可能源於CRUD同步或者任意其它提供者。OUTLOOK將使用一掃描器程序來偵測修改,然後通知交叉同步組件116、136。
如果該事件源項目係CGI的成員或者係該CGI,並且如果該一致性群組係一致的,而且不是該LOB版本的是一LOBi修改,或者所有衝突資訊皆可用,則該衝突資訊被儲存於該CGI,並且所有相關項目的所有相關新版本被儲存於該CGI中,直到對該群組做出一新的修改。但是對已經儲存該資訊的項目(例如,OUTLOOK)為一例外。如果已 經為這一類型配置了自動化衝突解決方案,並且如果不需要擁有權或者已經取得擁有權,則執行該修改事件,或者可執行等待及通知操作。根據對該特定項目類型之定義,執行預設處理。
在一些情況中,該等交叉同步組件116、136也可以執行衝突操控,其中該掃描器偵測到一使用者已經選擇OUTLOOK中之一替代版本,且通知該等交叉同步組件116、136,而上述動作原本早就應該經由一非LOBi應用程式發生。如果不需要擁有權,或者已取得擁有權,則應當藉由或者從該CGI中選擇該等相應版本,或者藉由應用屬性升級/降級邏輯,使該群組一致,然後更新該CGI。否則,執行等待及通知操作。
在一些情況中,該等交叉同步組件116、136也可以實施衝突解決邏輯。舉例而言,該使用者選擇一版本,而不是另一版本。該應用程式經由該交叉同步API傳播此資訊。然後,藉由從該CGI中選擇相應版本,或者藉由應用屬性升級/降級,使該一致性群組一致,且更新該CGI。
在各種具體實施例中,該等交叉同步組件116、136可被配置用於處理可感知一致性LOBi應用程式中之事件。例如,假定在一可感知一致性之LOBi應用程式中開啟一項目。該OUTLOOK增益集或任何其他可感知一致性LOBi應用程式檢查該等交叉同步組件116、136,以確定是否存在此項目之CGI。如果該項目是一致性群組之一部分,並且如果該項目與該CGI不一致,則可為該(等)項 目執行該修改事件處理程式。例如,該修改事件處理程式可執行記憶體中之屬性升級/降級。該使用者於是接收到一通知。
在各種具體實施例中,該等交叉同步組件116、136可被配置用於在一可感知一致性LOBi應用程式中儲存項目。在一些情況中,在某些特定環境中需要建立擁有權,例如對於刪除事件,因為該事件將去除該雜湊,除非該封裝在該刪除事件之後仍然可以進行漫遊。為了離線處理,該應用程式(例如一OUTLOOK增益集或者任何其他可感知一致性LOBi應用程式)使用該交叉同步API儲存該群組。如果需要,則創建一CGI。如果一項目被刪除,且如果未獲得擁有權,則此狀態可被忽略,而處理過程繼續進行。該等交叉同步組件116、136將適當的封裝資訊添加至該等項目,其可包括對交叉同步源屬性(可能係一時間戳記或CGI識別碼,等等)之一雜湊。如果該項目在開啟時係不一致的,則衝突解決資訊也可以被儲存於該CGI中。對於每一項目,該等交叉同步組件116、136儲存該等項目,且將該時間戳記及其他項目資訊添加至該CGI中。接著,該等交叉同步組件116、136將儲存該CGI。
在各種具體實施例中,該等交叉同步組件116、136可經由該交叉同步API為該可感知LOBi之用戶端應用程式呼叫特定之綁定事件。例如,可呼叫一新的一致性群組事件(綁定),以創建一新的CGI。可以為每一項目添加標頭資訊,且可執行任意必要之內部管理操作。在另一實例 中,可以呼叫一刪除一致性群組事件(解除綁定)。可以為每一項目刪除標頭資訊,且可刪除該CGI。在又一實例中,可呼叫添加項目至一致性群組之事件。添加該項目至該CGI,且可添加適當標頭資訊至該項目。在又一實例中,可呼叫從一致性群組去除項目之事件。從該項目中刪除標頭資訊,且從該CGI中刪除該項目。
將參考一或多個邏輯流進一步描述該同步系統100之操作。應當理解,除非特別指明,該等典型邏輯流不需以所示順序或以任意特定順序執行。此外,可以採用串列或平行方式執行上文依據該等邏輯流描述之行為。該等邏輯流也可以使用該同步系統100之一或多個元件實施,或者對於一組既定設計及效能約束使用所期望之替代元件實施。
第2圖說明一邏輯流200。該邏輯流200可以表示由本文所述一或多個具體實施例所執行之操作。如第2圖所示,在方塊202,該邏輯流200可以在一第一用戶端裝置,修改一第一應用程式的一第一資料項目,及修改一第二應用程式的一第二資料項目。例如,在一具體實施例中,在該第一用戶端裝置,該第一資料項目可以被儲存於一第一用戶端資料庫中,而該第二資料項目可以被儲存於一第二用戶端資料庫中。在該第二用戶端裝置,該相應第一資料項目可以被儲存於一第一用戶端資料庫中,而該相應第二資料項目可以被儲存於一第二用戶端資料庫中。在方塊204,該邏輯流200可以在一第二用戶端裝置,分別使用第 一同步電路及第二同步電路起始同步操作,以使該第一資料項目與一相應第一資料項目同步,及使該第二資料項目與一相應第二資料項目同步。在方塊206,該邏輯流200在該第二用戶裝置確定該相應第一資料項目是否與該相應第二資料項目一致。該等具體實施例不被限制於此上下文中。
例如,在一具體實施例中,可通知一使用者該相應第一資料項目是否與該相應第二資料項目不一致。可通知該使用者該相應第一資料項目或該相應第二資料項目未進行同步。如果該相應第一資料項目或者該相應第二資料項目之任一者未進行同步,則可以對其進行同步。該等具體實施例不被限制於此上下文中。
例如,在一具體實施例中,可以使用該第一資料項目及該第二資料項目創建一致性群組。可以定義一致性群組項目,以儲存包含該第一資料項目及該第二資料項目之一致性群組的一致性群組資訊。可以在該第二用戶端裝置,使用一致性群組項目(其具有包含該第一資料項目及第二資料項目之一致性群組的一致性資訊),判斷該相應第一資料項目是否與該相應第二資料項目一致。該等具體實施例不被限制於此上下文中。
第3圖示出一計算系統架構900的方塊圖,其適於實施各種具體實施例,包括該同步系統100。可以理解,該計算系統架構900僅係一適當計算環境之一實例,無意於對該等具體實施例之使用範圍或功能範圍施加任何限制。 計算系統架構900也不應被理解為依賴於在該實例計算系統結構900中所述之任一元件或元件組合,也不需要與其相關。
可以在由電腦系統執行之電腦可執行指令(例如,程式模組)之一般概念下描述各種具體實施例。一般來說,程式模組包括任意軟體元件,其被配置用於執行特定操作或者實施特定抽象資料類型。一些具體實施例也可以被實施於分散式計算環境中,在該等環境中,藉由一或多個經由一通信網路鏈接之遠端處理裝置執行操作。在一分散式系統環境中,程式模組可位於本機及遠端電腦儲存媒體中,其包括記憶體儲存裝置。
如第3圖所示,該計算系統架構900包括一通用計算裝置,例如一電腦910。該電腦910可包括各種通常可以在電腦或處理系統中找到的組件。電腦910之一些說明性組件可包括但不限於一處理單元920及一記憶體單元930。
例如,在一具體實施例中,該電腦910可包括一或多個處理單元920。一處理單元920可包括任意被配置用於處理資訊或資料之硬體元件或軟體元件。該處理單元920之一些實例可包括但不限於一複雜指令集電腦(CISC,complex instruction set computer)微處理器、一精簡指令集計算(RISC,reduced instruction set computing)微處理器、一極長指令字組(VLIW,very long instruction word)微處理器、一執行指令集之組合的處理器,或者其他處理器裝置。例如,在一具體實施例中,該處理單元920可以 被實施為一通用處理器實施。或者,該處理單元920可以被實施為一專用處理器,例如一控制器、微控制器、內嵌處理器、數位訊號處理器(DSP,digital signal processor)、一網路處理器、一媒體處理器、一輸入/輸出(I/O)處理器、一媒體存取控制(MAC,media access control)處理器、一無線電基頻段處理器、一場可程式閘陣列(FPGA,field programmable gate array)、一可程式邏輯裝置(PLD,programmable logic device)、一專用積體電路(ASIC,application specific integrated circuit),等等。該等具體實施例不被限制於此上下文中。
例如,在一具體實施例中,該電腦910可包括耦接至該處理單元920之一或多個記憶體單元930。一記憶體單元930可係任何被配置用於儲存資訊或資料之硬體元件。記憶體單元之一些實例可包括但不限於隨機存取記憶體(RAM)、動態RAM (DRAM,dynamic RAM)、雙資料傳輸率DRAM (DDRAM,Double-Data-Rate DRAM)、同步DRAM (SDRAM,synchronous DRAM)、靜態RAM (SRAM,static RAM)、唯讀記憶體(ROM)、可程式ROM (PROM)、電可抹除可程式化ROM (EPROM,erasable programmable ROM)、EEPROM、光碟ROM (CD-ROM)、可記錄光碟(CD-R)、可重複燒錄光碟(CD-RW)、快閃記憶體(例如NOR或NAND快閃記憶體)、內容可定址記憶體(CAM,content addressable memory)、聚合體記憶體(例如,鐵電聚合體記憶體)、相變記憶體(例如,雙向記憶體)、鐵電 記憶體、矽氧氮氧矽(SONOS,silicon-oxide-nitride-oxide-silicon)記憶體、碟片(例如,軟磁碟、硬碟、光碟、磁碟、磁光碟)或卡(例如,磁卡、光學卡)、磁帶、錄音帶或任意其他媒體,其可被用於儲存期望資訊且可由電腦910存取。該等具體實施例不被限制於此上下文中。
例如,在一具體實施例中,該電腦910可包括一系統匯流排921,該匯流排將包括記憶體單元930之各種系統組件耦接至處理單元920。系統匯流排921可係若干匯流排結構之任一結構,包括一記憶體匯流排或記憶體控制器、一周邊裝置部級及一本機匯流排,其使用各種匯流排架構之任意一種。藉由實例而非限制性方式,此等架構包括行業標準架構(ISA,Industry Standard Architecture)匯流排、微通道架構(MCA,Micro Channel Architecture)匯流排、增強ISA (EISA,Enhanced ISA)匯流排、視訊電子標準協會(VESA,Video Electronics Standards Association)本機匯流排、周邊組件互連(PCI)匯流排(也稱為夾層(Mezzanine)匯流排),等等。該等具體實施例不被限制於此上下文中。
在各種具體實施例中,該電腦910可包括各種類型之儲存媒體。儲存媒體可以表示任何能夠儲存資料或資訊之儲存媒體,例如,揮發性或非揮發性記憶體、可抽換式或不可抽換式記憶體、可抹除或不可抹除記憶體、可燒錄或可重複燒錄記憶體,等等。儲存媒體可包括兩種一般類型, 包括電腦可讀取媒體或通信媒體。電腦可讀媒體可包括儲存媒體,其被調整用於讀取及寫入一計算系統例如,計算系統架構900。計算系統架構900之電腦可讀媒體之實例可包括但不限於揮發性及/或非揮發性記憶體,例如ROM 931及RAM 932。通信媒體通常實現一調變資料訊號(例如一載波或其他傳輸機制)之電腦可讀指令、資料結構、程式模組或其他資料,且包括任意資訊傳送媒體。術語“調變資料訊號”是指一訊號,其一或多個特征集以某種方式變化,以將資訊編碼到該訊號中。藉由實例方式而非限制方式,通信媒體包含有線媒體(例如一有線網路或直接有線連接)和無線媒體(例如聲、射頻(RF)頻譜、紅外或其他無線媒體)。上述任意內容之組合也應包含於電腦可讀取媒體之範圍內。
在各種具體實施例中,該記憶體單元930包括電腦儲存媒體,其形式可以為揮發性及/或非揮發性記憶體,例如ROM 931及RAM 932。一基本輸入/輸出系統933(BIOS),包括用於幫助在電腦系統910中之元件間傳播資訊的基本常式(例如,在啟動期間),可被儲存於ROM 931中。RAM 932通常包含資料及/或程式模組,該等模組可立即被處理單元920存取,及/或目前由處理單元920操作。藉由實例方式而非限制方法,第3圖說明作業系統934、應用程式935、其他程式模組936及程式資料937。
電腦910也可包括其他可抽換式/不可抽換式、揮發性/非揮發性電腦儲存媒體。僅以實例之方式,第3圖示出一 不可抽換式、非揮發性記憶體介面940(其讀取或寫入不可抽換式、非揮發性磁媒體)、一磁碟機951(其讀取或寫入一可抽換式、非揮發性磁碟952)及一光碟機955(其讀取或寫入一可抽換式、非揮發性光碟956,例如一CD ROM或其他光學媒體)。可在該實例作業環境中使用之其他可抽換式/不可抽換式、揮發性/非揮發性電腦儲存媒體包括但不限於磁帶錄音帶、快閃記憶體卡、通用數位光碟、數位視訊磁帶、固態RAM、固態ROM,及類似媒體。該硬碟機941通常被經由不可抽換式記憶體介面(例如不可抽換式、非揮發性記憶體介面940)連接至該系統匯流排921,該磁碟機951及光碟機955通常被藉由一可抽換式記憶體介面(例如可抽換式、非揮發性記憶體介面950)連接至該系統匯流排921。
上文討論且在第3圖說明之驅動器及其相關電腦儲存媒體,其為電腦910提供儲存裝置,用於儲存電腦可讀指令、資料結構、程式模組及其他資料。例如,在第3圖中,硬碟機941被示出用於儲存作業系統944、應用程式945、其他程式模組946及程式資料947。注意,該等組件既可以等同於也可以不同於作業系統934、應用程式935、其他程式模組936及程式資料937。在本文,作業系統944、應用程式945、其他程式模組946及程式資料947被給予不同元件符號,以說明其至少係不同複本。一使用者可以經由輸入裝置向該電腦910輸入命令及資訊,該等輸入裝置例如為一鍵盤962及指標裝置961,通常被稱為滑鼠、軌 跡球或觸摸墊。其他輸入裝置(未示出)可包括一麥克風、遊戲操縱桿、遊戲台、衛星碟式天線、掃描器或類似裝置。此等及其他輸入裝置經常被經由一使用者輸入介面960(其被連接至該系統匯流排)連接至該處理單元920,但可藉由其他介面及匯流排結構連接,例如平行埠、遊戲埠或通用串列匯流排(USB,universal serial bus)。監視器991或其他類型之顯示裝置也可被經由一介面(例如,一視訊介面990)連接至該系統匯流排921。除了監視器991之外,電腦還可包括其他周邊輸出裝置,例如揚聲器997及印表機996,其可被經由一輸出周邊介面990連接。
電腦910可以使用邏輯連接工作於網路環境中,該等邏輯連接被連接至一或多個遠端電腦,例如遠端電腦980。儘管為清晰起見,在第3圖中僅說明一記憶體儲存裝置981,該遠端電腦980可以係一個人電腦(PC)、一伺服器、一路由器、一網路PC、一點對點裝置或其他公共網路節點,通常包括上文相對於電腦910所描述之許多或全部元件。在第3圖中所描述之邏輯連接包括一區域網路(LAN,local area network)971及一廣域網路(WAN,wide area network)973,但也可以包含其他網路。此等網路環境在辦公室、企業範圍內之電腦網路、企業內部網路及網際網路內很常見。
當被用於一LAN聯網環境中時,電腦910被經由一網路介面970連接至LAN971。當被用於WAN聯網環境中時,電腦910通常包括一數據機972或其他適於經由 WAN973(例如網際網路)建立通信之技術。該數據機972(可以為內部或外部)可以被經由使用者輸入介面960或其他適當機制被連接至該系統匯流排921。在該網路環境中,針對該電腦910所描述之程式模組或者其一部分可以被儲存於一遠端記憶體儲存裝置中。藉由實例方式而非限制方式,第3圖示出駐存於記憶體裝置981上之遠端應用程式985。應瞭解,所示網路連接為示範性,其他用於在該等電腦之間建立通信鏈路之技術也可以被使用。此外,該等網路連接可以被實施為有線或無線連接。在後一情況中,可以使用任何適用於無線通信之元件修改該計算系統架構900,例如,一或多個天線、傳輸器、接收器、收發器、無線電台、放大器、濾波器、通信介面及其他無線元件。一無線通信系統經由一無線通信媒體通信資訊或資料,例如RF頻譜之一或多個部分或頻帶。該等具體實施例不被限制於此上下文中。
部分或全部經管理分類實體模型系統100及/或計算系統架構900可被實施為一電子裝置之零件、組件或子系統。電子裝置之實例包括但不限於處理系統、電腦、伺服器、工作站、電具、終端機、個人電腦、膝上型電腦、超膝上型電腦、手持電腦、微型電腦、大型主機電腦、分散式計算系統、多處理器系統、處理器式系統、消費者電子裝置、可程式消費者電子裝置、個人數位助理、電視機、數位電視機、視訊盒、電話、行動電話、蜂巢式電話、手機、無線存取點、基地台、用戶台、行動用戶中心、無線 電網路控制器、路由器、集線器、閘道器、橋接器、交換器、機器或其組合。該等具體實施例不被限制於此上下文中。
在一些情況中,各種具體實施例可被實施為一製品。該製品可包括一儲存媒體,其被安排用於儲存執行一或多個具體實施例之各種操作的邏輯及/或資料。儲存媒體之實例可包括但不限於前文為該記憶體單元130所提供之實例。例如,在各種具體實施例中,該製品可包括一磁碟、光碟、快閃記憶體或韌體,其包含適於由通用處理器或專用處理器執行之電腦程式指令。但是,該等具體實施例不被限制於此上下文中。
可使用硬體元件、軟體元件或兩者之組合來實施各種具體實施例。硬體元件之實例可包括前文為一邏輯裝置所提供實例中之任一者,且更包括微處理器、電路、電路元件(例如,電晶體、電阻器、電容器、電感器,等等)、積體電路、邏輯閘、暫存器、半導體裝置、晶片、微晶片、晶片組,等等。軟體組件之實例可包括軟體組件、程式、應用、電腦程式、應用程式、系統程式、機器程式、作業系統軟體、中介軟體、韌體、軟體模組、常式、副常式、函數、方法、程序、軟體介面、應用程式介面(API)、指令集、計算程式碼、電腦程式碼、程式碼片段、電腦程式碼片段、字元、值、符號或其任意組合。根據任意數目個因素,用於確定使用硬體元件及/或軟體元件實施一具體實施例之方法可以變化,該等因素例如為預期計算速率、功 率位準、耐熱性、處理周期預算、輸入資料率、輸出資料率、記憶體資源、資料匯流排速度及其他設計或效能限制,如一既定實施之需要。
可以使用“耦接”及“連接”之類的表達方式描述一些具體實施例。該等詞語不一定相互為同義字。例如,可以使用“被連接到”及/或“被耦接到”等詞語來表示兩或多個元件相互直接實體連接或電連接在一起,從而描述一些具體實施例。但是,“被耦接到”一詞也可表示該等兩或多個元件不是直接相互連接,但是仍然相互協調或互動。
應當強調,提供“發明摘要”以遵守37 C.F.R.第1.72(b)節,其要求一發明摘要,從而使讀者能夠快速確定本技術揭示案之本質。提供本揭示案,但應理解其不應被用於解釋或限制該等申請專利範圍或意義。此外,在上述“實施方式”中,為了便於描述本揭示案,可以看出各種特徵被一起聚集於單一具體實施例中。本揭示案之方法不應被解釋為反映一種意圖,即所主張具體實施例需要之特徵多於在每一申請項中所明確表示之特徵。相反,如以下申請項所反映,本發明標的物所依賴之特徵少於單一被揭示具體實施例之全部特徵。因此,以下申請項被整合於“實施方式”中,每一申請項本身可表示為一獨立具體實施例。在隨附申請專利範圍內,“包括”及“其中”等詞分別與“包含”和“在其中”等價。
儘管已經採用結構特徵及/或方法性操作的專用語言 描述了本發明,但應理解,於隨附申請專利範圍內限定之本發明不必限制至上文所述之特定特徵或操作。確切的說,上述特定特徵及操作被作為實施該等申請專利項之實例形式而揭示。
100‧‧‧同步系統
102‧‧‧伺服器
104‧‧‧伺服器資料庫
106‧‧‧使用者
108‧‧‧用戶端裝置
110‧‧‧應用程式
112‧‧‧用戶端資料庫
114‧‧‧用戶端資料庫
116‧‧‧交叉同步組件
118‧‧‧同步電路
122‧‧‧伺服器
124‧‧‧伺服器資料庫
128‧‧‧用戶端裝置
130‧‧‧應用程式
132‧‧‧用戶端資料庫
134‧‧‧用戶端資料庫
136‧‧‧交叉同步組件
138‧‧‧同步電路
140‧‧‧應用系統
150‧‧‧應用程式
160‧‧‧第一用戶端-伺服器系統
170‧‧‧第二用戶端-伺服器系統
180‧‧‧應用程式
190‧‧‧一致性群組項目(CGI)電路
910‧‧‧電腦
920‧‧‧處理單元
921‧‧‧系統匯流排
930‧‧‧記憶體單元
931‧‧‧ROM
932‧‧‧RAM
933‧‧‧基本輸入/輸出系統
934‧‧‧作業系統
935‧‧‧應用程式
936‧‧‧其他程式模組
937‧‧‧程式資料
940‧‧‧不可抽換式、非揮發性記憶體介面
941‧‧‧硬碟機
944‧‧‧作業系統
945‧‧‧應用程式
946‧‧‧其他程式模組
947‧‧‧程式資料
950‧‧‧可抽換式、非揮發性記憶體介面
951‧‧‧磁碟機
952‧‧‧可抽換式、非揮發性磁碟
955‧‧‧光碟機
956‧‧‧可抽換式、非揮發性光碟
960‧‧‧使用者輸入介面
961‧‧‧指標裝置
962‧‧‧鍵盤
970‧‧‧網路介面
971‧‧‧區域網路
972‧‧‧數據機
973‧‧‧廣域網路
980‧‧‧遠端電腦
981‧‧‧記憶體儲存裝置
985‧‧‧遠端應用程式
990‧‧‧視訊介面
991‧‧‧監視器
996‧‧‧印表機
997‧‧‧揚聲器
第1圖說明一同步系統之一具體實施例。
第2圖說明一邏輯流之一具體實施例。
第3圖說明一計算系統架構之一具體實施例。
100‧‧‧同步系統
102‧‧‧伺服器
104‧‧‧伺服器資料庫
106‧‧‧使用者
108‧‧‧用戶端裝置
110‧‧‧應用程式
112‧‧‧用戶端資料庫
114‧‧‧用戶端資料庫
116‧‧‧交叉同步組件
118‧‧‧同步電路
122‧‧‧伺服器
124‧‧‧伺服器資料庫
128‧‧‧用戶端裝置
130‧‧‧應用程式
132‧‧‧用戶端資料庫
134‧‧‧用戶端資料庫
136‧‧‧交叉同步組件
138‧‧‧同步電路
140‧‧‧應用系統
150‧‧‧應用程式
160‧‧‧第一用戶端-伺服器系統
170‧‧‧第二用戶端-伺服器系統
180‧‧‧應用程式
190‧‧‧一致性群組項目(CGI)電路

Claims (20)

  1. 一種用於交叉同步資料之方法,包括以下步驟:在一第一用戶端裝置,修改一第一應用程式的一第一資料項目,及修改一第二應用程式的一第二資料項目;在一第二用戶端裝置,分別使用第一同步電路及第二同步電路起始同步操作,以使該第一資料項目與一相應第一資料項目同步,及使該第二資料項目與一相應第二資料項目同步;以及在該第二用戶端裝置,確定該相應第一資料項目是否與該相應第二資料項目一致。
  2. 如申請專利範圍第1項所述之方法,包括向一使用者通告:該相應第一資料項目是否與該相應第二資料項目不一致。
  3. 如申請專利範圍第1項所述之方法,包括向一使用者通告:該相應第一資料項目或該相應第二資料項目未進行同步。
  4. 如申請專利範圍第1項所述之方法,包括:如果該相應第一資料項目或該相應第二資料項目中任一者未進行同步,則對該相應第一資料項目或該相應第二資料項目執行同步。
  5. 如申請專利範圍第1項所述之方法,包括創建一包含該第一資料項目及該第二資料項目之一一致性群組。
  6. 如申請專利範圍第1項所述之方法,包括定義一一致性群組項目,以儲存包含該第一資料項目及該第二資料項目之一一致性群組的一一致性群組資訊。
  7. 如申請專利範圍第1項所述之方法,包括:在該第二用戶端裝置,使用一一致性群組項目判斷該相應第一資料項目是否與該相應第二資料項目一致,該一致性群組項目具有包含該第一資料項目及該第二資料項目之一一致性群組的一致性資訊。
  8. 如申請專利範圍第1項所述之方法,包括:在該第一用戶端裝置中,將該第一資料項目儲存於一第一用戶端資料庫中,及將該第二資料項目儲存於一第二用戶端資料庫中,且在該第二用戶端裝置中,將該相應第一資料項目儲存於一第一用戶端資料庫中,及將該相應第二資料項目儲存於一第二用戶端資料庫中。
  9. 一種用於交叉同步資料之包含一儲存媒體之物品,該儲存媒體包含多數指令,當執行該等指令時使一系統能夠執行以下步驟:在一第一用戶端修改一或多個資料項目; 用該等修改更新一一致性群組項目;使該等經修改之資料項目與一第二用戶端同步;以及使用該一致性群組項目確定在該第二用戶端之該同步是否完整。
  10. 如申請專利範圍第9項所述之物品,更包括如下指令:當該等指令被執行時,使該系統能夠在該第二用戶端將該等經修改之資料項目與來自該一致性群組項目之一致性資訊進行對比。
  11. 如申請專利範圍第9項所述之物品,更包括如下指令:當該等指令被執行時,如果該同步不完整,則使該系統能夠在該第二用戶端對任意經修改資料項目進行同步。
  12. 如申請專利範圍第9項所述之物品,更包括如下指令:當該等指令被執行時,使該系統向一使用者通告:該等被修改資料項目中一或多個項目是否未與該第二用戶端同步。
  13. 如申請專利範圍第9項所述之物品,更包括如下指令:當該等指令被執行時,使該系統能夠用該等經修改資料項目創建一一致性群組。
  14. 如申請專利範圍第9項所述之物品,更包括如下指令: 當該等指令被執行時,使該系統能夠定義該一致性群組項目,以便儲存一包含該等經修改資料項目之一致性群組的一致性資訊。
  15. 一種用於交叉同步資料之裝置,包括一交叉同步組件,其使用多個同步電路同步多個用戶端裝置之間不同應用程式之多個資料項目;該交叉同步組件利用一致性資訊,確定在一第一用戶端裝置對該等多個資料項目所做之修改是否被傳播至一第二用戶端裝置,該一致性資訊由包含該等資料項目之一一致性群組的一一致性群組項目維持。
  16. 如申請專利範圍第15項所述之裝置,其中該交叉同步組件用於通知一使用者在該第二用戶端裝置之該等資料項目是否不一致。
  17. 如申請專利範圍第15項所述之裝置,其中該交叉同步組件向一使用者通告:哪一資料項目未在該第一用戶端裝置及該第二用戶端裝置之間進行同步。
  18. 如申請專利範圍第15項所述之裝置,在每一用戶端裝置包括一用於儲存一第一資料項目之第一用戶端資料庫,以及一用於儲存一第二資料項目之第二用戶端資料庫的情況下,該交叉同步組件執行一致性檢查,以確定該第一資 料項目是否與該第二資料項目不一致。
  19. 如申請專利範圍第15項所述之裝置,如果該等資料項目不一致,則該交叉同步組件在該第二用戶端裝置起始同步操作。
  20. 如申請專利範圍第15項所述之裝置,包括一第一同步電路,其使一第一應用程式的一第一資料項目與一第一伺服器同步;及一第二同步電路,其使一第二應用程式的一第二資料項目與一第二伺服器同步。
TW97104848A 2007-02-22 2008-02-12 用於交叉同步資料之方法、物品及裝置 TWI472934B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/709,451 US8131670B2 (en) 2007-02-22 2007-02-22 Techniques to cross-synchronize data

Publications (2)

Publication Number Publication Date
TW200842627A TW200842627A (en) 2008-11-01
TWI472934B true TWI472934B (zh) 2015-02-11

Family

ID=39710693

Family Applications (1)

Application Number Title Priority Date Filing Date
TW97104848A TWI472934B (zh) 2007-02-22 2008-02-12 用於交叉同步資料之方法、物品及裝置

Country Status (4)

Country Link
US (2) US8131670B2 (zh)
EP (1) EP2130128B1 (zh)
TW (1) TWI472934B (zh)
WO (1) WO2008103529A2 (zh)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020046061A1 (en) 2000-02-11 2002-04-18 Wright Kenneth L. Personal information system
US7966426B2 (en) 2006-11-14 2011-06-21 Microsoft Corporation Offline synchronization capability for client application
US8131670B2 (en) 2007-02-22 2012-03-06 Microsoft Corporation Techniques to cross-synchronize data
WO2008111081A2 (en) * 2007-03-14 2008-09-18 New Act Ltd. System and method for propagating personal identification information to communication devices
JP5105922B2 (ja) * 2007-03-22 2012-12-26 日本電気株式会社 情報更新システム、情報記憶サーバ、情報更新方法、及び、プログラム
ATE549672T1 (de) * 2007-09-21 2012-03-15 Siemens Ag Verfahren zum konfigurieren von herstellungsausführungssystemen
US8019863B2 (en) * 2008-03-28 2011-09-13 Ianywhere Solutions, Inc. Synchronizing events between mobile devices and servers
US9477727B2 (en) * 2008-08-01 2016-10-25 Sybase, Inc. Abstracting data for use by a mobile device having occasional connectivity
WO2010022402A1 (en) 2008-08-22 2010-02-25 Datcard Systems, Inc. System and method of encryption for dicom volumes
US8788519B2 (en) * 2008-10-24 2014-07-22 John C. Canessa System and methods for metadata management in content addressable storage
US8639661B2 (en) * 2008-12-01 2014-01-28 Microsoft Corporation Supporting media content revert functionality across multiple devices
US20100185631A1 (en) * 2009-01-19 2010-07-22 Microsoft Corporation Techniques for data aggregation, analysis, and distribution
US20110082896A1 (en) * 2009-10-07 2011-04-07 At&T Intellectual Property I, L.P. Dynamically Updated Web-Enabled and Embedded Contact Address in Communication Devices
US8909662B2 (en) * 2009-12-30 2014-12-09 Sybase, Inc. Message based mobile object with native PIM integration
US9336291B2 (en) 2009-12-30 2016-05-10 Sybase, Inc. Message based synchronization for mobile business objects
US8788458B2 (en) 2009-12-30 2014-07-22 Sybase, Inc. Data caching for mobile applications
US20110184998A1 (en) * 2010-01-22 2011-07-28 Palahnuk Samuel L Universally accessible encrypted internet file system for wired and wireless computing devices supplanting synchronization, backup and email file attachment
US20110202909A1 (en) * 2010-02-12 2011-08-18 Microsoft Corporation Tier splitting for occasionally connected distributed applications
US8676914B2 (en) * 2010-03-04 2014-03-18 Canon Kabushiki Kaisha Synchronizing services across network nodes
US20110258160A1 (en) * 2010-04-15 2011-10-20 Po-Yen Lee Data synchronization methods for synchronizing data in communication system and communication systems
WO2011133917A2 (en) * 2010-04-23 2011-10-27 Datcard Systems, Inc. Event notification in interconnected content-addressable storage systems
US8504520B2 (en) 2010-06-11 2013-08-06 Microsoft Corporation Background synchronization of data objects
WO2012078898A2 (en) 2010-12-10 2012-06-14 Datcard Systems, Inc. Secure portable medical information access systems and methods related thereto
US10102242B2 (en) 2010-12-21 2018-10-16 Sybase, Inc. Bulk initial download of mobile databases
US8818983B1 (en) * 2011-08-31 2014-08-26 Google Inc. Synchronization of search engines
US10621206B2 (en) 2012-04-19 2020-04-14 Full Circle Insights, Inc. Method and system for recording responses in a CRM system
US10599620B2 (en) * 2011-09-01 2020-03-24 Full Circle Insights, Inc. Method and system for object synchronization in CRM systems
CN103186614B (zh) * 2011-12-30 2016-04-13 鼎捷软件股份有限公司 电子数据同步方法及电子数据同步处理系统
US8725821B1 (en) * 2012-03-14 2014-05-13 Comindware Ltd. System and method for project and process management by synchronizing custom objects between ms outlook and external server
US9565246B1 (en) * 2012-03-14 2017-02-07 Comindware Ltd. System and method for project and process management by synchronizing custom objects between an application and external server
US9110807B2 (en) 2012-05-23 2015-08-18 Sybase, Inc. Cache conflict detection
US8874682B2 (en) 2012-05-23 2014-10-28 Sybase, Inc. Composite graph cache management
US8635373B1 (en) 2012-09-22 2014-01-21 Nest Labs, Inc. Subscription-Notification mechanisms for synchronization of distributed states
US9165006B2 (en) 2012-10-25 2015-10-20 Blackberry Limited Method and system for managing data storage and access on a client device
US8943110B2 (en) 2012-10-25 2015-01-27 Blackberry Limited Method and system for managing data storage and access on a client device
US9026698B2 (en) * 2013-03-15 2015-05-05 Intel Corporation Apparatus, system and method for providing access to a device function
US9582560B2 (en) * 2013-03-15 2017-02-28 Sugarcrm Inc. Partnership relationship management system to system data synchronization
US9817804B2 (en) 2013-09-12 2017-11-14 Wix.Com Ltd. System for comparison and merging of versions in edited websites and interactive applications
ES2824263T3 (es) 2014-02-11 2021-05-11 Wix Com Ltd Un sistema para sincronización de cambios en sitios web editados y aplicaciones interactivas
US9858305B2 (en) * 2014-03-06 2018-01-02 International Business Machines Corporation Restoring database consistency integrity
FR3024869B1 (fr) * 2014-08-14 2016-08-26 Zodiac Aero Electric Systeme de distribution electrique pour un aeronef et procede de commande correspondant
CN106156165A (zh) * 2015-04-16 2016-11-23 阿里巴巴集团控股有限公司 异构数据源之间的数据同步方法和装置
US10289383B2 (en) * 2016-07-28 2019-05-14 International Business Machines Corporation Cross object synchronization
US10635559B2 (en) 2016-11-29 2020-04-28 International Business Machines Corporation Maintaining data integrity over multiple applications
US20180349406A1 (en) * 2017-06-02 2018-12-06 Apple Inc. Sharing data among multiple computing devices
JP2019079473A (ja) 2017-10-27 2019-05-23 富士ゼロックス株式会社 情報処理装置及びプログラム
TWI657676B (zh) * 2017-11-09 2019-04-21 和碩聯合科技股份有限公司 通訊裝置更新系統
US10572583B2 (en) * 2017-11-22 2020-02-25 International Business Machines Corporation Merging documents based on document schemas
TWI796082B (zh) * 2022-01-10 2023-03-11 神雲科技股份有限公司 基本輸入輸出系統設定資料保存及沿用方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI224790B (en) * 2002-03-15 2004-12-01 Silicon Integrated Sys Corp Apparatus and method of asynchronous FIFO control
TW200630891A (en) * 2005-01-14 2006-09-01 Microsoft Corp Method and system for synchronizing multiple user revisions to a shared object
US20060271603A1 (en) * 2005-05-25 2006-11-30 Microsoft Corporation Methods, systems, and computer-readable media for synchronizing modifiable documents with multiple clients

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684990A (en) 1995-01-11 1997-11-04 Puma Technology, Inc. Synchronization of disparate databases
US6295541B1 (en) * 1997-12-16 2001-09-25 Starfish Software, Inc. System and methods for synchronizing two or more datasets
US6275831B1 (en) 1997-12-16 2001-08-14 Starfish Software, Inc. Data processing environment with methods providing contemporaneous synchronization of two or more clients
US6810405B1 (en) 1998-08-18 2004-10-26 Starfish Software, Inc. System and methods for synchronizing data between multiple datasets
US6901380B1 (en) 1999-09-10 2005-05-31 Dataforce, Inc. Merchandising system method, and program product utilizing an intermittent network connection
US6671757B1 (en) * 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US7024457B1 (en) 2000-02-17 2006-04-04 J2 Global Communications, Inc. E-mail synchronization between heterogeneous mail servers
US6505200B1 (en) 2000-07-06 2003-01-07 International Business Machines Corporation Application-independent data synchronization technique
US20060031927A1 (en) 2000-08-23 2006-02-09 Masahiro Mizuno Information management system, information management method, and system control apparatus
US6675178B1 (en) 2000-11-09 2004-01-06 Accenture Llp Method and system for enhancing a commercial transaction conducted via a communications network
US7328186B2 (en) 2000-12-12 2008-02-05 International Business Machines Corporation Client account and information management system and method
US6970876B2 (en) 2001-05-08 2005-11-29 Solid Information Technology Method and arrangement for the management of database schemas
WO2003058399A2 (en) 2001-12-28 2003-07-17 Sv Trycos, Llc Method and system for adaptive software system interface and external database synchronization
US7024214B2 (en) * 2002-02-26 2006-04-04 Microsoft Corporation Synchronizing over a number of synchronization mechanisms using flexible rules
US7844717B2 (en) 2003-07-18 2010-11-30 Herz Frederick S M Use of proxy servers and pseudonymous transactions to maintain individual's privacy in the competitive business of maintaining personal history databases
US6983293B2 (en) 2002-07-24 2006-01-03 International Business Machines Corporation Mid-tier-based conflict resolution method and system usable for message synchronization and replication
FR2850814A1 (fr) 2003-02-03 2004-08-06 France Telecom Systeme et procede de synchronisation de donnees entre des portails de services et plate-forme d'acces a des services utilisant un tel systeme de synchronisation
US7509327B2 (en) 2003-12-03 2009-03-24 Microsoft Corporation Business data migration using metadata
US8190567B2 (en) 2004-10-22 2012-05-29 Sap Ag Method and system for providing one-to-one email collaboration
EP1815360A2 (en) * 2004-10-25 2007-08-08 Empower Technologies, Inc. System and method for global data synchronization
US20070067354A1 (en) * 2005-09-16 2007-03-22 Microsoft Corporation Productivity suite to line of business synchronization mechanism
US8239504B2 (en) * 2007-01-07 2012-08-07 Apple Inc. Synchronization methods and systems
US8131670B2 (en) * 2007-02-22 2012-03-06 Microsoft Corporation Techniques to cross-synchronize data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI224790B (en) * 2002-03-15 2004-12-01 Silicon Integrated Sys Corp Apparatus and method of asynchronous FIFO control
TW200630891A (en) * 2005-01-14 2006-09-01 Microsoft Corp Method and system for synchronizing multiple user revisions to a shared object
US20060271603A1 (en) * 2005-05-25 2006-11-30 Microsoft Corporation Methods, systems, and computer-readable media for synchronizing modifiable documents with multiple clients

Also Published As

Publication number Publication date
US8805778B2 (en) 2014-08-12
US20080208919A1 (en) 2008-08-28
WO2008103529A2 (en) 2008-08-28
US20120130945A1 (en) 2012-05-24
US8131670B2 (en) 2012-03-06
TW200842627A (en) 2008-11-01
EP2130128B1 (en) 2019-10-23
EP2130128A4 (en) 2013-06-19
EP2130128A2 (en) 2009-12-09
WO2008103529A3 (en) 2008-10-16

Similar Documents

Publication Publication Date Title
TWI472934B (zh) 用於交叉同步資料之方法、物品及裝置
US9432455B2 (en) Synchronizing events between mobile devices and servers
KR101076851B1 (ko) 복제된 파일들을 위한 복수의 파일 상태 관리 방법
RU2425415C2 (ru) Обновление и репликация ресурсов
US8023934B2 (en) Synchronizing communications and data between mobile devices and servers
RU2421799C2 (ru) Безопасность в приложениях синхронизации равноправных узлов
US7900203B2 (en) Data sharing and synchronization with relay endpoint and sync data element
EP1989646B1 (en) Synchronization peer participant model
US7440985B2 (en) Filtered replication of data stores
KR101031929B1 (ko) 비통합 툴에 대한 통합 아키텍처
CN111465930A (zh) 客户端同步中的违反解决
US20070129014A1 (en) Information synchronization
KR101574816B1 (ko) 비동기 복제
TW202042100A (zh) 文檔協同編輯方法、裝置、電腦裝置及存儲介質
US8909662B2 (en) Message based mobile object with native PIM integration
US8689179B2 (en) Transportable refactoring object
US20060248128A1 (en) Efficient mechanism for tracking data changes in a database system
US8296399B2 (en) Connecting galleries to dynamic server-hosted content
CN112636992A (zh) 一种动态路由方法、装置、设备及存储介质
US8600960B2 (en) Processing proposed changes to data
US20230259358A1 (en) Documentation enforcement during compilation
US11016756B1 (en) Application repository protocol for disparate entity applications
US8250104B2 (en) Life cycle based data coordination
CN117724741A (zh) Mapper配置文件的更新方法、装置和存储介质
CN116862448A (zh) 一种图纸上传并发起审批的方法及相关装置

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees