共享的數(shù)據(jù)系統(tǒng)允許用戶訪問文檔的副本并離線地進行工作。最終,用戶需要將已經(jīng)發(fā)生改變的文檔返回至系統(tǒng)。當該文檔被提交時,將改變與駐留在系統(tǒng)中的所存儲的版本進行合并。通常而言,這樣的系統(tǒng)通過用經(jīng)改變的內容(即,值設置)替換所存儲的內容,來合并文檔。由單個用戶對于文檔的標題和摘要的改變可以安全地與所存儲的版本進行合并。類似地,當?shù)谝挥脩籼峤痪哂薪?jīng)修改的標題的文檔并且第二用戶提交具有經(jīng)修改的摘要的文檔時,不存在問題。然而,當多個用戶訪問同一文檔并且分別地進行修改時,場景變得更加復雜。第一用戶提交具有標題改變的文檔的經(jīng)編輯版本是沒有問題的,但當?shù)诙脩魢L試提交同一文檔的也包含標題改變的版本時,將出現(xiàn)沖突。第二用戶必須決定保留哪個標題改變。
共享數(shù)據(jù)系統(tǒng)中的傳統(tǒng)的沖突檢測和解決方案通常使用基本內容比較來識別所提交的第一文檔和所提交的第二文檔之間的沖突的改變,特別是在值設置系統(tǒng)中。在字段值中缺少精確的匹配不始終意味著存在沖突,但每次第二文檔中的經(jīng)改變內容與第一文檔中的經(jīng)改變內容不同時,基本內容比較都將提示第二用戶解決沖突。用戶必須解決的每個沖突都花費時間,并且給用戶提供了無意中保存或者丟棄錯誤數(shù)據(jù)的機會。當用戶嘗試決定如何解決沖突時,還可能體驗不確定性和挫折。已經(jīng)關于這些和其他考慮來而進行了本發(fā)明。盡管已經(jīng)討論了相對具體的問題,但應當理解的是,在本文中所公開的實施例不應當限于解決在
背景技術:
中所標識的具體的問題。
技術實現(xiàn)要素:
提供了該概要以用簡化的形式引入將在以下的詳細描述中進一步描述的概念的選擇。該概要不旨在標識所要求保護的主題的關鍵特征或本質特征,也不旨在用于幫助確定所要求保護的主題的范圍。
智能沖突檢測系統(tǒng)的實施例包括用于處理寫請求和讀請求的分離的層。日志(journal)利用一種分區(qū)方案來服務寫請求(例如,對文檔的寫入)。存儲利用另一種分區(qū)方案來服務讀請求(即,對視圖的讀取),其中該分區(qū)方案可以與日志分區(qū)方案相同或不同。日志以接收到對文檔的編輯的順序而順序地向文檔應用這些編輯。換句話說,日志用于防止對同一文檔的同時的更新。
沖突檢測層負責確定對由用戶所提交的文檔的一個版本的編輯是否與從服務中讀取了該文檔之后所創(chuàng)建的對該文檔的另一個版本的編輯相沖突。將對文檔的編輯表達為用于描述該文檔將如何被改變的意圖,而不是明確地指定所得出的內容。沖突檢測層針對包含在該文檔的中間版本(即,與源版本相比較新的版本)中的對應的編輯的意圖來對編輯的意圖進行評估。可以從歷史記錄中獲得關于先前編輯的信息。一些實施例可以可選地包括一組沖突關系。這些沖突關系指示意圖是彼此兼容的,還是彼此不兼容的。實施例可以將沖突關系定義為一組沖突規(guī)則,沖突檢測層可以應用該組沖突規(guī)則來確定所提交的編輯是否與先前的編輯相沖突。
在操作時,智能沖突檢測允許用戶獲得文檔的副本以供離線使用。副本與在獲得該副本時從其得到副本的文檔的版本(即,該文檔的當前版本)相關聯(lián)。用戶可以修改文檔的離線副本。在與正在被修改的數(shù)據(jù)相對應的意圖方面來表達對副本的編輯。意圖通常包括旨在實現(xiàn)該意圖的動詞(即,動作)。意圖還可以具有存儲動作的任何參數(shù)的一個或多個槽(slot)。例如,數(shù)字數(shù)據(jù)類型可以具有以指定的量來調整值的意圖,該意圖使用動詞“遞增”,其中槽用于接受待增加至當前字段值的數(shù)字。
一旦用戶完成對副本的編輯,就將對副本的編輯接收回系統(tǒng)中。當提交編輯時,可以將與經(jīng)編輯的副本相關聯(lián)的基線版本同該文檔的當前版本進行比較。如果與該文檔的源版本相比,存儲中的該文檔的版本較新(即,存在中間版本),則針對在基線版本之后的該文檔的每個版本的編輯來評估對該副本的編輯。沖突檢查操作主要聚焦于:針對對在基線版本之后的該文檔的每個版本中的對應的數(shù)據(jù)的編輯的意圖而對與對副本的編輯相關聯(lián)的意圖的語義評估;然而,針對沒有或不能在意圖方面來表達的編輯,沖突檢查操作可以采用其他沖突檢查技術,例如,內容相等/不等。確定兩個編輯是否沖突可以基于一組沖突關系。沖突關系指示意圖是彼此兼容的還是彼此不兼容的。實施例可以使用可以由沖突檢測層所應用的一組規(guī)則來定義沖突關系。
如果針對屬于改變的集合的任何編輯而檢測到?jīng)_突,則系統(tǒng)的實施例可以自動地拒絕改變的整個集合??商娲?,可以使用相關聯(lián)的意圖將不沖突的編輯與文檔的所存儲的版本進行合并、更新所存儲的文檔的版本標識符、并且存儲對該文檔的編輯的記錄。在其他實施例中,可以提示用戶解決該沖突,并且給用戶機會來作為集合或以每個編輯為基礎接受或者拒絕這些改變。
附圖說明
通過參照以下的附圖,本公開的進一步的特征、方面、和優(yōu)點將變得更好地理解,在附圖中,元素不是按比例的以便更加清楚地示出細節(jié),其中,幾個視圖通篇中的相同的附圖標記指示相同的元件:
圖1示出了針對智能沖突檢測系統(tǒng)的一個實施例的系統(tǒng)架構;
圖2是由智能沖突檢測系統(tǒng)所采用的智能沖突檢測方法的一個實施例的高級流程圖;
圖3A和圖3B共同地示出了根據(jù)智能沖突檢測系統(tǒng)的一個實施例的針對涉及不會引起沖突的對設置值字段進行編輯的場景的流程圖;
圖4A到圖4C共同地示出了根據(jù)智能沖突檢測系統(tǒng)的一個實施例的針對涉及引起沖突的對設置值字段進行編輯的場景的流程圖;
圖5A到圖5D共同地示出了根據(jù)智能沖突檢測系統(tǒng)的一個實施例的針對不會引起沖突的圖4A-C的場景的替代的版本的流程圖;
圖6A和圖6B共同地示出了根據(jù)智能沖突檢測系統(tǒng)的一個實施例的針對涉及不會引起沖突的對計數(shù)值字段進行編輯的場景的流程圖;
圖7是示出了利用其可以實踐本發(fā)明的實施例的計算設備的物理組件的一個實施例的框圖;以及
圖8A和圖8B是利用其可以實踐本發(fā)明的實施例的移動計算設備的簡化框圖。
具體實施方式
在下文中參照形成了本文的一部分并且示出了具體的示例性實施例的附圖來更加全面地描述各種實施例。然而,實施例可以以許多不同的形式來實現(xiàn),并且不應當被解釋為限于在本文中所闡述的實施例;相反,提供了這些實施例以使得該公開將是透徹的和完整的,并且將會向本領域技術人員完全傳達實施例的范圍。實施例可以被實踐為方法、系統(tǒng)、或設備。從而,實施例可以采取硬件實現(xiàn)、完全軟件實現(xiàn)、或者組合了軟件和硬件方面的實現(xiàn)的形式。因此,以下詳細描述將不被理解為限制意義。
本文描述并在附圖中示出了智能沖突檢測系統(tǒng)的實施例。該系統(tǒng)在可能引起沖突的編輯的、允許多個用戶同時地對同一文檔進行工作的大規(guī)模服務中提供編輯的語義表達和歷史感知的沖突檢測。當提交時,將對文檔的一個版本的改變與對從大規(guī)模服務中讀取了經(jīng)編輯的文檔之后所創(chuàng)建的文檔的所有版本的改變進行比較?;诒痪庉嫷臄?shù)據(jù)的特性,將對文檔的編輯表達為在動作和該動作的目標方面來描述改變的意圖。將當前的編輯的意圖與在源自于同一源文檔的先前版本中進行的編輯的歷史意圖進行比較,允許系統(tǒng)能夠智能地評估這些編輯是否有沖突。歷史感知語義分析使得更少頻率地提示用戶解決沖突,這改善了用戶體驗。
圖1示出了針對智能沖突檢測系統(tǒng)的一個實施例的系統(tǒng)架構。智能沖突檢測系統(tǒng)100可以是以存儲可以由多個用戶102訪問和操縱的信息的服務或應用來實現(xiàn)的。該智能沖突檢測系統(tǒng)的實施例適合于與大規(guī)模(即,大數(shù)據(jù))服務或者較小的多用戶服務或應用一同使用,其中,多個用戶可以同時地訪問和操縱同一文檔。用戶可以經(jīng)由諸如但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、局域網(wǎng)及其組合之類的網(wǎng)絡106,從多種客戶端設備104a-d來訪問該服務。合適的客戶端設備的示例包括但不限于:臺式計算機104a、膝上型計算機104b、平板計算機104c、移動電話104d、個人數(shù)字助理、智能手表、和智能電器(例如,智能電視)。
智能沖突檢測系統(tǒng)包括提供至服務的進入點的前端層108。在各種實施例中,服務可以提供客戶端設備可通過諸如瀏覽器之類的用戶代理來訪問的基于網(wǎng)絡的用戶接口。在一些實施例中,用戶代理可以是提供用戶接口并且處理與服務的通信的專用客戶端應用。
智能沖突檢測系統(tǒng)的實施例包括用于處理事務的事務性對象模型110,例如但不限于:寫請求和讀請求,以允許用戶針對服務而對文檔和視圖進行讀、查看(即,顯示)、創(chuàng)建、復制、刪除、操縱(即,編輯或修改)、共享、協(xié)作、或保存(即,寫)。術語“文檔”寬泛地包含由該服務所處理的任何數(shù)據(jù)對象。文檔可以包括結構化的數(shù)據(jù)、非結構化的數(shù)據(jù)、元數(shù)據(jù)、或其組合。文檔還可以與外部數(shù)據(jù)或者元數(shù)據(jù)相關聯(lián),所述外部數(shù)據(jù)或元數(shù)據(jù)例如,由服務使用以識別和追蹤該文檔的數(shù)據(jù)。作為示例,對于基于辦公或者生產力應用的服務而言,文檔可以包括但不限于:文字處理文檔、郵件項、任務項、日歷項、聯(lián)系人項、演示、電子表格、或者數(shù)據(jù)庫。術語“視圖”寬泛地包含基于向用戶呈現(xiàn)文檔所使用的一般屬性值的文檔的任何索引、分組、或者分類。作為示例,視圖可以允許根據(jù)任務所有者或者根據(jù)任務與其相關聯(lián)的項目來顯示任務項的集合。
智能沖突檢測系統(tǒng)適合于在這樣一種系統(tǒng)中使用:其中,多個用戶具有對文檔的非排他性訪問,并且可以對文檔進行改變,所述改變不會同時地反映在由其他用戶訪問或者操縱的該文檔的副本中,并且其中,對文檔的沖突的編輯是可能的。一個示例是允許多個用戶在同一時間訪問和操縱一個文檔的大規(guī)模服務。當用戶訪問文檔時,大規(guī)模服務給每個用戶提供源文檔的分別的離線副本。當對經(jīng)編輯的副本進行保存(即,提交包含編輯的寫請求)時,將用戶對于離線副本進行的任何改變與文檔的當前版本進行合并。
除了僅僅允許用戶同時地和獨立地對同一文檔進行編輯之外,大規(guī)模服務還通常保存文檔的多個復本,以用于高效的訪問和可擴展性。必須將對文檔的改變傳播至所有的復本。直到已經(jīng)同步了該文檔的所有復本為止,在系統(tǒng)內存在該文檔的多個版本。取決于向用戶提供哪些復本源副本,該用戶可能無法訪問文檔的最新的版本。
在所示出的實施例中,在大規(guī)模服務的上下文中將智能沖突檢測系統(tǒng)描述為更加復雜的場景中的一個場景中的智能沖突檢測系統(tǒng)的效用的一個示例;然而,智能沖突檢測系統(tǒng)的使用并不限于大規(guī)模服務。在大規(guī)模服務內,寫請求112和讀請求114由分別的層來處理的。日志116利用一種分區(qū)方案來服務寫請求(例如,對文檔的寫入)。存儲118利用另一種分區(qū)方案來服務讀請求(即,對視圖的讀取),其中,該分區(qū)方案可以與日志分區(qū)方案相同或不同。在所示出的實施例中,將日志和存儲表示為通過對應的應用程序接口(API)(日志API 120和存儲API 122)來訪問的虛擬化存儲資源(例如,云存儲)。
日志包括用于存儲文檔的至少一個基于文檔的分區(qū)124?;诜峙浣o單個資源或查詢的數(shù)據(jù)的最大分組來設置每個分區(qū)的大小。隨著由大規(guī)模服務所處理的數(shù)據(jù)的量的增加,可以線性地擴展日志并且增加新的分區(qū)。無論日志分區(qū)的數(shù)量是多少,智能沖突檢測系統(tǒng)將與任何給定的文檔相關聯(lián)的所有寫請求都保存在同一日志分區(qū)中。使單個日志分區(qū)與每一個文檔相關聯(lián)允許保存針對每個文檔的事務性編輯隊列。
存儲包括用于存儲文檔的至少一個基于視圖的分區(qū)126。通過視圖來對存儲進行分區(qū)允許由多個用戶在同一時刻對文檔進行高效地訪問。如果文檔與多于一個視圖相關聯(lián),則每一個視圖通常保存其自己的該文檔的副本(即,復本)。同日志一樣,可以線性地擴展存儲并且增加新的分區(qū)來處理額外的文檔或者視圖。
當用戶執(zhí)行諸如創(chuàng)建文檔、修改文檔、或者刪除文檔之類的動作時,將寫請求傳送至智能沖突檢測系統(tǒng)。在接收到寫請求之后,智能沖突檢測系統(tǒng)首先將寫請求保存至日志。在將寫請求保存至日志之后,對文檔的改變被認為是要接受的,但是在寫請求中所反映的改變通常不是對所有用戶都可見的,直到它們被合并至存儲為止。當日志包括多個分區(qū)時,智能沖突檢測系統(tǒng)可以確定指示寫請求應當被寫入的分區(qū)的分區(qū)標識符。在各種實施例中,分區(qū)標識符可以是基于與寫請求相關聯(lián)的文檔的文檔標識符的。
智能沖突檢測系統(tǒng)將日志用作暫存區(qū)域(staging area)以保存寫請求直到它們被合并到合適的視圖中為止。當檢測對文檔的沖突編輯時也可以使用該日志。為了實現(xiàn)這些功能,可擴展的最終一致性系統(tǒng)的實施例可以在接收到寫請求之后,將該寫請求保存至日志至少兩次??梢詫⒃搶懻埱蟮囊粋€副本保存成運行記錄128,其充當標識還沒有與存儲完全融合的寫請求的動作項。無法將寫請求復制到存儲可以是分區(qū)或者日志與存儲之間的通信信道(例如,互聯(lián)網(wǎng))暫時無法訪問(例如,資源故障或停機)的結果??梢詫⒃搶懻埱蟮牧硪粋€副本保存為歷史記錄130??梢猿鲇谥T如檢測對文檔的沖突編輯或維護審計日志之類的目的來使用歷史記錄。
改變提交層132負責將寫請求從日志傳播至存儲。文檔寫從日志流動至存儲部分,因此不存在復雜的同步機制。在各種實施例中,該可擴展最終一致性系統(tǒng)可以當在日志中創(chuàng)建運行記錄時首次嘗試將其復制到存儲。一旦已經(jīng)成功地復制了運行記錄,就將該運行記錄從該日志中刪除。
一致性恢復層134負責該改變提交層的循環(huán)操作并最后提供最終一致性。一致性恢復層提示改變提交層通讀由日志所保存的現(xiàn)有的記錄并且將任何運行記錄復制至存儲。在各種實施例中,該改變提交層以最老的運行記錄開始,按照編輯被該可擴展最終一致性系統(tǒng)所接收的順序來對文檔進行事務性編輯。該一致性恢復層可以基于各種事件的發(fā)生和/或定期地(例如,每N分鐘、小時、或天)發(fā)起改變提交層的操作??梢杂脕碛|發(fā)改變提交層的操作的事件的示例包括但不限于:系統(tǒng)啟動、錯誤恢復、以及接收寫請求。
沖突檢測層136負責確定在寫請求中提交的對文檔的一個版本的編輯是否與對自從該文檔從大規(guī)模服務中被讀取(即,獲取(sourced))以來所創(chuàng)建的該文檔的另一個版本的編輯相沖突。將對文檔的編輯表達為描述將如何改變該文檔的意圖,而不是明確地指定所得出的內容。沖突檢測層針對包含在該文檔的中間版本(即,與從大規(guī)模服務中所讀取的版本相比較新的版本)中的對應的編輯的意圖來對編輯的意圖進行評估??梢詮臍v史記錄中獲得關于先前的編輯的信息。
一些實施例可以可選地包括一組沖突關系138。沖突關系指示意圖是彼此兼容的還是彼此不兼容的。實施例可以將沖突關系定義為一組沖突規(guī)則,沖突檢測層可以應用該組沖突規(guī)則來確定對文檔的編輯是否與先前的編輯相沖突。
盡管已經(jīng)描述了大規(guī)模服務的具體的實施例,但智能沖突檢測系統(tǒng)不限于使用包括圖1的示例性大規(guī)模服務在內的任何特定的大規(guī)模服務。此外,智能沖突檢測系統(tǒng)不限于包含文檔的多個副本的存儲模型或者對任何特定的同步機制的使用,所述特定的同步機制例如由日志、存儲、改變提交層、或者一致性恢復層的組合所提供的那些同步機制。該智能沖突檢測系統(tǒng)適合于與存儲每個文檔的單個副本的服務或者系統(tǒng)一起使用。
圖2是由智能沖突檢測系統(tǒng)所采用的智能沖突檢測方法的一個實施例的高級流程圖。該智能沖突檢測方法200開始于文檔讀取操作202,其中,將源文檔的副本提供給用戶。關于源文檔而離線地獲得副本,并且在將改變反映在源文檔中之前,用戶通常必須采取一些動作來保存修改。例如,可能要求用戶使用基于網(wǎng)絡的表格來提交文檔,或者要求用戶經(jīng)由用戶接口來發(fā)起文檔保存功能。多個用戶可以獲得同一文檔的副本。對一個副本的修改不影響其他現(xiàn)有的副本。
版本控制操作204將副本與在獲得該副本時從其獲得該副本的文檔的版本(即,該文檔的當前版本)相關聯(lián)。從其獲得該副本的文檔的版本可以被稱為該副本的基線版本。在一些實施例中,將版本關聯(lián)與副本存儲在一起,例如存儲為作為元數(shù)據(jù)或者文檔屬性值。可替代地,可以將與副本相對應的標識符鏈接至基線版本或者由系統(tǒng)存儲,例如,與文檔一起、在數(shù)據(jù)庫中、或者使用另一個合適的數(shù)據(jù)存儲對象。
可以使用版本標識符來指定當前文檔版本和基線版本。版本標識符可以由形成標識符的一個或多個數(shù)字或字母組件組成,所述標識符可以遞增或者以其他方式順序地更新,以區(qū)分文檔的不同版本。字母數(shù)字版本的標識符的示例包括但不限于:“1A”、“1B”、…、“4D”等,以及“1.2.2.2”、“1.2.2.1”、…、“3.1.2.313”等。在各種實施例中,版本標識符可以是或者可以包括但不限于以下中的一項或多項:日期戳、時間戳、日期/時間戳、散列、校驗和、全局唯一標識符、或者其他參考值。
用戶可以修改文檔的離線副本。編輯可以涉及但不限于該副本中或者與該副本相關聯(lián)的結構化數(shù)據(jù)或字段(例如,元數(shù)據(jù))的改變。編輯表達操作206可以在與正在修改的數(shù)據(jù)相對應的意圖方面來表達對副本的編輯。
意圖通常包括旨在實現(xiàn)該意圖的動詞(即,動作)。意圖還具有將動作的參數(shù)作為槽值來存儲的一個或多個槽。表1示出了針對各種數(shù)據(jù)類型的代表性意圖。在表1中所示出的數(shù)據(jù)類型、動詞、槽、和動作不旨在是限制性的。槽對于一些意圖而言是可選的,一些意圖被定義為沒有槽。例如,遞增動作可以總是以一的大小來增加值,并且將不需要該意圖具有槽。可替代地,遞增動作可以默認地將值增加一的大小,除非槽包含針對值增加而設置不同的大小的不同的值。在一些實施例中,槽還可以保存復合值。例如,向集合添加成員的意圖可以接受經(jīng)限制的成員的列表。可以對該列表進行解析,并且智能沖突檢測系統(tǒng)使用與該意圖相關聯(lián)的動詞來對該列表中的每個值進行分別地處理。其他實施例可以將槽限制為單個值。例如,向集合添加多個成員的編輯可以引起生成對應數(shù)量的分別的意圖,每個成員一個意圖。
意圖表達操作意味著什么而不是操作做什么。參考表1中的文本數(shù)據(jù)類型,兩個意圖均替代整個文本,但用于實現(xiàn)不同的目標。對編輯的對象進行區(qū)分允許更有意義的沖突檢測,并產生更好的結果。以下的示例展示了基于意圖的編輯所提供的智能的重要性,將文本值從“與客戶會面”改變成“狀態(tài)報告會議”是改變該文本的含義的內容改變。相反,將文本值從“Meett with th client from one to three pm(下午一點到三點與客戶會面)”改變成“Meet with the client(1PM-3PM)(與客戶會面(下午1點到3點))”是涉及次要的拼寫錯誤校正和時間格式化的編輯性改變,但不改變含義。在語義上,編輯性改變與所接受的內容改變相沖突。換句話說,嘗試對原始內容進行次要的編輯而同時另外的某人改變整個含義產生了沖突。然而,內容改變不與所接受的編輯性改變相沖突,這是因為編輯性改變實質上不改變原始值。換句話說,對于沖突檢測目的而言,當另一個用戶在同一時間進行內容改變時,由一個用戶進行的編輯性改變可以被視為是非事件,這是因為面對實質性改變而言,編輯性改變是無關的。
表1
根據(jù)數(shù)據(jù)類型的示例性意圖
一旦用戶完成對于副本進行編輯,寫操作208就將這些編輯接收到系統(tǒng)中。由于多個用戶可以同時地并且獨立地訪問和修改同一個文檔,因此可能發(fā)生對該文檔的沖突編輯。通常,寫操作以編輯被接收的順序來對其進行處理。換句話說,在沒有任何沖突的情況下,接受所提交的對字段的第一編輯,而針對沖突的編輯來篩查對該字段的隨后的編輯,該沖突的編輯必須例如由提交這些編輯的用戶或者具有解決沖突的權利和/或責任的授權的用戶手動地解決。一些沖突可以在沒有用戶干預的情況下基于一組規(guī)則而自動地解決。例如,如果兩個同級別的員工對同一字段創(chuàng)建了沖突編輯,則可以拒絕較后的編輯;然而,如果經(jīng)理的編輯與較低級別員工的編輯相沖突,則解決方案可以自動地接受經(jīng)理的編輯。
當編輯被提交時,版本檢查操作210可以將經(jīng)編輯的副本的基線版本與文檔的當前版本進行比較。版本檢查可以基于與該副本相關聯(lián)的基線版本標識符和該文檔版本標識符的等同/不等。例如,文檔版本號大于基線版本號指示自從獲取了該副本以來該文檔已經(jīng)發(fā)生了改變,或者在版本標識符序列(或系列)中比基線版本標識符更晚出現(xiàn)的文檔版本標識符可以對應于該文檔的較晚(即,較新)的版本,其可以指示自從獲取該副本以來該文檔已經(jīng)進行了更新。對文檔進行保存可以對應于在一些系統(tǒng)中提交包含編輯的寫請求。
該方法的實施例可以使用版本檢查的結果作為初步(即,閾值)測試,以確定是否應當針對沖突而篩選這些編輯。副本的基線版本和文檔的當前版本的相等指示自從該副本被獲取以來該文檔還沒有發(fā)生過改變。換句話說,版本相等指示正在提交的編輯是所提交的第一編輯。通常而言,可以接受所提交的第一編輯而不用擔心沖突編輯。
在一些實施例中,版本檢查操作不涉及對版本標識符的任何直接比較。替代地,版本檢查識別副本的基線版本,該基線版本產生被提交以用于在取回相關的文檔修訂歷史記錄時使用的編輯。
與獲取的文檔的版本相比,如果存儲中的文檔的版本較新,或者版本檢查操作不涉及版本比較,則修訂歷史收集操作212收集已經(jīng)與基線版本之后的文檔合并了的編輯相對應的信息。在一個示例中,可以從在本文中所描述的大規(guī)模服務的日志中所保存的歷史記錄(即,寫請求)中獲得修訂歷史。類似類型的修訂記錄可以由其他系統(tǒng)來存儲。無論版本比較是否作為版本檢查的一部分而被執(zhí)行,該修訂歷史收集操作都可以發(fā)出針對具有相比于由版本檢查操作所識別的基線版本較新的版本號的歷史記錄的查詢。該方法的實現(xiàn)可以以版本比較操作和修訂歷史收集操作的相對效率為條件。
一旦已經(jīng)取回了相關的修訂歷史,則沖突檢查操作214針對對基線版本之后的文檔的每個版本的編輯而評估對副本的編輯。實施例可以以從最早的版本開始并且在最新的版本之前的版本順序來對所述編輯進行評估。沖突檢查操作主要聚焦于:針對對在基線版本之后的該文檔的每個版本中的對應的數(shù)據(jù)的編輯的意圖而對與對副本的編輯相關聯(lián)的意圖的語義評估;然而,針對不能在意圖方面來表達的編輯,沖突檢查操作可以采用其他沖突檢查技術,例如,內容相等/不等。如果針對所提交的改變中的任何編輯而檢測到?jīng)_突,則系統(tǒng)的實施例可以自動地拒絕改變的整個集合??商娲兀梢詫⒉粵_突的編輯與所存儲的版本進行合并,并且僅僅拒絕沖突的編輯。在其他實施例中,可以提示用戶解決該沖突,并且給用戶機會來作為集合或以每個編輯為基礎接受或者拒絕這些改變。
確定兩個編輯是否沖突可以基于一組沖突關系。沖突關系指示意圖是彼此兼容的還是彼此不兼容的。實施例可以使用可以由沖突檢測層所應用的一組規(guī)則來定義沖突關系。
某些沖突關系可以是全局適用的?;谠O置動詞的值(例如,設置或者清除)的意圖通常與其他意圖是全局不兼容的,這是因為該動作將替代或者清除目標字段的內容。基于限制性動詞(例如,鎖定)的意圖與其他意圖是全局不兼容的,這是因為該動作將阻止對目標字段進行改變。類似地,基于許可動詞(例如,解鎖)與其他意圖是全局兼容的,這是因為該動作允許對目標字段進行改變。
意圖的兼容性或者不兼容性可以是以動詞或者動詞與槽的組合為條件的。一些沖突關系可以僅僅考慮與意圖相關聯(lián)的動詞。基于與算數(shù)運算(例如,遞增或者遞減)相關聯(lián)的動詞的意圖應當很少沖突或者決不會沖突,無論槽值是什么。在合并以設置用于遞增或遞減的大小期間,可以使用槽值,但是可以進行沖突確定而不需要知道槽值。
其他沖突關系可以考慮與意圖相關聯(lián)的動詞或者動詞和槽值二者。與對值進行替代的意圖相反,對值進行修改的意圖(與進行替代相比)(例如,設置操縱意圖)。使用相同的值修改動詞的意圖(例如,兩個編輯均使用動詞“添加”或者兩個編輯均使用動詞“移除”)可以是重復的,但應當很少沖突或者決不會沖突。例如,添加值“藍色”的意圖和添加值“綠色”的意圖是不沖突的。類似地,移除值“藍色”的兩個意圖將是重復的,但不沖突。針對于諸如這些之類的情況的沖突關系可以在進行沖突確定時可選地忽略槽值(例如,顏色)。對于使用相反的值修改動詞的意圖而言,槽值將變得與沖突確定有關(例如,一個使用動詞“添加”,而另一個使用動詞“移除”)。例如,添加值“藍色”的意圖和移除值“藍色”的意圖將是沖突的,而添加值“藍色”的意圖和移除值“紅色”的意圖將是不沖突的。
合并操作216對其中沒有編輯與先前的編輯相沖突的編輯的集合、不與先前編輯相沖突的個體的編輯、或者由用戶使用相關聯(lián)的意圖可選地保留到文檔中的沖突編輯進行合并。版本更新操作218對文檔的版本標識符進行更新。例如,可以將版本標識符遞增。
歷史管理操作220將編輯的記錄存儲在與文檔相關聯(lián)的修訂歷史中。在各種實施例中,所述編輯可以個體地存儲,或者作為改變的集合來存儲。可以將在解決操作期間所丟棄的沖突的編輯從記錄中排除或者標記為已丟棄。
圖3A和圖3B共同地示出了根據(jù)智能沖突檢測系統(tǒng)的一個實施例的針對涉及不引起沖突的對設置值字段的編輯的多用戶文檔編輯場景的流程圖。在該流程的開始處,在存儲118中保存的文檔302處于由文檔版本標識符304所表示的版本1。該文檔的作者字段306是包含具有一個成員(Alice)的集合的設置值字段。兩個用戶Bob 308b和Chris 308c獨立地訪問310該文檔。每個用戶具有利用其進行工作的該文檔的分別的副本312b、312c。在訪問該文檔的時刻,該文檔的版本標識符與作為基線版本314的副本相關聯(lián)。在該場景中,Bob和Chris兩者都獲得該文檔的版本1的副本。
Bob對作者字段進行編輯316以將他自己添加為作者。將該編輯表達為由動詞“添加”和槽值“Bob”組成的意圖318以描述將成員(Bob)添加至集合。Bob是提交320對該文檔的他的副本的編輯的第一人。當該編輯被提交時,智能沖突檢測系統(tǒng)的實施例可以執(zhí)行版本檢查322,該版本檢查322將與所提交的編輯相關聯(lián)的副本的基線版本同由存儲所保存的該文檔的當前版本進行比較。由于比較324確定該文檔的存儲版本與副本的基線版本相同,因此不存在與該編輯的沖突,并且智能沖突檢測系統(tǒng)可以將該編輯與存儲中的該文檔進行合并326。在Bob的副本的情況下,通過將Bob添加至所述集合中而用Bob的編輯328來更新存儲文檔的作者字段。智能沖突檢測系統(tǒng)還可以使存儲文檔的版本標識符遞增330(或者以其他方式更新)至版本3,以便指示該文檔已經(jīng)與提供給Bob的源版本發(fā)生了改變。額外地,將Bob的編輯添加至可以在日志116中所存儲的修訂歷史332。
Chris也同時地對作者字段進行編輯316,以將Bob和David添加為作者??梢詫⒃摼庉嫳磉_為一對意圖318,一個意圖將Bob添加至作者集合,而另一個意圖將David添加至作者集合,如在所示出的流程中所示?,F(xiàn)在轉到圖3B,Chris在Bob之后提交320對該文檔的他的副本的編輯。當執(zhí)行版本檢查322時,智能沖突檢測系統(tǒng)確定由存儲所保存的該文檔包含有提供給Chris的副本中所沒有包括的改變,這是因為存儲版本更高324。從而,智能沖突檢測系統(tǒng)執(zhí)行修訂歷史分析334,其針對在修訂歷史332中出現(xiàn)的自從獲取了Chris的副本以來所創(chuàng)建的該文檔的所有歷史版本336,來評估該編輯的意圖。在該場景中,唯一的中間版本是存儲中的文檔的當前版本,即版本3。修訂歷史分析的實施例針對所提交的改變的意圖,對在中間版本中所反映的改變的歷史意圖338進行評估,以提供超出該文檔的中間版本的內容的有意義的沖突檢測。
使用傳統(tǒng)的沖突檢查,Chris的改變將被認為是沖突的編輯,這是因為由Bob和Chris所編輯的作者字段的內容是不相同的。替代地,通過根據(jù)意圖而在語義上對編輯進行評估,智能沖突檢測系統(tǒng)確定Bob和Chris二者對作者字段的所有改變都是對所述集合的添加。確定由Chris將Bob添加為作者是由Bob進行的相同的改變的重復,并且不產生沖突340。同樣,Chris的添加David的編輯不與Bob將其自己添加為作者的編輯發(fā)生沖突342。應當理解的是,智能沖突檢測系統(tǒng)可以以各種方式來處理重復的編輯,例如,當Bob已經(jīng)是該集合的成員時,又向該集合添加Bob。例如,可以忽略重復編輯(即,可以不進行合并嘗試),或者可以對合并規(guī)則進行配置,以使得重復的編輯不會產生具有冗余的成員的集合(即,Bob不會出現(xiàn)兩次)。
因此,智能沖突檢測系統(tǒng)接受Chris的編輯328,將它們合并326到該文檔的當前版本,并且將存儲文檔的版本標識符遞增330(或者以其他方式更新)至版本4,以指示該文檔與Bob所提交的版本發(fā)生了改變。將Chris的編輯添加至修訂歷史332。
圖4A到圖4C共同地示出了根據(jù)智能沖突檢測系統(tǒng)的一個實施例的針對涉及引起沖突的對設置值字段的編輯的多用戶文檔編輯場景的流程圖。該流程的大部分類似于結合圖3A和圖3B所描述的內容,除了Chris在Bob之前提交對他的副本的編輯,以及Chris的編輯將Eve(而不是Bob)添加至作者字段之外。由于Chris的副本的基線版本與存儲中的該文檔的當前版本相同,因此沒有沖突發(fā)生。Chris的編輯被接受,并且被合并至該文檔以創(chuàng)建該文檔的版本3。
在該場景中,流程不同在于:在Bob提交對該文檔的他的副本的編輯之前,F(xiàn)red訪問該文檔的版本3?,F(xiàn)在轉到圖4B,F(xiàn)red不認為Eve是作者,并且將Eve從作者列表中刪除。將Fred的編輯表達為由動詞“刪除”和槽值“Eve”組成的意圖318,以描述從所述集合中移除成員(Eve)。Fred在Bob之前提交320對該文檔的他的副本的編輯。同樣,由于Fred的副本的基線版本與存儲中的該文檔的當前版本相同(即,不存在中間版本),因此沒有沖突發(fā)生。盡管Fred的編輯具有與Chris的編輯相反的意圖,但由于Chris的編輯被包括在提供給Fred的該文檔的版本之中并且不存在中間版本,因此不存在沖突。從而,F(xiàn)red的編輯被接受,并且被合并至該文檔以創(chuàng)建版本4。
與此同時,Bob一直在編輯該文檔的他的副本,并且他的編輯包括將Eve添加至作者字段中?,F(xiàn)在轉到圖4C,當Bob提交對他的副本的編輯時,Chris的版本(版本3)和Fred的版本(版本4)兩者都是相對于Bob的基線版本(版本1)的該文檔的中間版本。從而,修訂歷史分析通過將Bob的編輯的意圖與Chris所進行的編輯(即,所接受的第一編輯)進行比較而開始。由Bob和Chris兩者所進行的編輯的意圖是將Eve添加為作者,因此不存在沖突340。接著,修訂歷史分析將Bob的編輯的意圖與Fred所進行的編輯(即,所接受的第二編輯)進行比較。移除作為作者的Eve的Fred的編輯與將Eve添加為作者的Bob的編輯具有相反的意圖。換句話說,這些編輯是不兼容的。由于Fred的編輯是在Bob獲得該文檔的副本之后才被接受的(即,其在相對于Bob的副本的基線版本的中間版本中出現(xiàn)),因此相反的意圖觸發(fā)了沖突344。隨著智能沖突檢測系統(tǒng)向Bob示出該沖突,并且提示346他解決該沖突,流程繼續(xù)。將Bob對于該沖突的解決方案348應用至存儲中的文檔,無論是覆蓋Fred的編輯、是將Eve添加為作者、還是從作者字段中省略Eve(如Fred所最后修改的)。如果Bob的編輯包括其他改變,則將創(chuàng)建該文檔的新版本。相反,如果Bob的唯一的編輯是將Eve添加為作者,并且Bob通過尊重Fred將Eve從作者中刪除(例如,F(xiàn)red可以具有監(jiān)督權力)而解決了該沖突,則沒有任何內容需要合并并且將不會創(chuàng)建新的版本。
圖5A到圖5D共同地示出了根據(jù)智能沖突檢測系統(tǒng)的一個實施例的針對不會引起沖突的先前的場景的替代的版本的流程圖。到將Fred的編輯合并至版本2為止,流程是相同的,F(xiàn)red的編輯移除作為作者的Eve以生成版本3。隨后,F(xiàn)red決定應當將Eve列為作者(例如,Eve可以針對她作為作者的情況而向Fred進行辯護并獲勝)。作為結果,F(xiàn)red再一次訪問310該文檔。這次,F(xiàn)red的副本312f的基線版本314是版本3,該版本沒有將Eve包括為作者。轉到圖5C,F(xiàn)red將Eve添加為作者,并且將他的編輯316表達為由動詞“添加”和槽值“Eve”組成的意圖318,以描述向所述集合添加成員(Eve)。再一次,F(xiàn)red在Bob之前提交320對他的副本的編輯,并且由于Fred的副本的基線版本與存儲中的該文檔的當前版本相同(即,不存在中間版本),因此沒有沖突發(fā)生。將該文檔更新至版本4,并且將Eve包括為作者集合中的成員。
與此同時,Bob 308b一直對文檔的他的副本312b和他的編輯316進行編輯,其中,他的編輯包括將Eve添加至作者字段的意圖318。現(xiàn)在轉到圖5D,當Bob提交對他的副本320的編輯時,Chris的版本(版本2)和Fred的兩個版本(版本3和4)都是相對于Bob的基線版本(版本1)的該文檔的中間版本。在Bob的編輯和Chris的編輯之間不存在沖突340。Bob的編輯潛在地與Fred的將Eve從作者中移除的第一編輯發(fā)生沖突344;然而,F(xiàn)red的將Eve恢復成作者的第二編輯是最新的編輯,并且優(yōu)先于較早的沖突編輯。來自版本4的編輯有效地解決350了與來自版本3的編輯的潛在的沖突。盡管在所示出的流程中,F(xiàn)red進行了兩次編輯,但不是必須由進行了潛在的沖突的編輯的同一用戶來進行該解決編輯。從而,接受了Bob的編輯而沒有沖突解決提示。
圖6A和圖6B共同地示出了根據(jù)智能沖突檢測系統(tǒng)的一個實施例的針對涉及引起沖突的對計數(shù)值字段的編輯的多用戶文檔編輯場景的流程圖。一般流跟蹤圖3A和圖3B的流程。主要差別在于對計數(shù)值字段606的編輯316的對待,其中該計數(shù)值字段606被示出為具有為六的開始值。在該場景中,計數(shù)值字段跟蹤總項目銷售。Bob 308b是將對他的副本312b的編輯提交320至項目銷售總數(shù)的第一人,該編輯被表達為以2(即,槽值)對計數(shù)值進行遞增(即,動詞)的意圖。應當注意的是,在一些實施例中,Bob可以已經(jīng)輸入了值八,并且通過確定源值與由Bob所輸入的值之間的差而將該改變轉換成意圖318。在其他實施例中,可以給Bob呈現(xiàn)輸入對該值的改變的機會,并且將計算總項目銷售并且結果用于填充總項目銷售字段。由于Bob的副本的基線版本與存儲中的該文檔的當前版本(版本1)相同,因此沒有沖突發(fā)生。通過按2來遞增總項目銷售字段以將總項目銷售字段的值變成八來對Bob的編輯進行合并,并且所述合并產生該文檔304的版本2。
隨后,Chris 308c提交對項目銷售總數(shù)的編輯316,該編輯316被表達為以按一來遞增計數(shù)值的意圖318。文檔304的版本2充當相對于Chris的副本的基線版本的中間版本。所示出的流程示出:由于中間版本的存在而執(zhí)行的修訂歷史分析334,其確定不存在沖突(340)。從而,通過按一來遞增總項目銷售字段以將總銷售量字段606的值變成九,來對Chris的編輯進行合并326。對Chris的編輯進行合并引起該文檔304的版本3的創(chuàng)建。
該智能沖突檢測系統(tǒng)的實施例的操作可以不同而仍然產生沒有沖突的期望的結果。例如,當處理某些數(shù)據(jù)類型(例如,計數(shù)值數(shù)據(jù)類型)時,該智能沖突檢測系統(tǒng)的實施例可以采用不需要完整的修訂歷史分析的一些規(guī)則。
與限于值設置的編輯相比,該場景還示出了使用意圖的語義表達如何允許智能沖突檢測系統(tǒng)接受具有相反的效果的編輯(例如,一個對值進行遞增,另一個對值進行遞減),而不觸發(fā)沖突。例如,在圖6A和圖6B的流程中,對計數(shù)值進行遞增(例如,指示已售的項目)的意圖之前或者之后的對計數(shù)值進行遞減(例如,指示返回的項目)的意圖將不會產生沖突。相比之下,對于被表達為最終值的同時的編輯進行比較的傳統(tǒng)的沖突檢測系統(tǒng)需要沖突解決方案。Bob的編輯將在項目銷售總數(shù)中設置值八,而Chris的編輯將針對項目銷售總數(shù)設置最終值七。由于針對項目銷售總數(shù)的值是不同的,因此常規(guī)沖突檢測系統(tǒng)不能解決Chris的編輯與Bob的編輯,并且將提示Chris進行解決。
該申請的主題可以以多種系統(tǒng)、設備、和其他制品來實現(xiàn)或者被實踐為方法。實施例可以被實現(xiàn)為硬件、軟件、計算機可讀介質或者其組合。在本文中所描述的實施例和功能可以經(jīng)由多種計算系統(tǒng)來操作,所述計算系統(tǒng)包括但不限于:臺式計算機系統(tǒng)、有線和無線計算系統(tǒng)、移動計算系統(tǒng)(例如,移動電話、上網(wǎng)本、平板或板式計算機、筆記本計算機、以及膝上型計算機)、手持式設備、多處理器系統(tǒng)、基于微處理器的或可編程的消費型電子產品、小型計算機、以及大型計算機。
各種類型的用戶界面和信息可以經(jīng)由板載計算設備顯示器或者經(jīng)由與一個或多個計算設備相關聯(lián)的遠程顯示單元來顯示。例如,各種類型的用戶界面和信息可以在各種類型的用戶界面和信息所透射到的墻面上顯示并且與這樣的墻面進行交互被投射在其上。與本發(fā)明實施例可以利用其實踐的多種計算系統(tǒng)的交互包括:鍵擊輸入、觸摸屏輸入、語音或其他音頻輸入、在相關聯(lián)的計算設備裝備有用于捕捉和解譯用戶手勢的檢測(例如,相機)功能以用于控制計算設備的功能等的情況下的手勢輸入。
圖7和圖8以及相關聯(lián)的描述提供了對其中可以實踐本發(fā)明的實施例的多種操作環(huán)境的討論。然而,所圖示和討論的設備和系統(tǒng)是出于示例和說明的目的,而不限于可以用于實踐在本文中所述的本發(fā)明的實施例的大量計算設備配置。
圖7是示出了利用其可以實踐本發(fā)明的實施例的計算設備700的物理組件(即,硬件)的框圖。在下文中所描述的計算設備組件可以適用于實施計算設備,其包括但不限于:個人計算機、平板計算機、平面計算機和智能電話、或者在文本中所討論的任何其他計算設備。在基本配置中,計算設備700可以包括系統(tǒng)存儲器704以及至少一個處理單元702。取決于計算設備的配置和類型,系統(tǒng)存儲器704可以包括但不限于:易失性存儲(例如,隨機存取存儲器)、非易失性存儲(例如,只讀存儲器)、閃速存儲器、或者這樣的存儲器的任何組合。系統(tǒng)存儲器704可以包括操作系統(tǒng)705和適用于運行軟件應用720的一個或多個程序模塊706,例如智能沖突檢測系統(tǒng)100的組件。例如,操作系統(tǒng)705可以適用于控制計算設備700的操作。此外,本發(fā)明的實施例可結合圖形庫、其他操作系統(tǒng)或任何其他應用程序來實踐,并且不局限于任何特定的應用或系統(tǒng)。由虛線708內的那些組件示出了該基本配置。計算設備700可以具有額外的特征或功能。例如,計算設備700還可以包括諸如例如磁盤、光盤或磁帶之類的額外的數(shù)據(jù)存儲設備(可移動的和/或不可移動的)。由可移動存儲設備709和不可移動存儲設備710示出了這樣額外的存儲。
如上所述,可以將多個程序模塊和數(shù)據(jù)文件存儲在系統(tǒng)存儲器704中。當在處理單元702上執(zhí)行時,軟件應用720可以執(zhí)行包括但不限于智能沖突檢測方法200的一個或多個階段的過程??梢愿鶕?jù)本發(fā)明的實施例而使用的其他程序模塊可以包括以下應用,例如電子郵件及聯(lián)系人應用、文字處理應用、電子表格應用、數(shù)據(jù)庫應用、幻燈片演示應用、畫圖或計算機輔助應用程序等。
此外,可以在包括分立電子元件的電路、包含邏輯門的封裝或集成的電子芯片、利用微處理器的電路、或者在包含電子元件或微處理器的單個芯片上實現(xiàn)本發(fā)明的實施例。例如,可以經(jīng)由其中所示出的每個或許多組件可以集成在單個集成電路上的片上系統(tǒng)(SOC)來實踐本發(fā)明的實施例。這樣的SOC設備可以包括一個或多個處理單元、圖形單元、通信單元、系統(tǒng)虛擬化單元、以及各種應用功能,其全部作為單個集成電路而被集成(或“燒”)到芯片基底上。當經(jīng)由SOC進行操作時,可以經(jīng)由在單個集成電路(芯片)上與計算設備700的其他組件集成的專用邏輯來對在本文中所描述的關于應用720的功能進行操作。還可以使用能夠執(zhí)行邏輯操作(例如AND、OR和NOT)的其他技術來實踐本發(fā)明的實施例,所述其他技術包括但不限于機械、光學、流體、和量子技術。另外,可以在通用計算機內或在任何其他任何電路或系統(tǒng)中實踐本發(fā)明的實施例。
計算設備700還可以具有一個或多個輸入設備712,例如鍵盤、鼠標、筆、語音輸入設備、觸摸輸入設備等。還可以包括輸出設備714,例如顯示器、揚聲器、打印機等。前述設備是示例并且也可以使用其他設備。計算設備700可以包括允許與其他計算設備718進行通信的一個或多個通信連接716。合適的通信連接716的示例包括但不限于:RF發(fā)射機、接收機和/或收發(fā)機電路;通用串行總線(USB)、并行和/或串行端口。
如在本文中所使用的術語計算機可讀介質可以包括計算機存儲介質。計算機存儲介質可以包括以任何用于存儲信息(例如,計算機可讀指示、數(shù)據(jù)結構、或程序模塊)的方法或技術來實現(xiàn)的易失性的和非易失性的、可移動的和不可移動的介質。系統(tǒng)存儲器704、可移動存儲設備709、和不可移動存儲設備710都是計算機存儲介質的示例(即,存儲器存儲)。計算機存儲介質可以包括RAM、ROM、電可擦只讀存儲器(EEPROM)、閃速存儲器或其他存儲器技術、CD-ROM、數(shù)字通用盤(DVD)或其他光存儲、盒式磁帶、磁帶、磁盤存儲器或其他磁存儲設備、或者可用于存儲信息且可以由計算機設備700訪問的任何其他制品。任何這樣的計算機存儲介質都可以是計算設備700的一部分。
圖8A和8B圖示了利用其可以實踐本發(fā)明的實施例的移動計算設備800。合適的移動計算設備的示例包括但不限于:移動電話、智能電話、平板計算機、平面計算機、以及膝上型計算機。在基本配置中,移動計算設備800是具有輸入元件和輸出元件兩者的手持式計算機。移動計算設備800通常包括顯示器805以及允許用戶將信息輸入到移動計算設備800中的一個或多個輸入按鈕810。移動計算設備800的顯示器805也可以充當輸入設備(例如,觸摸屏顯示器)。如果被包括在內,則可選的側輸入元件815允許進一步的用戶輸入。側輸入元815可以是旋轉開關、按鈕、或任何其他類型的手動輸入元件。在可替代的實施例中,移動計算設備800可包含更多或更少的輸入元件。例如,在一些實施例中,顯示器805可以不是觸摸屏。在另一個可替代的實施例中,移動計算設備800是諸如蜂窩電話之類的便攜式電話系統(tǒng)。移動計算設備800還可以包括可選的小鍵盤835。可選的小鍵盤835可以是物理小鍵盤或者是在觸摸屏顯示器上生成的“軟”小鍵盤。在各種實施例中,輸出元件包括用于示出圖形用戶界面(GUI)的顯示器805、視覺指示器820(例如,發(fā)光二極管)、和/或音頻換能器825(例如,揚聲器)。在一些實施例中,移動計算設備800包含用來向用戶提供觸覺反饋的振動換能器。在另一個實施例中,移動計算設備800包含用于向外部設備發(fā)送信號或者從外部設備接收信號的輸入和/或輸出端口,例如音頻輸入端(例如,麥克風插孔)、音頻輸出端(如耳機插孔)、以及視頻輸出端(例如,HDMI端口)。
圖8B是示出了移動計算設備的一個實施例的架構的框圖。即,移動計算設備800可以包含用于實現(xiàn)一些實施例的系統(tǒng)(即,架構)802。在一個實施例中,系統(tǒng)802被實現(xiàn)為能夠運行一個或多個應用(例如瀏覽器、電子郵件、日歷、聯(lián)系人管理器、消息傳送客戶端、游戲、以及媒體客戶端/播放器)的“智能電話”。在一些實施例中,將系統(tǒng)802集成為諸如集成的個人數(shù)字助理(PDA)和無線電話之類的計算設備。
一個或多個應用程序865可被加載到存儲器862中,并且在操作系統(tǒng)864上運行或者結合操作系統(tǒng)864運行。應用程序的示例包括電話撥號程序、電子郵件程序、個人信息管理(PIM)程序、文字處理程序、電子表格程序、互聯(lián)網(wǎng)瀏覽器程序、消息傳送程序等。系統(tǒng)802還包括存儲器862內的非易失性存儲區(qū)868。非易失性存儲區(qū)868可以用于存儲如果系統(tǒng)802斷電而不應該丟失的持續(xù)的信息。應用程序865可以使用非易失性存儲區(qū)868中的信息并將信息存儲在非易失性存儲區(qū)868中,所述信息例如由電子郵件應用等所使用的電子郵件或其他消息。同步應用(未示出)也駐留在系統(tǒng)802上并且被編程為與駐留在主機計算機上的對應的同步應用進行交互,以保持存儲在非易失性存儲區(qū)域868中的信息與存儲在主機計算機處的對應的信息相同步。應當理解的是,包括在本文中所描述的軟件應用720在內的其他應用也可被加載到存儲器862中并且在移動計算設備800上運行。
系統(tǒng)802具有可以被實現(xiàn)為一個或多個電池的電源870。電源870還可以包括外置電源,例如交流的(AC)適配器或給電池供電或充電的加電對接托架。
系統(tǒng)802還可以包括執(zhí)行發(fā)送和接收射頻通信的功能的無線電設備872。無線電設備872經(jīng)由通信載波或服務供應商來促成系統(tǒng)802與外部世界之間的無線連通性。來往無線電設備872的傳輸是在操作系統(tǒng)864的控制下進行的。換句話說,可以將由無線電設備872所接收的通信經(jīng)由操作系統(tǒng)864散播至應用程序865,反之亦然。
視覺指示符820可以用于提供視覺通知和/或音頻接口874可以用于經(jīng)由音頻換能器825產生能夠聽到的通知。在所示出的實施例中,視覺指示符820是發(fā)光二極管(LED),而音頻換能器825是揚聲器。這些設備可直接地耦合至電源870,使得當被激活時,即使處理器860和其他組件可以關閉以節(jié)省電池電量,這些設備也能保持通電并持續(xù)由通知機制所指示的一段時間。LED可被編程為無限期地保持通電,直到用戶采取動作來指示該設備的通電狀態(tài)為止。音頻接口874用于向用戶提供能夠聽到的信號并且從用戶處接收能夠聽到的信號。例如,除了耦合至音頻換能器825之外,音頻接口874還可耦合至麥克風以接收能夠聽到的輸入,例如,促進電話會話。根據(jù)本發(fā)明的實施例,麥克風還可以充當音頻傳感器以促進對通知的控制,如在下文中描述的。系統(tǒng)802還可以包括支持用于記錄靜止的圖像、視頻流等的板載相機830的操作的視頻接口876。
實現(xiàn)系統(tǒng)802的移動計算設備800可以具有額外的特征或功能。例如,移動計算設備800還可以包括額外的數(shù)據(jù)存儲設備(可移動的和/或不可移動的),例如磁盤、光盤、或磁帶。由非易失性存儲區(qū)868示出了這樣額外的存儲設備。
如在上文中所描述的,可以將由移動計算設備800所生成或捕獲的數(shù)據(jù)/信息以及經(jīng)由系統(tǒng)802所存儲的數(shù)據(jù)/信息本地地存儲在移動計算設備800上,或者可以將數(shù)據(jù)存儲在可以經(jīng)由無線電設備872或經(jīng)由移動計算設備800和與移動計算設備800相關聯(lián)的單獨的計算設備(例如,分布式計算網(wǎng)絡(例如,互聯(lián)網(wǎng))中的服務器計算機)之間的有線連接由設備來訪問的任何數(shù)量的存儲介質上。應當理解的是,可以經(jīng)由移動計算設備800、經(jīng)由無線電872、或經(jīng)由分布式計算網(wǎng)絡來訪問這樣的數(shù)據(jù)/信息。類似地,根據(jù)公知的數(shù)據(jù)/信息傳輸和存儲方式(包括電子郵件和協(xié)同數(shù)據(jù)/信息共享系統(tǒng)),這樣的數(shù)據(jù)/信息可以容易地在計算設備之間傳輸以供存儲和使用。
在該公開中所提供的一個或多個實施例的描述或圖示旨在向本領域技術人員提供對主題的完整范圍的完全徹底和完整的公開,而不旨在以任何方式限制或約束所要求保護的發(fā)明的范圍。在該公開中所提供的實施例、示例、和細節(jié)被認為足以傳達所有物,并且使得本領域技術人員能夠制造并使用所要求保護的發(fā)明的最佳模式。被認為是對本領域技術人員公知的對結構、資源、操作、和行為的描述可以是簡要的或者被省略,以避免使得該申請的主題的較少人知道的或者獨特的方面難以理解。所要求保護的發(fā)明不應該被解釋為限于在該申請中所提供的任何實施例、示例、或細節(jié)。無論是共同地還是單獨地示出或描述,(結構上和方法上兩者的)各種特征旨在選擇性地包括或省略,以產生具有特定組的特征的實施例。此外,可以以任何順序或者同時地執(zhí)行所示出或描述的功能和行為中的任何一個或全部。在已經(jīng)提供有本申請的描述和圖示之后,本領域技術人員可以預想落入在該申請中所實施的一般的發(fā)明概念的更寬泛的方面的精神內的變型、修改和替代實施例,而不脫離所要求保護的發(fā)明的更寬泛的范圍。