亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在SyncML層實(shí)現(xiàn)數(shù)據(jù)同步的方法

文檔序號(hào):7626647閱讀:165來(lái)源:國(guó)知局
專利名稱:在SyncML層實(shí)現(xiàn)數(shù)據(jù)同步的方法
技術(shù)領(lǐng)域
本發(fā)明涉及開(kāi)放移動(dòng)聯(lián)盟定義的數(shù)據(jù)同步規(guī)范(SyncML DataSynchronization)技術(shù)領(lǐng)域,特別是指在SyncML層實(shí)現(xiàn)數(shù)據(jù)同步的方法。
背景技術(shù)
IBM、Nokia、Palm、Psion等公司為了制訂可以在多個(gè)平臺(tái)及網(wǎng)絡(luò)之間實(shí)現(xiàn)個(gè)人信息及企業(yè)內(nèi)數(shù)據(jù)同步的標(biāo)準(zhǔn)規(guī)格,于2000年2月份創(chuàng)建了業(yè)界團(tuán)體SyncML iniative。開(kāi)發(fā)SyncML的目的在于,使終端用戶、設(shè)備開(kāi)發(fā)商、基礎(chǔ)構(gòu)件開(kāi)發(fā)商、數(shù)據(jù)提供商、使用軟件開(kāi)發(fā)商以及服務(wù)提供商協(xié)同工作,真正實(shí)現(xiàn)使用任何終端設(shè)備均可隨時(shí)隨地訪問(wèn)任何網(wǎng)絡(luò)數(shù)據(jù)。SyncML數(shù)據(jù)同步的典型應(yīng)用是移動(dòng)設(shè)備或應(yīng)用服務(wù)器、與網(wǎng)絡(luò)服務(wù)器之間的數(shù)據(jù)同步。除此之外,SyncML還可用于對(duì)等的數(shù)據(jù)同步,如兩臺(tái)PC之間。
圖1所示為實(shí)現(xiàn)同步的示意圖。SyncML客戶端與服務(wù)器經(jīng)過(guò)同步初始化階段的參數(shù)協(xié)商以后,終端和服務(wù)器互相發(fā)送各自改變的數(shù)據(jù),以保證雙方數(shù)據(jù)的同步。
同步客戶端(DS Client),它通常是一個(gè)PC軟件、手機(jī)或PDA等智能終端。DS Client包含一個(gè)客戶端數(shù)據(jù)庫(kù)(Client Database),用來(lái)存儲(chǔ)用戶所需的數(shù)據(jù),這些數(shù)據(jù)包括通訊錄、日程、便箋、短信、電子郵件等。這些數(shù)據(jù)均有標(biāo)準(zhǔn)規(guī)范定義其格式,客戶端可以將數(shù)據(jù)轉(zhuǎn)換成標(biāo)準(zhǔn)的格式發(fā)送給服務(wù)器,服務(wù)器處理后可保存入自己的數(shù)據(jù)庫(kù)中。
同步服務(wù)器(DS Server),可接收來(lái)自DS Client的數(shù)據(jù)同步消息和同步命令,并能向同步客戶端發(fā)送同步消息。這個(gè)設(shè)備可以是一個(gè)網(wǎng)絡(luò)服務(wù)器或是一個(gè)PC。DS Server包含了一個(gè)服務(wù)器端數(shù)據(jù)庫(kù)(Server Database),用來(lái)存放服務(wù)器上的數(shù)據(jù)。
客戶端和服務(wù)器端都存儲(chǔ)有用于標(biāo)識(shí)數(shù)據(jù)的標(biāo)識(shí),在客戶端用LUID(Local Unique Identifier)作為數(shù)據(jù)標(biāo)識(shí);在服務(wù)器端使用GUID(GlobalUnique Identifer)作為數(shù)據(jù)標(biāo)識(shí)。
參見(jiàn)圖2,圖2所示為客戶端和服務(wù)器端的數(shù)據(jù)存儲(chǔ)示意。在客戶端,只需維護(hù)LUID與具體實(shí)際數(shù)據(jù)的對(duì)應(yīng)關(guān)系,在服務(wù)器端不僅需要維護(hù)GUID與具體實(shí)際數(shù)據(jù)的對(duì)應(yīng)關(guān)系,還要維護(hù)GUID和LUID的對(duì)應(yīng)關(guān)系。
同步類(lèi)型分為多種,具體參見(jiàn)表1。

表1
SyncML規(guī)范中規(guī)定的同步流程通常分為三個(gè)階段1、同步初始化階段,其主要完成身份鑒權(quán)、需要同步的數(shù)據(jù)庫(kù)的協(xié)商、同步能力的協(xié)商(支持同步哪些數(shù)據(jù)、支持哪些同步類(lèi)型等)。該交互過(guò)程可能需要持續(xù)多次才能完成。
2、同步階段,其主要用于客戶端和服務(wù)器中的一端,根據(jù)數(shù)據(jù)的狀態(tài)將發(fā)生改變的數(shù)據(jù)通過(guò)操作命令的方式發(fā)送到客戶端和服務(wù)器中的另一端,由另一端按照這些命令進(jìn)行相同的操作來(lái)達(dá)到同步的目的。
3、同步完成階段,其主要用于客戶端和服務(wù)器端互相確認(rèn)同步完成。
現(xiàn)有技術(shù)中,為實(shí)際的數(shù)據(jù)定義了Folder和File兩種格式,其主要是模擬PC機(jī)上的文件夾和文件那樣的樹(shù)狀目錄結(jié)構(gòu),并定義Folder和File有類(lèi)似文件系統(tǒng)那樣的屬性,如是否隱藏(h)、是否為系統(tǒng)目錄或文件(s)、是否壓縮(a)、是否刪除,如果為刪除狀態(tài),目錄或文件可以被刪除(d)、是否可寫(xiě)(w)、是否可讀(r)、文件是否可執(zhí)行(x)等。而且,在執(zhí)行同步操作時(shí),只能用于同步文件系統(tǒng)那樣的物理方式的目錄結(jié)構(gòu)。
同時(shí),在現(xiàn)有技術(shù)中還提供了過(guò)濾(Filtering)功能,其作用主要是在初始化協(xié)商階段指明過(guò)濾條件。例如在協(xié)商終端能力時(shí),可以針對(duì)待同步數(shù)據(jù)指定過(guò)濾條件,如A、指定客戶端不接收vCard中的PHOTO屬性;B、指定客戶端僅僅同步屬于Business和Personal群組的聯(lián)系人;其中的過(guò)濾條件B可以看做是客戶端和服務(wù)器端協(xié)商僅同步指定目錄的過(guò)程。
但是,即使是用于同步文件系統(tǒng)那樣的物理方式的目錄結(jié)構(gòu),在現(xiàn)有的規(guī)范中也沒(méi)有明確說(shuō)明具體的實(shí)現(xiàn)方法,即沒(méi)有明確如何使用Folder和File進(jìn)行遞歸同步,因而,當(dāng)前各個(gè)廠商幾乎都沒(méi)有對(duì)某一目錄進(jìn)行同步的實(shí)現(xiàn)方法。
再有,即使采用這種方法,也只能實(shí)現(xiàn)對(duì)物理方式的目錄結(jié)構(gòu)實(shí)現(xiàn)同步,而不能對(duì)邏輯方式的目錄結(jié)構(gòu)實(shí)現(xiàn)同步,無(wú)法區(qū)分遞歸同步和非遞歸同步。例如,假設(shè)用戶的手機(jī)內(nèi)已存在通訊錄、短信、電子郵件等幾個(gè)以物理方式存在的目錄結(jié)構(gòu),在現(xiàn)有技術(shù)中,用戶只能同步短信這一大類(lèi),而不能將已存儲(chǔ)的短信分為“笑話”和“祝福”兩個(gè)邏輯類(lèi),更不能只同步“笑話”這一邏輯目錄。同時(shí)也不支持一個(gè)數(shù)據(jù)項(xiàng)同時(shí)存在于兩個(gè)分類(lèi)中,例如對(duì)于用戶通訊簿,張三既屬于“同事組”,又屬于“朋友組”的需求無(wú)法實(shí)現(xiàn)。
另外,在現(xiàn)有通訊錄(vCard)規(guī)范中有g(shù)roup屬性,可以用于分類(lèi),但是其與具體的同步內(nèi)容綁定即同步指定的目錄依賴于具體的數(shù)據(jù)格式,而且同一內(nèi)容只能屬于一個(gè)分類(lèi)而不能同時(shí)屬于多個(gè)分類(lèi),例如通訊錄中張三的屬性是“同事”,那么其就只能屬于“同事”這一分類(lèi),而不能再屬于“好友”這一分類(lèi)。并且其他數(shù)據(jù)格式,如短信、日程等,并不支持基于group的屬性。可見(jiàn),該種分類(lèi)并不通用。再有,基于vCard的group屬性需要用戶打開(kāi)具體的數(shù)據(jù)格式來(lái)編輯群組名,這樣可能由于誤操作使得“好友”和“好友”被認(rèn)為是不同的群組,且大小寫(xiě)敏感。而且group屬性僅能夠支持一級(jí)目錄結(jié)構(gòu),對(duì)于多級(jí)目錄是不支持的。
在現(xiàn)有技術(shù)中當(dāng)客戶端操作和服務(wù)器端操作發(fā)生沖突時(shí),僅僅是采用以客戶端數(shù)據(jù)為主、或者以服務(wù)器端數(shù)據(jù)為主的簡(jiǎn)單解決措施;當(dāng)采用目錄結(jié)構(gòu)以后,沖突發(fā)生的情況就會(huì)變得復(fù)雜,例如用戶在客戶端上移動(dòng)A目錄使其成為B目錄的子目錄,而服務(wù)器端是在A目錄中增加了一個(gè)條目,二者的操作發(fā)生了沖突,如果采用現(xiàn)有技術(shù),最終只能是采用客戶端的操作,服務(wù)器端新增條目被丟棄;或者客戶端上A目錄新增一個(gè)條目,A目錄移動(dòng)到B目錄下的操作被丟棄;而實(shí)際用戶希望的情況是A目錄下新增了條目,并且A目錄被移動(dòng)到B目錄下。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種在SyncML層實(shí)現(xiàn)數(shù)據(jù)同步的方法,可以指定任意一目錄進(jìn)行同步,不但節(jié)省網(wǎng)絡(luò)資源,而且增強(qiáng)用戶體驗(yàn)。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的
一種在SyncML層實(shí)現(xiàn)數(shù)據(jù)同步的方法,當(dāng)SyncML客戶端或服務(wù)器端中的一端接收到來(lái)自用戶的同步請(qǐng)求時(shí),客戶端和服務(wù)器端協(xié)商待同步數(shù)據(jù)所屬目錄;該方法包括以下步驟a、SyncML客戶端或服務(wù)器端中的一端首先確定接收到的請(qǐng)求同步命令中待同步數(shù)據(jù)的類(lèi)型,如果是目錄項(xiàng),則執(zhí)行步驟b,如果是數(shù)據(jù)項(xiàng)目,則執(zhí)行步驟c;b、從已設(shè)置的目錄表中獲取該待同步數(shù)據(jù)的當(dāng)前狀態(tài),如果當(dāng)前狀態(tài)指示為未變化,則不做處理,如果當(dāng)前狀態(tài)指示為變化,則根據(jù)該變化狀態(tài)構(gòu)建與之相對(duì)應(yīng)的數(shù)據(jù)同步命令,將該數(shù)據(jù)同步命令發(fā)送給客戶端或服務(wù)器端中的另一端;c、從已設(shè)置的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中獲取該待同步數(shù)據(jù)的變化狀態(tài),并根據(jù)該變化狀態(tài)構(gòu)建與之相對(duì)應(yīng)的數(shù)據(jù)同步命令,將該數(shù)據(jù)同步命令發(fā)送給客戶端或服務(wù)器端中的另一端;所述所構(gòu)建的命令中至少包括待同步數(shù)據(jù)的數(shù)據(jù)類(lèi)型和待同步數(shù)據(jù)編號(hào);SyncML客戶端或服務(wù)器中的另一端接收到來(lái)自對(duì)端的同步命令后,執(zhí)行以下步驟d、根據(jù)接收到的數(shù)據(jù)同步命令,確定操作類(lèi)型,更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步。
較佳地,所述發(fā)起同步請(qǐng)求的為客戶端,所述執(zhí)行同步操作的為服務(wù)器端;所述該待同步數(shù)據(jù)的變化狀態(tài)為新增N,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為增加ADD同步命令;所述該命令中的待同步數(shù)據(jù)編號(hào)是該數(shù)據(jù)在客戶端的編號(hào),且該命令中進(jìn)一步包括具體的待同步數(shù)據(jù)以及該數(shù)據(jù)所屬父目錄;所述服務(wù)器端確定操作類(lèi)型為增加;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟
根據(jù)接收到的數(shù)據(jù)同步命令,在本地?cái)?shù)據(jù)庫(kù)保存接收到的待同步數(shù)據(jù),為該待同步數(shù)據(jù)分配服務(wù)器本地編號(hào),在已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中保存該同步數(shù)據(jù)在客戶端的編號(hào)與該同步數(shù)據(jù)在服務(wù)器端的編號(hào)的對(duì)應(yīng)關(guān)系;并且,根據(jù)同步命令中的待同步數(shù)據(jù)的數(shù)據(jù)類(lèi)型,確定該同步數(shù)據(jù)的類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則在本地已設(shè)置的目錄表中增加相應(yīng)條目,如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,則在本地已設(shè)置的數(shù)據(jù)條目表和數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系索引表中增加相應(yīng)條目。
較佳地,所述發(fā)起同步請(qǐng)求的為服務(wù)器端,所述執(zhí)行同步操作的為客戶端;所述該待同步數(shù)據(jù)的變化狀態(tài)為新增N,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為增加ADD同步命令;所述該命令中的待同步數(shù)據(jù)編號(hào)是該數(shù)據(jù)在服務(wù)器端的編號(hào),且該命令中進(jìn)一步包括具體的待同步數(shù)據(jù)以及該數(shù)據(jù)所屬父目錄;所述客戶端確定操作類(lèi)型為增加;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令,在本地?cái)?shù)據(jù)庫(kù)保存接收到的待同步數(shù)據(jù),為該待同步數(shù)據(jù)分配客戶端本地編號(hào),并且,根據(jù)同步命令中的待同步數(shù)據(jù)的數(shù)據(jù)類(lèi)型,確定該同步數(shù)據(jù)的類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則在本地已設(shè)置的目錄表中增加相應(yīng)條目,如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,則在本地已設(shè)置的數(shù)據(jù)條目表和數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系索引表中增加相應(yīng)條目;之后,給服務(wù)器端返回該數(shù)據(jù)客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系,由服務(wù)器端將接收到的對(duì)應(yīng)關(guān)系保存在本地已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表內(nèi)。
較佳地,步驟b執(zhí)行完畢之后,進(jìn)一步包括e判斷該新增加的目錄項(xiàng)下是否有新增加的數(shù)據(jù)項(xiàng)目,如果有,則重復(fù)執(zhí)行步驟c,直到將所有數(shù)據(jù)項(xiàng)目全部同步為止,之后執(zhí)行步驟f;如果沒(méi)有,則直接執(zhí)行步驟f;f、判斷該新增加的目錄項(xiàng)下是否有新增加的子目錄項(xiàng),如果有,則重復(fù)執(zhí)行步驟b,直到將所有目錄項(xiàng)全部同步為止,之后執(zhí)行步驟e,如果沒(méi)有,則結(jié)束。
較佳地,步驟b執(zhí)行完畢之后,進(jìn)一步包括e判斷該新增加的目錄項(xiàng)下是否有新增加的數(shù)據(jù)項(xiàng)目,如果有,則重復(fù)執(zhí)行步驟c,直到將所有數(shù)據(jù)項(xiàng)目全部同步為止。
較佳地,所述該待同步數(shù)據(jù)的變化狀態(tài)為更新U,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為替換Replace同步命令,且該命令中進(jìn)一步包括具體的待同步數(shù)據(jù),以及該數(shù)據(jù)所屬父目錄;所述另一端確定操作類(lèi)型為更新;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令,確定該同步數(shù)據(jù)的類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則在本地已設(shè)置的目錄表中更新待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目,如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,則在本地已設(shè)置的數(shù)據(jù)條目表中更新待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目。
較佳地,步驟b執(zhí)行完畢之后,進(jìn)一步包括g判斷該已更新的目錄項(xiàng)下是否有更新的數(shù)據(jù)項(xiàng)目,如果有,則重復(fù)執(zhí)行步驟c,直到將所有數(shù)據(jù)項(xiàng)目全部同步為止,之后執(zhí)行步驟h;如果沒(méi)有,則直接執(zhí)行步驟h;h、判斷該已更新的目錄項(xiàng)下是否存在更新的子目錄項(xiàng),如果有,則重復(fù)執(zhí)行步驟b,直到將所有目錄項(xiàng)全部同步為止,之后執(zhí)行步驟g,如果沒(méi)有,則結(jié)束。
較佳地,步驟b執(zhí)行完畢之后,進(jìn)一步包括g判斷該已更新的目錄項(xiàng)下是否有更新的數(shù)據(jù)項(xiàng)目,如果有,則重復(fù)執(zhí)行步驟c,直到將所有數(shù)據(jù)項(xiàng)目全部同步為止。
較佳地,所述該待同步數(shù)據(jù)的變化狀態(tài)為移動(dòng)M,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為移動(dòng)Move同步命令;且該命令中進(jìn)一步包括變更后的該數(shù)據(jù)所屬父目錄;所述另一端確定操作類(lèi)型為移動(dòng);所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令,確定該同步數(shù)據(jù)的類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則在本地已設(shè)置的目錄表中將該待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目所屬父目錄更改為接收到的同步命令中的父目錄,如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,則在本地已設(shè)置的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中將待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目所屬父目錄更改為接收到的同步命令中的父目錄。
較佳地,步驟b所述當(dāng)前狀態(tài)指示為刪除D,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為刪除Delete同步命令;則所述發(fā)起同步請(qǐng)求的一端進(jìn)一步包括判斷該待刪除目錄下的數(shù)據(jù)項(xiàng)目以及該目錄的子目錄下的數(shù)據(jù)項(xiàng)目是否僅存在于該待刪除目錄下,如果是,則構(gòu)建一條刪除命令,且該刪除命令中包含指示永久刪除的信息;否則,針對(duì)每個(gè)數(shù)據(jù)項(xiàng)目和目錄項(xiàng)分別構(gòu)建一條刪除命令,且僅存在于該待刪除目錄下的數(shù)據(jù)項(xiàng)目或目錄項(xiàng)所對(duì)應(yīng)的刪除命令中包含指示永久刪除的信息,并非僅存在于該待刪除目錄下的數(shù)據(jù)項(xiàng)目或目錄項(xiàng)所對(duì)應(yīng)的刪除命令中包含指示非永久刪除的信息;所述另一端確定操作類(lèi)型為刪除;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令確定刪除類(lèi)型,以及待同步數(shù)據(jù)的數(shù)據(jù)類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則無(wú)論是刪除類(lèi)型為永久刪除還是非永久刪除,都在本地已設(shè)置的目錄表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目;如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,且刪除類(lèi)型為永久刪除,則在本地?cái)?shù)據(jù)庫(kù)內(nèi)刪除該數(shù)據(jù),并在本地已設(shè)置的數(shù)據(jù)條目表和數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中,分別刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目;如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,且刪除類(lèi)型為非永久刪除,則在本地的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目。
較佳地,步驟b所述當(dāng)前狀態(tài)指示為刪除D,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為刪除Delete同步命令;所述另一端確定操作類(lèi)型為刪除;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令確定刪除類(lèi)型,以及待同步數(shù)據(jù)的數(shù)據(jù)類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則再判斷該待刪除目錄下的數(shù)據(jù)項(xiàng)目以及該目錄的子目錄及子目錄下的數(shù)據(jù)項(xiàng)目是否僅存在于該待刪除目錄下,如果是,則確定該待刪除目錄以及該目錄下的數(shù)據(jù)項(xiàng)目、和子目錄及子目錄下的數(shù)據(jù)項(xiàng)目均為永久刪除,否則,確定針對(duì)該待刪除目錄以及僅存在于該待刪除目錄下的數(shù)據(jù)項(xiàng)目或目錄項(xiàng)為永久刪除,針對(duì)并非僅存在于該待刪除目錄下的數(shù)據(jù)項(xiàng)目或目錄項(xiàng)為非永久刪除;如果刪除的是目錄項(xiàng),則無(wú)論是刪除類(lèi)型為永久刪除還是非永久刪除,都在本地已設(shè)置的目錄表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目;如果刪除的是數(shù)據(jù)項(xiàng)目,且刪除類(lèi)型為永久刪除,則在本地?cái)?shù)據(jù)庫(kù)內(nèi)刪除該數(shù)據(jù),并在本地已設(shè)置的數(shù)據(jù)條目表和數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中,分別刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目;如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,且刪除類(lèi)型為非永久刪除,則在本地的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目。
較佳地,步驟c所述變化狀態(tài)為刪除D,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為刪除Delete同步命令;則所述發(fā)起同步請(qǐng)求的一端進(jìn)一步包括判斷接收到的來(lái)自用戶的刪除命令中是否指示永久刪除該數(shù)據(jù)項(xiàng)目,如果是,則所述刪除命令中進(jìn)一步包括永久刪除的標(biāo)識(shí),否則,判斷該待刪除數(shù)據(jù)項(xiàng)目是否位于多個(gè)目錄下,如果是,在所述刪除命令中進(jìn)一步包括非永久刪除的標(biāo)識(shí),否則所述刪除命令中進(jìn)一步包括永久刪除的標(biāo)識(shí);所述另一端確定操作類(lèi)型為刪除;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令確定數(shù)據(jù)類(lèi)型為數(shù)據(jù)項(xiàng)目后,再確定刪除類(lèi)型,如果刪除類(lèi)型為永久刪除,則在本地?cái)?shù)據(jù)庫(kù)內(nèi)刪除該數(shù)據(jù),并在本地已設(shè)置的數(shù)據(jù)條目表和數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中,分別刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目;如果刪除類(lèi)型為非永久刪除,則在本地的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目。
較佳地,在作為執(zhí)行同步操作的客戶端或服務(wù)器另一端執(zhí)行完畢刪除同步操作后,進(jìn)一步包括發(fā)起同步請(qǐng)求的一端在本地已設(shè)置的相應(yīng)數(shù)據(jù)表中刪除相應(yīng)數(shù)據(jù)項(xiàng)目。
較佳地,如果所述發(fā)起同步請(qǐng)求的為客戶端,執(zhí)行同步操作的為服務(wù)器端,則所述同步命令中的待同步數(shù)據(jù)編號(hào)是該數(shù)據(jù)在客戶端的編號(hào);所述服務(wù)器端接收到數(shù)據(jù)同步命令后,確定數(shù)據(jù)類(lèi)型前進(jìn)一步包括在已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中獲取該更新的待同步數(shù)據(jù)在服務(wù)器本地的編號(hào),之后再繼續(xù)執(zhí)行后續(xù)操作。
如果所述發(fā)起同步請(qǐng)求的為服務(wù)器端,執(zhí)行同步操作的為客戶端,則所述同步命令中的待同步數(shù)據(jù)編號(hào)是服務(wù)器端根據(jù)自身已設(shè)置的客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表獲取的該數(shù)據(jù)在客戶端的編號(hào)。
較佳地,所述在SyncML客戶端及服務(wù)器內(nèi)分別設(shè)置的目錄表中,至少包括目錄項(xiàng)編號(hào)、目錄名、該目錄項(xiàng)名所屬的父目錄、以及該目錄項(xiàng)狀態(tài)的對(duì)應(yīng)關(guān)系;所述在SyncML客戶端及服務(wù)器內(nèi)分別設(shè)置的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系索引表中,至少包括數(shù)據(jù)項(xiàng)目編號(hào)、父目錄、以及數(shù)據(jù)項(xiàng)目狀態(tài)的對(duì)應(yīng)關(guān)系。
較佳地,所述在SyncML客戶端及服務(wù)器內(nèi)分別設(shè)置的數(shù)據(jù)條目表中至少包括數(shù)據(jù)項(xiàng)目編號(hào)以及具體的數(shù)據(jù)內(nèi)容的對(duì)應(yīng)關(guān)系;所述在服務(wù)器端已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中至少包括數(shù)據(jù)在客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系。
較佳地,所述協(xié)商待同步數(shù)據(jù)所屬目錄的操作在初始化階段,包括以下步驟對(duì)URI的格式作預(yù)定義,在目標(biāo)數(shù)據(jù)庫(kù)元素中通過(guò)URI的含義指明待同步目錄。
較佳地,所述協(xié)商待同步數(shù)據(jù)所屬目錄的操作在初始化階段,包括以下步驟在過(guò)濾條件元素中通過(guò)過(guò)濾條件指明待同步目錄。
較佳地,該方法進(jìn)一步包括增設(shè)以服務(wù)器端和客戶端合并處理(Win-Win)的仲裁結(jié)果;當(dāng)服務(wù)器端和客戶端的修改操作發(fā)生沖突時(shí),客戶端根據(jù)服務(wù)器端的修改執(zhí)行同步操作,并且,服務(wù)器端根據(jù)客戶端的修改執(zhí)行同步操作;所述修改包括新增、更新、移動(dòng)、刪除、復(fù)制操作。
本發(fā)明所述方法,不但詳細(xì)給出了實(shí)現(xiàn)數(shù)據(jù)分類(lèi)同步的具體實(shí)現(xiàn)方式,使得針對(duì)某一目錄進(jìn)行同步能夠得以實(shí)現(xiàn),而且,還在具體實(shí)現(xiàn)的過(guò)程中,盡量傳遞編號(hào)、數(shù)據(jù)類(lèi)型等信息,避免了過(guò)多的具體的數(shù)據(jù)內(nèi)容進(jìn)行傳遞,且同步數(shù)據(jù)實(shí)際占用的物理空間也較小(每個(gè)數(shù)據(jù)只有一份),因而最大限度地減少了冗余數(shù)據(jù)的存在,節(jié)省了有限的設(shè)備資源和網(wǎng)絡(luò)資源。同時(shí)用戶可以按照自己的意愿創(chuàng)建物理或邏輯分類(lèi),可以通過(guò)拖拉操作等,將數(shù)據(jù)項(xiàng)目歸入指定的目錄,不需要手工去編輯數(shù)據(jù)項(xiàng)目;可以指定任一目錄即分類(lèi)進(jìn)行遞歸或非遞歸同步,增強(qiáng)了用戶體驗(yàn)感。


圖1所示為實(shí)現(xiàn)同步的示意圖;圖2所示為客戶端和服務(wù)器端的數(shù)據(jù)存儲(chǔ)示意;圖3a所示為應(yīng)用本發(fā)明實(shí)施例一的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖;圖3b所示為應(yīng)用本發(fā)明實(shí)施例一的客戶端的數(shù)據(jù)存儲(chǔ)示意圖;圖4a所示為應(yīng)用本發(fā)明實(shí)施例二的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖;圖4b所示為應(yīng)用本發(fā)明實(shí)施例二的客戶端的數(shù)據(jù)存儲(chǔ)示意圖;圖5a所示為應(yīng)用本發(fā)明實(shí)施例三的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖;圖5b所示為應(yīng)用本發(fā)明實(shí)施例三的客戶端的數(shù)據(jù)存儲(chǔ)示意圖;圖6a所示為應(yīng)用本發(fā)明實(shí)施例四的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖;圖6b所示為應(yīng)用本發(fā)明實(shí)施例四的客戶端的數(shù)據(jù)存儲(chǔ)示意圖;圖7a所示為應(yīng)用本發(fā)明實(shí)施例五的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖;圖7b所示為應(yīng)用本發(fā)明實(shí)施例五的客戶端的數(shù)據(jù)存儲(chǔ)示意圖;
圖8a所示為應(yīng)用本發(fā)明實(shí)施例六的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖;圖8b所示為應(yīng)用本發(fā)明實(shí)施例六的客戶端的數(shù)據(jù)存儲(chǔ)示意圖。
具體實(shí)施例方式
下面結(jié)合附圖及具體實(shí)施例,對(duì)本發(fā)明再做進(jìn)一步地詳細(xì)說(shuō)明。
為了實(shí)現(xiàn)能夠使用戶按照自己的意愿創(chuàng)建物理或邏輯分類(lèi)目錄,并指定任意一分類(lèi)目錄進(jìn)行遞歸同步或非遞歸同步,需要在客戶端和服務(wù)器端分別設(shè)置以下三張數(shù)據(jù)表1、數(shù)據(jù)條目表(Data Item Table)該表用于保存所有的數(shù)據(jù)項(xiàng)目信息,其包括數(shù)據(jù)項(xiàng)目編號(hào)以及具體的數(shù)據(jù)內(nèi)容(Data)的對(duì)應(yīng)關(guān)系;其中,所述數(shù)據(jù)項(xiàng)目編號(hào)在客戶端以Item LUID表示,在服務(wù)器端以Item GUID表示2、目錄表(Folder Table)該表用于保存所有的目錄項(xiàng)信息,其包括目錄項(xiàng)編號(hào)、目錄名(Name)、該目錄項(xiàng)名所屬的父目錄(Parent Source)、以及該目錄項(xiàng)狀態(tài)(Folder Satus)的對(duì)應(yīng)關(guān)系。其中的狀態(tài)主要包括現(xiàn)存未修改Existing(E)、新增New(N)、更新Update(U)、刪除Delete(D)、移動(dòng)Move(M)以及復(fù)制Copy(C)狀態(tài);其中,Delete又可以分為永久刪除Delete permanetly(P-D)和非永久刪除Delete non-permanetly(P-ND)兩種狀態(tài);所述目錄項(xiàng)編號(hào)在客戶端以Folder LUID表示,在服務(wù)器端以Folder GUID表示。
3、數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系索引表(Index Table)該表用于保存數(shù)據(jù)項(xiàng)目的歸屬關(guān)系,其包括數(shù)據(jù)項(xiàng)目編號(hào)、父目錄(Parent Source)以及數(shù)據(jù)項(xiàng)目狀態(tài)(Data Satus)的對(duì)應(yīng)關(guān)系;其中所述數(shù)據(jù)項(xiàng)目編號(hào)在客戶端以ItemLUID表示,在服務(wù)器端以Item GUID表示。
再有,在服務(wù)器端還需保存數(shù)據(jù)在SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表,即GUID與LUID之間的對(duì)應(yīng)關(guān)系。
眾所周知,在SyncML中實(shí)現(xiàn)同步分為三個(gè)階段同步初始化階段、同步階段和同步完成階段。在本發(fā)明中同步完成階段的處理與現(xiàn)有方式相同,因此,以下僅就同步初始化階段和同步階段進(jìn)行描述。
在同步初始化階段,除了象現(xiàn)有技術(shù)一樣協(xié)商需要同步的數(shù)據(jù)庫(kù)、終端能力之外,還要指明待同步目錄,具體的可以有以下兩種方式來(lái)實(shí)現(xiàn)方式一在目標(biāo)數(shù)據(jù)庫(kù)元素中指明待同步目錄。具體為對(duì)統(tǒng)一資源標(biāo)識(shí)符(URI,Uniform Resource Identifier)的格式作預(yù)定義,預(yù)先指定哪一級(jí)標(biāo)識(shí)數(shù)據(jù)庫(kù)地址,哪一級(jí)表示目錄的地址,通過(guò)URI的標(biāo)識(shí)指明待同步目錄。當(dāng)然,如果需要同步多個(gè)目錄,可同時(shí)給出多個(gè)URI予以指明。
方式二在過(guò)濾條件元素中指明待同步目錄。具體為擴(kuò)展現(xiàn)有的過(guò)濾功能,在過(guò)濾條件(如Filter)中指明待同步目錄。所述待同步目錄是SyncML級(jí)別的目錄,是不依賴于同步數(shù)據(jù)類(lèi)型的。當(dāng)然,如果需要同步多個(gè)目錄,可同時(shí)指出多個(gè)目錄。
下面結(jié)合具體實(shí)施例對(duì)同步階段進(jìn)行說(shuō)明。由于客戶端發(fā)起同步與服務(wù)器端發(fā)起同步的處理流程相類(lèi)似,下面僅以客戶端發(fā)起同步,服務(wù)器端執(zhí)行數(shù)據(jù)同步操作為例進(jìn)行說(shuō)明。
實(shí)施例一用戶在短信的根目錄(./sms)下增加了一個(gè)新的目錄“bless”,并且,在“bless”目錄下又增加了兩個(gè)子目錄分別為“Spring Festival”和“Mid-autumn Festival”,同時(shí),在每個(gè)目錄下分別增加了一個(gè)數(shù)據(jù),即在“bless”目錄下增加了數(shù)據(jù)N1,在“Spring Festival”目錄下增加了數(shù)據(jù)N2,在“Mid-autumn Festival”目錄下增加了數(shù)據(jù)N3。
參見(jiàn)圖3a和圖3b,圖3a所示為應(yīng)用本發(fā)明實(shí)施例一的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖,其中,方框表示Folder,圓圈表示data Item;實(shí)線表示的狀態(tài)為Existing,虛線表示的狀態(tài)為New。圖3b所示為應(yīng)用本發(fā)明實(shí)施例一的客戶端的數(shù)據(jù)存儲(chǔ)示意圖。在客戶端保存有數(shù)據(jù)條目表Data Item Table、目錄表Folder Table和“數(shù)據(jù)條目-目錄”對(duì)應(yīng)關(guān)系索引表Index Table。各個(gè)列表所增加數(shù)據(jù)的狀態(tài)在圖3b都有相應(yīng)的反映。
當(dāng)用戶要求同步“bless”目錄時(shí),客戶端順序生成以下同步命令首先,客戶端根據(jù)接收到的來(lái)自用戶的同步bless目錄的命令確定同步數(shù)據(jù)是一個(gè)目錄項(xiàng)后,從Folder Table確定該bless的狀態(tài)為N,之后,構(gòu)建增加(ADD)的同步命令,并且,在該構(gòu)建的命令中的Meta字段指明根據(jù)Folder Table確定的數(shù)據(jù)類(lèi)型為目錄項(xiàng)Folder,LUID字段指明待同步數(shù)據(jù)的編號(hào)1006,Data字段指明具體的數(shù)據(jù)為bless,SourceParent字段指明其所屬父目錄為根目錄。
之后,客戶端確定bless目錄下數(shù)據(jù)項(xiàng)目狀態(tài),由于在Index Table中,數(shù)據(jù)項(xiàng)目2001所對(duì)應(yīng)的狀態(tài)為N,因此,構(gòu)建ADD同步命令,并且從DataItem Table中確定2001所對(duì)應(yīng)的具體數(shù)據(jù)內(nèi)容為N1后,該所構(gòu)建的ADD同步命令中的Meta字段指明數(shù)據(jù)類(lèi)型為數(shù)據(jù)項(xiàng)目Item,LUID字段指明待同步數(shù)據(jù)的編號(hào)為2001,Data字段指明具體的數(shù)據(jù)為N1,SourceParent字段指明其所屬父目錄為1006。
之后,當(dāng)客戶端確定bless目錄下沒(méi)有新增加的數(shù)據(jù)項(xiàng)目后,索引該bless目錄下子目錄的狀態(tài),其具體方法與確定bless目錄的方法相同,此處不再贅述。其確定的結(jié)果是構(gòu)建兩個(gè)ADD同步命令,其中一個(gè)命令中的Meta字段指明數(shù)據(jù)類(lèi)型為目錄項(xiàng)Folder,LUID字段指明待同步數(shù)據(jù)的編號(hào)1007,Data字段指明具體的數(shù)據(jù)為Spring Festival,SourceParent字段指明其所屬父目錄為1006;另一個(gè)命令中的Meta字段指明數(shù)據(jù)類(lèi)型為目錄項(xiàng)Folder,LUID字段指明待同步數(shù)據(jù)的編號(hào)1008,Data字段指明具體的數(shù)據(jù)為Mid-autumnFestival,SourceParent字段指明其所屬父目錄為1006。
之后,當(dāng)客戶端確定bless目錄下沒(méi)有新增加的子目錄后,再確定SpringFestival目錄和Mid-autumn Festival目錄下的數(shù)據(jù)項(xiàng)目的狀態(tài),其具體方法與確定N1的方法相同,即客戶端會(huì)分別再構(gòu)造兩條ADD同步命令,在此不再贅述。
以此類(lèi)推,直到針對(duì)所有增加的數(shù)據(jù)均發(fā)出ADD同步命令為止,這樣也就實(shí)現(xiàn)了遞歸同步。當(dāng)然,如果只同步某一目錄項(xiàng),而不再同步該目錄項(xiàng)下的數(shù)據(jù)項(xiàng),實(shí)際就是實(shí)現(xiàn)了非遞歸同步。另外,還可以只同步某一目錄項(xiàng)及該目錄項(xiàng)下的數(shù)據(jù)項(xiàng)目,而不再同步該目錄項(xiàng)下的子目錄項(xiàng)。
之后,將所構(gòu)造的ADD同步命令全部發(fā)送給服務(wù)器。如果每個(gè)ADD命令的數(shù)據(jù)量較少,可在一個(gè)消息中包含多個(gè)ADD命令,一次性交互即可;如果數(shù)據(jù)較多,需要多次交互。在實(shí)際應(yīng)用中,還可以只發(fā)送一個(gè)ADD同步命令,但在一個(gè)ADD命令中包含多個(gè)目錄和數(shù)據(jù)項(xiàng)目,即其邏輯上仍然是多個(gè)ADD命令。
下面說(shuō)明服務(wù)器端接收到上述ADD命令后,執(zhí)行同步操作的過(guò)程。該過(guò)程所涉及的表格與圖3b所示表格類(lèi)似,因此圖未示。
當(dāng)服務(wù)器端接收到增加bless目錄項(xiàng)的同步命令后,通過(guò)接收到的同步命令中的Meta字段確定待同步數(shù)據(jù)的類(lèi)型為目錄項(xiàng),根據(jù)LUID字段確定該待同步數(shù)據(jù)在客戶端的編號(hào)為1006,根據(jù)Data字段確定其名稱為bless,根據(jù)SourceParent字段確定其父目錄為根目錄。之后,為該待同步數(shù)據(jù)分配服務(wù)器本地編號(hào)Folder GUID,如100006。然后,在本地已設(shè)置的目錄表中增加相應(yīng)條目,即增加100006、bless、根目錄以及該bless數(shù)據(jù)當(dāng)前狀態(tài)的對(duì)應(yīng)關(guān)系條目。并且,在自身已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中保該同步數(shù)據(jù)在客戶端的編號(hào)LUID與該同步數(shù)據(jù)在服務(wù)器端的編號(hào)GUID的對(duì)應(yīng)關(guān)系,即保存1006和100006之間的對(duì)應(yīng)關(guān)系。
當(dāng)服務(wù)器端接收到增加N1數(shù)據(jù)項(xiàng)目的同步命令后,通過(guò)接收到的同步命令中的Meta字段確定待同步數(shù)據(jù)的類(lèi)型為數(shù)據(jù)項(xiàng)目,根據(jù)LUID字段確定該待同步數(shù)據(jù)在客戶端的編號(hào)為2001,根據(jù)Data字段確定其具體的數(shù)據(jù)內(nèi)容為N1,根據(jù)SourceParent字段確定其父目錄為1006。之后,在本地?cái)?shù)據(jù)庫(kù)中保存該N1數(shù)據(jù),然后為該待同步數(shù)據(jù)分配服務(wù)器本地編號(hào)FolderGUID,如200001,并在本地已設(shè)置的數(shù)據(jù)條目表Data Item Table中增加相應(yīng)條目,即增加200001和N1的對(duì)應(yīng)關(guān)系條目;在Index Table中增加相應(yīng)條目,即增加200001、100006以及該N1數(shù)據(jù)當(dāng)前狀態(tài)的對(duì)應(yīng)關(guān)系條目,在自身已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中保該同步數(shù)據(jù)在客戶端的編號(hào)與該同步數(shù)據(jù)在服務(wù)器端的編號(hào)的對(duì)應(yīng)關(guān)系,即保存2001和200001之間的對(duì)應(yīng)關(guān)系。
服務(wù)器端增加Spring Festival目錄項(xiàng)和Mid-autumn Festival目錄項(xiàng)的方式與增加bless目錄項(xiàng)的方式相同,增加N2和N3數(shù)據(jù)項(xiàng)目的方法與增加N1數(shù)據(jù)項(xiàng)目的方式相同,在此不再贅述。
另外,有一點(diǎn)需要說(shuō)明的是如果是服務(wù)器端發(fā)起同步請(qǐng)求,由客戶端執(zhí)行同步操作,則服務(wù)器端發(fā)送給客戶端的同步請(qǐng)求中包含待同步數(shù)據(jù)在服務(wù)器端的編號(hào),客戶端執(zhí)行完同步操作后,將給服務(wù)器端返回該數(shù)據(jù)客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系即LUID與GUID的對(duì)應(yīng)關(guān)系,由服務(wù)器端將接收到的對(duì)應(yīng)關(guān)系保存在本地已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表內(nèi)。
至此,實(shí)現(xiàn)了增加數(shù)據(jù)的同步操作,而且該數(shù)據(jù)可以是一個(gè)具體的數(shù)據(jù)項(xiàng)目,也可以是根據(jù)用戶的意愿而創(chuàng)建的目錄項(xiàng),且該目錄項(xiàng)不受系統(tǒng)的數(shù)據(jù)物理結(jié)構(gòu)的限制。可見(jiàn),應(yīng)用本發(fā)明的好處是相同的數(shù)據(jù)只需傳遞一份,而且,執(zhí)行同步操作的一端,對(duì)相同數(shù)據(jù)也只需保存一份,大大節(jié)省了網(wǎng)絡(luò)資源和設(shè)備本身的資源。例如,假設(shè)N1同時(shí)屬于bless、Spring Festival和Mid-autumn Festival目錄下,那么在服務(wù)器端的同步操作過(guò)程中,只需在Index Table中再增加兩條相應(yīng)條目,即增加200001、100007以及該N1數(shù)據(jù)當(dāng)前狀態(tài)的對(duì)應(yīng)關(guān)系條目,和200001、100008以及該N1數(shù)據(jù)當(dāng)前狀態(tài)的對(duì)應(yīng)關(guān)系條目即可。
實(shí)施例二用戶在短信的根目錄(./sms)下更新了目錄“bless”的屬性,并更新了“bless”目錄下數(shù)據(jù)U1,僅更新了“Spring Festival”目錄下的數(shù)據(jù)U2。本實(shí)施例中,U2同時(shí)屬于Spring Festival和Mid-autumn Festival兩個(gè)目錄下。
參見(jiàn)圖4a和圖4b,圖4a所示為應(yīng)用本發(fā)明實(shí)施例二的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖,其中,方框表示Folder,圓圈表示data Item;實(shí)線表示的狀態(tài)為Existing,點(diǎn)畫(huà)線表示的狀態(tài)為Updata。圖4b所示為應(yīng)用本發(fā)明實(shí)施例二的客戶端的數(shù)據(jù)存儲(chǔ)示意圖。在客戶端保存有數(shù)據(jù)條目表Data Item Table、目錄表Folder Table和“數(shù)據(jù)條目-目錄”對(duì)應(yīng)關(guān)系索引表Index Table。各個(gè)列表所中數(shù)據(jù)的狀態(tài)在圖4b都有相應(yīng)的反映。
當(dāng)用戶要求同步“bless”目錄時(shí),客戶端順序生成以下同步命令首先,客戶端根據(jù)接收到的來(lái)自用戶的同步bless目錄的命令確定同步數(shù)據(jù)是一個(gè)目錄項(xiàng)后,從Folder Table確定該bless的狀態(tài)為U,之后,構(gòu)建替換(Replace)的同步命令,并且,在該構(gòu)建的命令中的Meta字段指明根據(jù)Folder Table確定的數(shù)據(jù)類(lèi)型為目錄項(xiàng)Folder,LUID字段指明待同步數(shù)據(jù)的編號(hào)1006,Data字段指明具體的數(shù)據(jù)為bless,SourceParent字段指明其所屬父目錄為根目錄。
之后,客戶端確定bless目錄下數(shù)據(jù)項(xiàng)目狀態(tài),由于在Index Table中,1006所對(duì)應(yīng)的數(shù)據(jù)項(xiàng)目為2001,且其狀態(tài)為U,因此,構(gòu)建Replace同步命令,并且從Data Item Table中確定2001所對(duì)應(yīng)的具體數(shù)據(jù)內(nèi)容為U1后,該所構(gòu)建的Replace同步命令中的Meta字段指明數(shù)據(jù)類(lèi)型為數(shù)據(jù)項(xiàng)目Item,LUID字段指明待同步數(shù)據(jù)的編號(hào)為2001,Data字段指明具體的數(shù)據(jù)為U1,SourceParent字段指明其所屬父目錄為1006。
之后,當(dāng)客戶端確定bless目錄下沒(méi)有更新的數(shù)據(jù)項(xiàng)目后,索引該bless目錄下子目錄的狀態(tài),其具體方法與確定bless目錄的方法相同,本例中,該bless目錄下子目錄的狀態(tài)未發(fā)生變化,不做處理。
之后,當(dāng)客戶端確定bless目錄下沒(méi)有更新的子目錄后,再確定子目錄Spring Festival下的數(shù)據(jù)項(xiàng)目的狀態(tài),其具體方法與確定U1的方法相同。即其最終的結(jié)果是構(gòu)建Replace同步命令,并且從Data Item Table中確定2002所對(duì)應(yīng)的具體數(shù)據(jù)內(nèi)容為U2后,該所構(gòu)建的Replace同步命令中的Meta字段指明數(shù)據(jù)類(lèi)型為數(shù)據(jù)項(xiàng)目Item,LUID字段指明待同步數(shù)據(jù)的編號(hào)為2002,Data字段指明具體的數(shù)據(jù)為U2,SourceParent字段指明其所屬父目錄為1007。
以此類(lèi)推,直到針對(duì)所有更新的數(shù)據(jù)均發(fā)出Replace同步命令為止,這樣也就實(shí)現(xiàn)了遞歸同步。當(dāng)然,如果只同步某一目錄項(xiàng),而不再同步該目錄項(xiàng)下的數(shù)據(jù)項(xiàng),實(shí)際就是實(shí)現(xiàn)了非遞歸同步。另外,還可以只同步某一目錄項(xiàng)及該目錄項(xiàng)下的數(shù)據(jù)項(xiàng)目,而不再同步該目錄項(xiàng)下的子目錄項(xiàng)。
之后,將所構(gòu)造的Replace同步命令全部發(fā)送給服務(wù)器,具體發(fā)送方式與發(fā)送ADD同步命令的方式相同,在此不再贅述。
下面說(shuō)明服務(wù)器端接收到上述Replace命令后,執(zhí)行同步操作的過(guò)程。該過(guò)程所涉及的表格與圖4b所示表格類(lèi)似,因此圖未示。
當(dāng)服務(wù)器端接收到更新bless目錄項(xiàng)的同步命令后,通過(guò)接收到的同步命令中的Meta字段確定待同步數(shù)據(jù)的類(lèi)型為目錄項(xiàng),根據(jù)LUID字段確定該待同步數(shù)據(jù)在客戶端的編號(hào)為1006,根據(jù)Data字段確定其名稱為bless,根據(jù)SourceParent字段確定其父目錄為根目錄。之后,在已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中獲取該更新的待同步數(shù)據(jù)在服務(wù)器本地的編號(hào);如100006。然后,在本地已設(shè)置的目錄表中更新相應(yīng)條目,即更新100006、bless、根目錄以及該bless數(shù)據(jù)當(dāng)前狀態(tài)的對(duì)應(yīng)關(guān)系條目中的bless的屬性信息。
當(dāng)服務(wù)器端接收到更新U1數(shù)據(jù)項(xiàng)目的同步命令后,通過(guò)接收到的同步命令中的Meta字段確定待同步數(shù)據(jù)的類(lèi)型為數(shù)據(jù)項(xiàng)目,根據(jù)LUID字段確定該待同步數(shù)據(jù)在客戶端的編號(hào)為2001,根據(jù)Data字段確定其具體的數(shù)據(jù)內(nèi)容為U1,根據(jù)SourceParent字段確定其父目錄為1006。之后,在已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中獲取該更新的待同步數(shù)據(jù)在服務(wù)器本地的編號(hào),如200001,在本地已設(shè)置的數(shù)據(jù)條目表中更新待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目,即更新200001與U1的對(duì)應(yīng)關(guān)系條目中的U1的信息。
服務(wù)器端更新U2的方法與更新U1的方法相同,在此不再贅述。
此處需要說(shuō)明一點(diǎn),本例中,U2既屬于Spring Festival目錄又Mid-autumn Festival目錄,但更新U2時(shí)只需發(fā)送一次Replace命令,服務(wù)器端也只需更新一次U2,就可以使兩個(gè)目錄下的U2都得到更新。這是因?yàn)?,在服?wù)器端實(shí)際只保存了一份數(shù)據(jù),該數(shù)據(jù)的隸屬關(guān)系是通過(guò)Index Table表來(lái)體現(xiàn)的。可見(jiàn),采用本發(fā)明的方法可最大限度地減少冗余數(shù)據(jù)的存在,進(jìn)而最大限度地節(jié)省有限的資源。
實(shí)施例三用戶將“music”目錄下的數(shù)據(jù)項(xiàng)目“M1”移動(dòng)到“favoriate”目錄下;將“mp3”整個(gè)目錄移動(dòng)到“favorite”下。
參見(jiàn)圖5a和圖5b,圖5a所示為應(yīng)用本發(fā)明實(shí)施例三的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖,其中,方框表示Folder,圓圈表示data Item;實(shí)線表示的狀態(tài)為Existing,雙點(diǎn)畫(huà)線表示的狀態(tài)為Move。圖5b所示為應(yīng)用本發(fā)明實(shí)施例三的客戶端的數(shù)據(jù)存儲(chǔ)示意圖。在客戶端保存有數(shù)據(jù)條目表Data Item Table、目錄表Folder Table和“數(shù)據(jù)條目-目錄”對(duì)應(yīng)關(guān)系索引表Index Table。各個(gè)列表中數(shù)據(jù)的狀態(tài)在圖5b都有相應(yīng)的反映。
當(dāng)用戶要求同步根目錄時(shí),客戶端順序生成以下同步命令首先,客戶端根據(jù)接收到的來(lái)自用戶的同步根目錄的命令后,索引該根目錄下的所有子目錄的狀態(tài),本例中,該根目錄下所有子目錄的狀態(tài)未發(fā)生變化,因而不做處理。然后,客戶端索引該根目錄下的數(shù)據(jù)項(xiàng)目的狀態(tài)是否發(fā)生變化,本例中,該根目錄下的數(shù)據(jù)項(xiàng)目的狀態(tài)也未發(fā)生變化,不做處理。
之后,客戶端依次索引每個(gè)子目錄中的子目錄狀態(tài)是否發(fā)生變化,本例中,客戶端確定music目錄下的“mp3”子目錄的狀態(tài)為M,之后,構(gòu)建移動(dòng)(Move)同步命令,并且,在該構(gòu)建的命令中的Meta字段指明根據(jù)FolderTable確定的數(shù)據(jù)類(lèi)型為目錄項(xiàng)Folder,LUID字段指明待同步數(shù)據(jù)的編號(hào)1006,SourceParent字段指明其移動(dòng)后所屬父目錄為1004。
之后,客戶端確定music目錄下數(shù)據(jù)項(xiàng)目的狀態(tài),由于在Index Table中,1006所對(duì)應(yīng)的數(shù)據(jù)項(xiàng)目為2001,且其狀態(tài)為M,因此構(gòu)建Move同步命令,并且,在該構(gòu)建的命令中的Meta字段指明數(shù)據(jù)類(lèi)型為數(shù)據(jù)項(xiàng)目Item,LUID字段指明待同步數(shù)據(jù)的編號(hào)2001,SourceParent字段指明其移動(dòng)后所屬的父目錄為1004。
以此類(lèi)推,本例中沒(méi)有其他發(fā)生移動(dòng)的數(shù)據(jù),因此不再處理。
之后,將所構(gòu)造的MOVE同步命令全部發(fā)送給服務(wù)器,具體發(fā)送方式與發(fā)送ADD同步命令的方式相同,在此不再贅述。
下面說(shuō)明服務(wù)器端接收到上述Move命令后,執(zhí)行同步操作的過(guò)程。該過(guò)程所涉及的表格與圖5b所示表格類(lèi)似,因此圖未示。
當(dāng)服務(wù)器端接收到移動(dòng)mp3目錄項(xiàng)的同步命令后,通過(guò)接收到的同步命令中的Meta字段確定待同步數(shù)據(jù)的類(lèi)型為目錄項(xiàng),LUID字段確定該待同步數(shù)據(jù)在客戶端的編號(hào)為1006,SourceParent字段確定其移動(dòng)后所屬父目錄為1004后,在已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中獲取該待移動(dòng)數(shù)據(jù)在服務(wù)器本地的編號(hào),如100006,在本地已設(shè)置的Folder Table中將該待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目所屬父目錄更改為接收到的同步命令中的父目錄,即將該表中的100006所對(duì)應(yīng)的父目錄由1005改為1004。
當(dāng)服務(wù)器端接收到移動(dòng)M1數(shù)據(jù)項(xiàng)目的同步命令后,通過(guò)接收到的同步命令中的Meta字段確定待同步數(shù)據(jù)的類(lèi)型為Item,LUID字段確定該待同步數(shù)據(jù)在客戶端的編號(hào)為2001,SourceParent字段確定其移動(dòng)后所屬父目錄為1004后,在已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表獲取該更新的待同步數(shù)據(jù)在服務(wù)器本地的編號(hào),如200001,在本地已設(shè)置的Index Table中將該待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目所屬父目錄更改為接收到的同步命令中的父目錄,即將該表中的200001所對(duì)應(yīng)的父目錄由1005改為1004。
可見(jiàn),采用本發(fā)明的方法進(jìn)行移動(dòng)的同步操作時(shí),僅需修改相應(yīng)數(shù)據(jù)表中的對(duì)應(yīng)關(guān)系,不需要對(duì)實(shí)際數(shù)據(jù)進(jìn)行移動(dòng),從而最大限度節(jié)省了有限的資源。
另外需要說(shuō)明一點(diǎn)在移動(dòng)某個(gè)目錄及其下的子目錄和數(shù)據(jù)項(xiàng)目時(shí),比如移動(dòng)mp3目錄項(xiàng)時(shí),只需針對(duì)mp3目錄項(xiàng)只發(fā)送一條MOVE命令,而不需再針對(duì)mp3目錄下的子目錄和數(shù)據(jù)項(xiàng)目發(fā)送MOVE命令,因?yàn)槠湎碌淖幽夸浐蛿?shù)據(jù)項(xiàng)目所屬的父目錄是未發(fā)生任何變化的。
實(shí)施例四用戶刪除了“bless”目錄下的“D1”數(shù)據(jù)項(xiàng)目,對(duì)“SpringFestival”目錄下的數(shù)據(jù)“U2”選擇了永久刪除,“D3”選擇了非永久刪除。本例中,僅是對(duì)刪除數(shù)據(jù)項(xiàng)目的描述。
參見(jiàn)圖6a和圖6b,圖6a所示為應(yīng)用本發(fā)明實(shí)施例四的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖,其中,方框表示Folder,圓圈表示data Item;實(shí)線表示的狀態(tài)為Existing,點(diǎn)線表示的狀態(tài)為Delete。圖6b所示為應(yīng)用本發(fā)明實(shí)施例四的客戶端的數(shù)據(jù)存儲(chǔ)示意圖。在客戶端保存有數(shù)據(jù)條目表Data Item Table、目錄表Folder Table和“數(shù)據(jù)條目-目錄”對(duì)應(yīng)關(guān)系索引表Index Table。各個(gè)列表中數(shù)據(jù)的狀態(tài)在圖6b都有相應(yīng)的反映。
當(dāng)用戶要求同步“bless”目錄時(shí),客戶端順序生成以下同步命令客戶端確定bless目錄下數(shù)據(jù)項(xiàng)目狀態(tài),由于在Index Table中,數(shù)據(jù)項(xiàng)目為2001的狀態(tài)為永久刪除P-D,因此,構(gòu)建刪除Delete同步命令,該所構(gòu)建的Delete同步命令中的Meta字段指明數(shù)據(jù)類(lèi)型為數(shù)據(jù)項(xiàng)目Item,LUID字段指明待同步數(shù)據(jù)的編號(hào)為2001,并且在該命令中還需包括指明永久刪除的標(biāo)識(shí)。
之后,當(dāng)客戶端確定bless目錄下沒(méi)有刪除的數(shù)據(jù)項(xiàng)目后,索引該bless目錄下子目錄的狀態(tài),本例中,該bless目錄下子目錄的狀態(tài)未發(fā)生變化,不做處理。
當(dāng)客戶端確定bless目錄下沒(méi)有刪除的子目錄后,再確定子目錄SpringFestival下的數(shù)據(jù)項(xiàng)目的狀態(tài),其具體方法與確定D1的方法相同。即其最終的結(jié)果是構(gòu)建兩條Delete同步命令,其中一條Delete同步命令中的Meta字段指明數(shù)據(jù)類(lèi)型為數(shù)據(jù)項(xiàng)目Item,LUID字段指明待同步數(shù)據(jù)的編號(hào)為2002,并且在該命令中還需包括指明永久刪除的標(biāo)識(shí)。另一條Delete同步命令中的Meta字段指明數(shù)據(jù)類(lèi)型為數(shù)據(jù)項(xiàng)目Item,LUID字段指明待同步數(shù)據(jù)的編號(hào)為2003,并且在該命令中還需包括指明非永久刪除的標(biāo)識(shí)。
所構(gòu)建的Delete命令中,不需要包含要?jiǎng)h除的數(shù)據(jù),只需指明要?jiǎng)h除數(shù)據(jù)的類(lèi)型、編號(hào)、以及是永久刪除還是非永久刪除即可。以上是Delete命令的一種實(shí)現(xiàn)方式,即該命令中包含類(lèi)型、編號(hào)、以及是永久刪除還是非永久刪除三種信息;當(dāng)然,還可以有其他的實(shí)現(xiàn)方式,比如,將Delete分為兩種命令,一種永久刪除P-Delete命令,另一種是非永久刪除NP-Delete命令,這樣,每種刪除命令中只需包含待刪除數(shù)據(jù)的類(lèi)型、編號(hào)即可。
之后,將所構(gòu)造的用于指示刪除的同步命令全部發(fā)送給服務(wù)器。
下面說(shuō)明服務(wù)器端接收到上述Delete命令后,執(zhí)行同步操作的過(guò)程。
當(dāng)服務(wù)器端接收到刪除D1數(shù)據(jù)項(xiàng)目的同步命令后,通過(guò)接收到的同步命令中的Meta字段確定待同步數(shù)據(jù)的類(lèi)型為數(shù)據(jù)項(xiàng)目Item,根據(jù)LUID字段確定該待同步數(shù)據(jù)在客戶端的編號(hào)為2001,并確定此次刪除為永久刪除,之后,在已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中獲取該待刪除數(shù)據(jù)在服務(wù)器本地的編號(hào),如200001,在本地的數(shù)據(jù)條目表和數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表,分別刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目,即刪除編號(hào)為200001的整個(gè)條目。同時(shí),在本地?cái)?shù)據(jù)庫(kù)中刪除D1數(shù)據(jù)。
當(dāng)服務(wù)器端接收到刪除D2數(shù)據(jù)項(xiàng)目的同步命令后,即刪除相應(yīng)數(shù)據(jù)表中的整個(gè)條目,其刪除D2的方法與刪除D1的方法相同,在此不再贅述。
當(dāng)服務(wù)器端接收到刪除D3數(shù)據(jù)項(xiàng)目的同步命令后,通過(guò)接收到的同步命令中的Meta字段確定待同步數(shù)據(jù)的類(lèi)型為數(shù)據(jù)項(xiàng)目Item,根據(jù)LUID字段確定該待同步數(shù)據(jù)在客戶端的編號(hào)為2003,并確定此次刪除為非永久刪除,之后,在已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中獲取該待刪除數(shù)據(jù)在服務(wù)器本地的編號(hào),如200003,只在本地的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目,即刪除該表中編號(hào)為200003的整個(gè)條目。在本地?cái)?shù)據(jù)庫(kù)內(nèi)不刪除D3數(shù)據(jù)。
可見(jiàn),采用本發(fā)明的方法進(jìn)行刪除的同步操作時(shí),僅需在客戶端與服務(wù)器端之間傳遞標(biāo)識(shí),不需要傳輸具體的數(shù)據(jù)內(nèi)容,最大限度節(jié)省了有限的資源。
實(shí)施例五用戶刪除了整個(gè)“bless”目錄。這相當(dāng)于同時(shí)刪除了其下的所有子目錄以及其下的所有數(shù)據(jù)項(xiàng)目。本例中,D1和D2僅存在于bless目錄下,D3存在于bless和joke目錄下,且本例僅是對(duì)刪除目錄項(xiàng)的描述。
參見(jiàn)圖7a和圖7b,圖7a所示為應(yīng)用本發(fā)明實(shí)施例五的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖,其中,方框表示Folder,圓圈表示data Item;實(shí)線表示的狀態(tài)為Existing,點(diǎn)線表示的狀態(tài)為Delete。圖7b所示為應(yīng)用本發(fā)明實(shí)施例五的客戶端的數(shù)據(jù)存儲(chǔ)示意圖。在客戶端保存有數(shù)據(jù)條目表Data Item Table、目錄表Folder Table和“數(shù)據(jù)條目-目錄”對(duì)應(yīng)關(guān)系索引表Index Table。各個(gè)列表中數(shù)據(jù)的狀態(tài)在圖7b都有相應(yīng)的反映。
當(dāng)用戶要求同步根目錄時(shí),客戶端順序生成以下同步命令首先,客戶端根據(jù)接收到的來(lái)自用戶的同步根目錄的命令后,索引該根目錄下的所有子目錄的狀態(tài),本例中,從Folder Table表中確定bless的狀態(tài)為D,則客戶端還要進(jìn)一步包括判斷該待刪除目錄下的數(shù)據(jù)項(xiàng)目以及該目錄的子目錄下的數(shù)據(jù)項(xiàng)目是否僅存在于該待刪除目錄下,如果是,則構(gòu)建一條刪除命令,且該刪除命令中包含指示永久刪除的信息;否則,針對(duì)每個(gè)數(shù)據(jù)項(xiàng)目和目錄項(xiàng)分別構(gòu)建一條刪除命令,且僅存在于該待刪除目錄下的數(shù)據(jù)項(xiàng)目或目錄項(xiàng)所對(duì)應(yīng)的刪除命令中包含指示永久刪除的信息,并非僅存在于該待刪除目錄下的數(shù)據(jù)項(xiàng)目或目錄項(xiàng)所對(duì)應(yīng)的刪除命令中包含指示非永久刪除的信息。也就是說(shuō),如果某個(gè)數(shù)據(jù)項(xiàng)目或目錄項(xiàng),還存在于其他目錄下(這里的其他目錄不包括bless子目錄),則將這樣的數(shù)據(jù)所對(duì)應(yīng)的刪除命令中包含非永久刪除信息,如果不是這樣的數(shù)據(jù),則其所對(duì)應(yīng)的刪除命令中包含永久刪除信息。之后,將所構(gòu)建的所有刪除Delete同步命令均發(fā)送給服務(wù)器。這里,針對(duì)每個(gè)數(shù)據(jù)項(xiàng)目和目錄項(xiàng)分別構(gòu)建一條刪除命令,實(shí)際就是一種遞歸的同步。
下面說(shuō)明服務(wù)器端接收到上述Delete命令后,執(zhí)行同步操作的過(guò)程。
如果服務(wù)器接收到的是針對(duì)數(shù)據(jù)項(xiàng)目的刪除命令,則與實(shí)施例四中所述的處理方式相同,不再贅述。
如果服務(wù)器接收到的是針對(duì)目錄項(xiàng)的刪除命令,則在已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中獲取該待刪除數(shù)據(jù)在服務(wù)器本地的編號(hào),而無(wú)論是永久刪除還是非永久刪除都在本地已設(shè)置的目錄表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目。
對(duì)于目錄刪除操作還有一點(diǎn)需要說(shuō)明作為請(qǐng)求發(fā)起方的客戶端,在刪除某個(gè)目錄項(xiàng)時(shí),如刪除bless目錄項(xiàng),其可以針對(duì)該目錄項(xiàng)只構(gòu)建一條刪除命令,而其所執(zhí)行的其他操作,如“判斷該待刪除目錄下的數(shù)據(jù)項(xiàng)目以及該目錄的子目錄下的數(shù)據(jù)項(xiàng)目是否僅存在于該待刪除目錄下”等,均由服務(wù)器端來(lái)執(zhí)行,這樣可以簡(jiǎn)化客戶端的操作。當(dāng)然,反之也適用。
在實(shí)際應(yīng)用中,實(shí)施例四、五通常會(huì)結(jié)合起來(lái)同時(shí)使用。
另外,對(duì)于刪除操作,在服務(wù)器端完成同步操作后,客戶端也會(huì)將自身相應(yīng)數(shù)據(jù)表中的條目刪除。
實(shí)施例六用戶將“music”目錄下的數(shù)據(jù)項(xiàng)目“M1”復(fù)制到“favoriate”目錄下;將“mp3”目錄復(fù)制到“favorite”目錄下。
參見(jiàn)圖8a和圖8b,圖8a所示為應(yīng)用本發(fā)明實(shí)施例六的用戶定義的數(shù)據(jù)結(jié)構(gòu)示意圖,其中,方框表示Folder,圓圈表示data Item;實(shí)線表示的狀態(tài)為Existing,粗實(shí)線表示的狀態(tài)為Copy。圖8b所示為應(yīng)用本發(fā)明實(shí)施例六的客戶端的數(shù)據(jù)存儲(chǔ)示意圖。在客戶端保存有數(shù)據(jù)條目表Data Item Table、目錄表Folder Table和“數(shù)據(jù)條目-目錄”對(duì)應(yīng)關(guān)系索引表Index Table。各個(gè)列表所增加數(shù)據(jù)的狀態(tài)在圖3b都有相應(yīng)的反映。
當(dāng)用戶要求同步根目錄時(shí),客戶端與服務(wù)器端的操作與實(shí)施例一的操作基本一致。所不同之處在于,在實(shí)施例一中,客戶端要針對(duì)每一個(gè)數(shù)據(jù)項(xiàng)目和目錄項(xiàng)都發(fā)送一次ADD命令,而在本例中,如果客戶端對(duì)一目錄項(xiàng)發(fā)出Copy命令,則不需對(duì)該目錄項(xiàng)下的子目錄項(xiàng)和數(shù)據(jù)項(xiàng)目再發(fā)命令,從而進(jìn)一步減少數(shù)據(jù)量的傳輸,節(jié)約網(wǎng)絡(luò)資源。而本例中服務(wù)器端的處理過(guò)程與實(shí)施例一中的處理過(guò)程是相同的,其也是針對(duì)每一個(gè)目錄項(xiàng)和數(shù)據(jù)項(xiàng)目逐一地進(jìn)行處理。
再有,在執(zhí)行Copy同步時(shí),用戶可根據(jù)需要決定,是否在再指令復(fù)制一份實(shí)際數(shù)據(jù),如果是,則執(zhí)行同步操作的一端實(shí)現(xiàn)數(shù)據(jù)同步的操作進(jìn)一步包括在本地?cái)?shù)據(jù)庫(kù)內(nèi)在復(fù)制一份數(shù)據(jù),并在本地已設(shè)置的數(shù)據(jù)目錄表中增加相應(yīng)條目。
如果客戶端和服務(wù)器端的修改操作存在沖突,如在被移動(dòng)的目錄中增加、更新或者刪除了一些條目,通過(guò)擴(kuò)展現(xiàn)有的沖突機(jī)制,確??蛻舳撕头?wù)器端的數(shù)據(jù)完全同步。具體實(shí)現(xiàn)為將現(xiàn)有的以客戶端為主(Client-Win)和以服務(wù)器端為主(Server-Win)的仲裁結(jié)果加以擴(kuò)展,增加一種以服務(wù)器端和客戶端合并處理(Win-Win)的仲裁結(jié)果,通過(guò)雙贏的方式來(lái)確??蛻舳撕头?wù)器端的數(shù)據(jù)完全一致。
例如,用戶在客戶端上移動(dòng)A目錄使其成為B目錄的子目錄,而服務(wù)器端是在A目錄中增加了一個(gè)條目,此時(shí),在服務(wù)器端將移動(dòng)A目錄使其成為B目錄的子目錄,并且,在客戶端在A目錄中也增加一個(gè)條目,從而確??蛻舳撕头?wù)器端的數(shù)據(jù)完全一致。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種在SyncML層實(shí)現(xiàn)數(shù)據(jù)同步的方法,其特征在于,當(dāng)SyncML客戶端或服務(wù)器端中的一端接收到來(lái)自用戶的同步請(qǐng)求時(shí),客戶端和服務(wù)器端協(xié)商待同步數(shù)據(jù)所屬目錄;該方法包括以下步驟a、SyncML客戶端或服務(wù)器端中的一端首先確定接收到的請(qǐng)求同步命令中待同步數(shù)據(jù)的類(lèi)型,如果是目錄項(xiàng),則執(zhí)行步驟b,如果是數(shù)據(jù)項(xiàng)目,則執(zhí)行步驟c;b、從已設(shè)置的目錄表中獲取該待同步數(shù)據(jù)的當(dāng)前狀態(tài),如果當(dāng)前狀態(tài)指示為未變化,則不做處理,如果當(dāng)前狀態(tài)指示為變化,則根據(jù)該變化狀態(tài)構(gòu)建與之相對(duì)應(yīng)的數(shù)據(jù)同步命令,將該數(shù)據(jù)同步命令發(fā)送給客戶端或服務(wù)器端中的另一端;c、從已設(shè)置的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中獲取該待同步數(shù)據(jù)的變化狀態(tài),并根據(jù)該變化狀態(tài)構(gòu)建與之相對(duì)應(yīng)的數(shù)據(jù)同步命令,將該數(shù)據(jù)同步命令發(fā)送給客戶端或服務(wù)器端中的另一端;所述所構(gòu)建的命令中至少包括待同步數(shù)據(jù)的數(shù)據(jù)類(lèi)型和待同步數(shù)據(jù)編號(hào);SyncML客戶端或服務(wù)器中的另一端接收到來(lái)自對(duì)端的同步命令后,執(zhí)行以下步驟d、根據(jù)接收到的數(shù)據(jù)同步命令,確定操作類(lèi)型,更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述發(fā)起同步請(qǐng)求的為客戶端,所述執(zhí)行同步操作的為服務(wù)器端;所述該待同步數(shù)據(jù)的變化狀態(tài)為新增N,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為增加ADD同步命令;所述該命令中的待同步數(shù)據(jù)編號(hào)是該數(shù)據(jù)在客戶端的編號(hào),且該命令中進(jìn)一步包括具體的待同步數(shù)據(jù)以及該數(shù)據(jù)所屬父目錄;所述服務(wù)器端確定操作類(lèi)型為增加;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令,在本地?cái)?shù)據(jù)庫(kù)保存接收到的待同步數(shù)據(jù),為該待同步數(shù)據(jù)分配服務(wù)器本地編號(hào),在已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中保存該同步數(shù)據(jù)在客戶端的編號(hào)與該同步數(shù)據(jù)在服務(wù)器端的編號(hào)的對(duì)應(yīng)關(guān)系;并且,根據(jù)同步命令中的待同步數(shù)據(jù)的數(shù)據(jù)類(lèi)型,確定該同步數(shù)據(jù)的類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則在本地已設(shè)置的目錄表中增加相應(yīng)條目,如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,則在本地已設(shè)置的數(shù)據(jù)條目表和數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系索引表中增加相應(yīng)條目。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述發(fā)起同步請(qǐng)求的為服務(wù)器端,所述執(zhí)行同步操作的為客戶端;所述該待同步數(shù)據(jù)的變化狀態(tài)為新增N,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為增加ADD同步命令;所述該命令中的待同步數(shù)據(jù)編號(hào)是該數(shù)據(jù)在服務(wù)器端的編號(hào),且該命令中進(jìn)一步包括具體的待同步數(shù)據(jù)以及該數(shù)據(jù)所屬父目錄;所述客戶端確定操作類(lèi)型為增加;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令,在本地?cái)?shù)據(jù)庫(kù)保存接收到的待同步數(shù)據(jù),為該待同步數(shù)據(jù)分配客戶端本地編號(hào),并且,根據(jù)同步命令中的待同步數(shù)據(jù)的數(shù)據(jù)類(lèi)型,確定該同步數(shù)據(jù)的類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則在本地已設(shè)置的目錄表中增加相應(yīng)條目,如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,則在本地已設(shè)置的數(shù)據(jù)條目表和數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系索引表中增加相應(yīng)條目;之后,給服務(wù)器端返回該數(shù)據(jù)客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系,由服務(wù)器端將接收到的對(duì)應(yīng)關(guān)系保存在本地已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表內(nèi)。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,步驟b執(zhí)行完畢之后,進(jìn)一步包括e判斷該新增加的目錄項(xiàng)下是否有新增加的數(shù)據(jù)項(xiàng)目,如果有,則重復(fù)執(zhí)行步驟c,直到將所有數(shù)據(jù)項(xiàng)目全部同步為止,之后執(zhí)行步驟f;如果沒(méi)有,則直接執(zhí)行步驟f;f、判斷該新增加的目錄項(xiàng)下是否有新增加的子目錄項(xiàng),如果有,則重復(fù)執(zhí)行步驟b,直到將所有目錄項(xiàng)全部同步為止,之后執(zhí)行步驟e,如果沒(méi)有,則結(jié)束。
5.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,步驟b執(zhí)行完畢之后,進(jìn)一步包括e判斷該新增加的目錄項(xiàng)下是否有新增加的數(shù)據(jù)項(xiàng)目,如果有,則重復(fù)執(zhí)行步驟c,直到將所有數(shù)據(jù)項(xiàng)目全部同步為止。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述該待同步數(shù)據(jù)的變化狀態(tài)為更新U,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為替換Replace同步命令,且該命令中進(jìn)一步包括具體的待同步數(shù)據(jù),以及該數(shù)據(jù)所屬父目錄;所述另一端確定操作類(lèi)型為更新;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令,確定該同步數(shù)據(jù)的類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則在本地已設(shè)置的目錄表中更新待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目,如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,則在本地已設(shè)置的數(shù)據(jù)條目表中更新待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟b執(zhí)行完畢之后,進(jìn)一步包括g判斷該已更新的目錄項(xiàng)下是否有更新的數(shù)據(jù)項(xiàng)目,如果有,則重復(fù)執(zhí)行步驟c,直到將所有數(shù)據(jù)項(xiàng)目全部同步為止,之后執(zhí)行步驟h;如果沒(méi)有,則直接執(zhí)行步驟h;h、判斷該已更新的目錄項(xiàng)下是否存在更新的子目錄項(xiàng),如果有,則重復(fù)執(zhí)行步驟b,直到將所有目錄項(xiàng)全部同步為止,之后執(zhí)行步驟g,如果沒(méi)有,則結(jié)束。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟b執(zhí)行完畢之后,進(jìn)一步包括g判斷該已更新的目錄項(xiàng)下是否有更新的數(shù)據(jù)項(xiàng)目,如果有,則重復(fù)執(zhí)行步驟c,直到將所有數(shù)據(jù)項(xiàng)目全部同步為止。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述該待同步數(shù)據(jù)的變化狀態(tài)為移動(dòng)M,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為移動(dòng)Move同步命令;且該命令中進(jìn)一步包括變更后的該數(shù)據(jù)所屬父目錄;所述另一端確定操作類(lèi)型為移動(dòng);所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令,確定該同步數(shù)據(jù)的類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則在本地已設(shè)置的目錄表中將該待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目所屬父目錄更改為接收到的同步命令中的父目錄,如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,則在本地已設(shè)置的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中將待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目所屬父目錄更改為接收到的同步命令中的父目錄。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟b所述當(dāng)前狀態(tài)指示為刪除D,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為刪除Delete同步命令;則所述發(fā)起同步請(qǐng)求的一端進(jìn)一步包括判斷該待刪除目錄下的數(shù)據(jù)項(xiàng)目以及該目錄的子目錄下的數(shù)據(jù)項(xiàng)目是否僅存在于該待刪除目錄下,如果是,則構(gòu)建一條刪除命令,且該刪除命令中包含指示永久刪除的信息;否則,針對(duì)每個(gè)數(shù)據(jù)項(xiàng)目和目錄項(xiàng)分別構(gòu)建一條刪除命令,且僅存在于該待刪除目錄下的數(shù)據(jù)項(xiàng)目或目錄項(xiàng)所對(duì)應(yīng)的刪除命令中包含指示永久刪除的信息,并非僅存在于該待刪除目錄下的數(shù)據(jù)項(xiàng)目或目錄項(xiàng)所對(duì)應(yīng)的刪除命令中包含指示非永久刪除的信息;所述另一端確定操作類(lèi)型為刪除;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令確定刪除類(lèi)型,以及待同步數(shù)據(jù)的數(shù)據(jù)類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則無(wú)論是刪除類(lèi)型為永久刪除還是非永久刪除,都在本地已設(shè)置的目錄表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目;如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,且刪除類(lèi)型為永久刪除,則在本地?cái)?shù)據(jù)庫(kù)內(nèi)刪除該數(shù)據(jù),并在本地已設(shè)置的數(shù)據(jù)條目表和數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中,分別刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目;如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,且刪除類(lèi)型為非永久刪除,則在本地的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目。
11.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟b所述當(dāng)前狀態(tài)指示為刪除D,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為刪除Delete同步命令;所述另一端確定操作類(lèi)型為刪除;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令確定刪除類(lèi)型,以及待同步數(shù)據(jù)的數(shù)據(jù)類(lèi)型,如果數(shù)據(jù)類(lèi)型是目錄項(xiàng),則再判斷該待刪除目錄下的數(shù)據(jù)項(xiàng)目以及該目錄的子目錄及子目錄下的數(shù)據(jù)項(xiàng)目是否僅存在于該待刪除目錄下,如果是,則確定該待刪除目錄以及該目錄下的數(shù)據(jù)項(xiàng)目、和子目錄及子目錄下的數(shù)據(jù)項(xiàng)目均為永久刪除,否則,確定針對(duì)該待刪除目錄以及僅存在于該待刪除目錄下的數(shù)據(jù)項(xiàng)目或目錄項(xiàng)為永久刪除,針對(duì)并非僅存在于該待刪除目錄下的數(shù)據(jù)項(xiàng)目或目錄項(xiàng)為非永久刪除;如果刪除的是目錄項(xiàng),則無(wú)論是刪除類(lèi)型為永久刪除還是非永久刪除,都在本地已設(shè)置的目錄表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目;如果刪除的是數(shù)據(jù)項(xiàng)目,且刪除類(lèi)型為永久刪除,則在本地?cái)?shù)據(jù)庫(kù)內(nèi)刪除該數(shù)據(jù),并在本地已設(shè)置的數(shù)據(jù)條目表和數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中,分別刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目;如果數(shù)據(jù)類(lèi)型是數(shù)據(jù)項(xiàng)目,且刪除類(lèi)型為非永久刪除,則在本地的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目。
12.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟c所述變化狀態(tài)為刪除D,所述與該變化狀態(tài)相對(duì)應(yīng)的數(shù)據(jù)同步命令為刪除Delete同步命令;則所述發(fā)起同步請(qǐng)求的一端進(jìn)一步包括判斷接收到的來(lái)自用戶的刪除命令中是否指示永久刪除該數(shù)據(jù)項(xiàng)目,如果是,則所述刪除命令中進(jìn)一步包括永久刪除的標(biāo)識(shí),否則,判斷該待刪除數(shù)據(jù)項(xiàng)目是否位于多個(gè)目錄下,如果是,在所述刪除命令中進(jìn)一步包括非永久刪除的標(biāo)識(shí),否則所述刪除命令中進(jìn)一步包括永久刪除的標(biāo)識(shí);所述另一端確定操作類(lèi)型為刪除;所述更改相應(yīng)表格的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)同步的過(guò)程包括以下步驟根據(jù)接收到的數(shù)據(jù)同步命令確定數(shù)據(jù)類(lèi)型為數(shù)據(jù)項(xiàng)目后,再確定刪除類(lèi)型,如果刪除類(lèi)型為永久刪除,則在本地?cái)?shù)據(jù)庫(kù)內(nèi)刪除該數(shù)據(jù),并在本地已設(shè)置的數(shù)據(jù)條目表和數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中,分別刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目;如果刪除類(lèi)型為非永久刪除,則在本地的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系表中刪除待同步數(shù)據(jù)在本地的編號(hào)所對(duì)應(yīng)的條目。
13.根據(jù)權(quán)利要求10、11或12所述的方法,其特征在于,在作為執(zhí)行同步操作的客戶端或服務(wù)器另一端執(zhí)行完畢刪除同步操作后,進(jìn)一步包括發(fā)起同步請(qǐng)求的一端在本地已設(shè)置的相應(yīng)數(shù)據(jù)表中刪除相應(yīng)數(shù)據(jù)項(xiàng)目。
14.根據(jù)權(quán)利要求6、9、10、11或12所述的方法,其特征在于,如果所述發(fā)起同步請(qǐng)求的為客戶端,執(zhí)行同步操作的為服務(wù)器端,則所述同步命令中的待同步數(shù)據(jù)編號(hào)是該數(shù)據(jù)在客戶端的編號(hào);所述服務(wù)器端接收到數(shù)據(jù)同步命令后,確定數(shù)據(jù)類(lèi)型前進(jìn)一步包括在已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中獲取該更新的待同步數(shù)據(jù)在服務(wù)器本地的編號(hào),之后再繼續(xù)執(zhí)行后續(xù)操作。如果所述發(fā)起同步請(qǐng)求的為服務(wù)器端,執(zhí)行同步操作的為客戶端,則所述同步命令中的待同步數(shù)據(jù)編號(hào)是服務(wù)器端根據(jù)自身已設(shè)置的客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表獲取的該數(shù)據(jù)在客戶端的編號(hào)。
15.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在SyncML客戶端及服務(wù)器內(nèi)分別設(shè)置的目錄表中,至少包括目錄項(xiàng)編號(hào)、目錄名、該目錄項(xiàng)名所屬的父目錄、以及該目錄項(xiàng)狀態(tài)的對(duì)應(yīng)關(guān)系;所述在SyncML客戶端及服務(wù)器內(nèi)分別設(shè)置的數(shù)據(jù)條目-目錄對(duì)應(yīng)關(guān)系索引表中,至少包括數(shù)據(jù)項(xiàng)目編號(hào)、父目錄、以及數(shù)據(jù)項(xiàng)目狀態(tài)的對(duì)應(yīng)關(guān)系。
16.根據(jù)權(quán)利要求2、3任一所述的方法,其特征在于,所述在SyncML客戶端及服務(wù)器內(nèi)分別設(shè)置的數(shù)據(jù)條目表中至少包括數(shù)據(jù)項(xiàng)目編號(hào)以及具體的數(shù)據(jù)內(nèi)容的對(duì)應(yīng)關(guān)系;所述在服務(wù)器端已設(shè)置的SyncML客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系列表中至少包括數(shù)據(jù)在客戶端內(nèi)的編號(hào)與服務(wù)器內(nèi)的編號(hào)的對(duì)應(yīng)關(guān)系。
17.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述協(xié)商待同步數(shù)據(jù)所屬目錄的操作在初始化階段,包括以下步驟對(duì)URI的格式作預(yù)定義,在目標(biāo)數(shù)據(jù)庫(kù)元素中通過(guò)URI的含義指明待同步目錄。
18.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述協(xié)商待同步數(shù)據(jù)所屬目錄的操作在初始化階段,包括以下步驟在過(guò)濾條件元素中通過(guò)過(guò)濾條件指明待同步目錄。
19.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括增設(shè)以服務(wù)器端和客戶端合并處理(Win-Win)的仲裁結(jié)果;當(dāng)服務(wù)器端和客戶端的修改操作發(fā)生沖突時(shí),客戶端根據(jù)服務(wù)器端的修改執(zhí)行同步操作,并且,服務(wù)器端根據(jù)客戶端的修改執(zhí)行同步操作;所述修改包括新增、更新、移動(dòng)、刪除、復(fù)制操作。
全文摘要
本發(fā)明公開(kāi)了一種在SyncML層實(shí)現(xiàn)數(shù)據(jù)同步的方法,其不但詳細(xì)給出了實(shí)現(xiàn)數(shù)據(jù)分類(lèi)同步的具體實(shí)現(xiàn)方式,使得針對(duì)某一目錄進(jìn)行同步能夠得以實(shí)現(xiàn),而且,還在具體實(shí)現(xiàn)的過(guò)程中,盡量傳遞編號(hào)、數(shù)據(jù)類(lèi)型等信息,避免了過(guò)多的具體的數(shù)據(jù)內(nèi)容進(jìn)行傳遞,且同步數(shù)據(jù)實(shí)際占用的物理空間也較小(每個(gè)數(shù)據(jù)只有一份),因而最大限度地減少了冗余數(shù)據(jù)的存在,節(jié)省了有限的設(shè)備資源和網(wǎng)絡(luò)資源。同時(shí)用戶可以按照自己的意愿創(chuàng)建物理或邏輯分類(lèi),可以指定任一目錄即分類(lèi)進(jìn)行同步,增強(qiáng)了用戶體驗(yàn)感。
文檔編號(hào)H04L29/06GK1794724SQ20051011680
公開(kāi)日2006年6月28日 申請(qǐng)日期2005年10月27日 優(yōu)先權(quán)日2005年10月27日
發(fā)明者田林一 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1