一种数据同步的方法、系统和装置的制作方法

文档序号:7683815阅读:161来源:国知局
专利名称:一种数据同步的方法、系统和装置的制作方法
技术领域
本发明实施例涉及通信:技术领域,特别涉及一种可应用于OMA ( Open Mobile Alliance,开放移动联盟)中数据同步(Data Synchronization, DS )的 方法、系统和装置。
背景技术
SyncML ( Synchronization Makeup Language, 同步才示i己^吾言)同步十办i义定 义了在SyncML客户端和SyncML服务器进行同步时的消息交互过程,同时定 义的数据同步类型包括双向同步、客户端发起单向同步、服务器端发起单向 同步及慢同步、服务器通告同步等。 一次SyncML同步过程分为三个阶段,通 常需要6个数据包来完成,具体包含的消息包的数量根据同步类型而变化。在 同步会话成功结束后,双方需要更新锚值,用于表明会话成功。下次会话开 始时,发送方发送锚值给接收方,接收方用接收的锚值与自身存储的锚值比 较,如果相同,则认为上次会话成功,否则,认为上次会话失败,启动特殊 的同步处理方式。
在SyncML同步协议规定的同步过程中,每次设备需要同步时,都会发起 一个同步会话,并且同步会话的流程是固定的,消息包1和消息包2发送初始 化信息,消息包3和消息包4交换数据,在消息包5和消息包6发送完之后结束 同步会话。
在某些特殊的场景下,比如,在CPM (Converged IP Messaging,融合IP 消息)中,终端的Presence (呈现)信息需要实时更新到服务器上,数据更新 比较频繁,就需要能实时保持会话连接,随时进行双方更新数据的交换。在 有些场景下,传输资源并不受限制,比如,手机与智能卡之间,就很容易保 持长时间的会话连接。因此在上述场景下,需要双方能保持连续性的同步会 话。在实现本发明的过程中,发明人发现现有技术至少存在以下问题现有 技术的同步流程是固定的,这种同步流程僵化,不够灵活,在多个同步过程 不能同时开始或结束时,只能重新建立会话,才能继续同步。

发明内容
本发明实施例提供一种数据同步的方法、系统和装置,以解决现有的数 据同步方式流程僵化、不够灵活的问题。
为达到上述目的,本发明实施例一方面提供一种可应用于开放移动联盟 OMA中数据同步DS的方法,包括向同步接收方发送同步会话请求,建立 同步发起方与所述同步接收方的同步会话连接;在所述同步会话连接中启动 同步进程,所述同步发起方与所述同步接收方在所述同步进程中进行数据同 步。
另 一方面,本发明实施例还提供一种可应用于开放移动联盟OMA中数据 同步DS的系统,包括同步发起方,可用于与同步接收方进行数据同步;所 述同步接收方,用于接收同步会话请求;所述同步发起方,用于向所述同步 接收方发送同步会话请求,建立与所述同步接收方的同步会话连接,在所述 同步会话中启动同步进程,并与所述同步接收方在所述同步进程中进行数据 同步。
再一方面,本发明实施例还提供一种同步发起方,包括建立模块,用 于向同步接收方发送同步^^舌请求,建立与所述同步接收方的同步会话连接; 启动模块,用于在所述建立模块建立的同步^"i舌中启动同步进程;同步模块, 用于与所述同步接收方在所述启动模块启动的同步进程中进行数据同步。
再一方面,本发明实施例还提供一种同步命令的执行方法,包括接收 同步发起方发送的同步命令,所述同步命令包含所述同步命令项的执行指示; 根据所述同步命令项的执行指示所指示的方式执行所述同步命令项。
再一方面,本发明实施例还提供一种同步命令的执行系统,包括同步 发起方,用于发送同步命令,所述同步命令包含所述同步命令项的执行指示; 同步接收方,用于接收所述同步发起方发送的同步命令,根据所述同步命令
8项的执行指示所指示的方式执行所述同步命令项。
再一方面,本发明实施例还提供一种同步接收方,包括同步命令接收 模块,用于接收同步发起方发送的同步命令,所述同步命令包含所述同步命 令项的执行指示;执行模块,用于根据所述同步命令接收模块接收的同步命 令项的执行指示所指示的方式执行所述同步命令项。
再一方面,本发明实施例还提供一种同步会话的维持方法,包括向同 步接收方发送会话维持命令或空闲消息包;接收所述同步接收方回复的确认 消息,维持所述同步会话。
与现有技术相比,本发明实施例具有以下优点本发明实施例在同步会 话中启动同步进程,同步发起方和同步接收方在同步进程中进行数据同步, 从而实现了灵活地对同步双方的数据进行同步。


图1为本发明实施例可应用于OMA中DS的方法的流程图; 图2为本发明实施例同步会话与同步进程的关系示意图; 图3为本发明实施例同步进程和同步会话的结束处理流程示意图; 图4为本发明实施例通过会话维持命令进行会话的维持流程图; 图5为本发明实施例根据同步进程进行同步锚值的更新的流程图; 图6为本发明实施例当同步双方的锚值不匹配时,同步双方协商新的同 步流程的示意图7为本发明实施例提出的数据同步方法的同步流程图; 图8为本发明实施例可应用于OMA中DS的系统的结构图; 图9为本发明实施例同步命令的4丸行系统的结构图。
具体实施例方式
本发明实施例提供一种可应用于OMA中数据同步的方法,在同步会话中 启动同步进程,同步发送方与同步接收方在同步进程中进行数据同步,从而实现了灵活地对同步双方的数据进行同步。
如图1所示,为本发明实施例可应用于OMA中数据同步的方法的流程图, 具体包括以下步骤
步骤S101,向同步接收方发送同步会话请求,建立同步发起方与同步接 收方的同步会话连接。该同步会话中包括一个或多个同步进程,所述多个同 步进程包括不同的进程标识。
步骤S102,在同步会话中启动同步进程,同步发起方与同步接收方在同 步进程中进行数据同步。
本发明实施例为同步进程添加同步进程结束标识,同步双方根据包含该 同步进程结束标识的同步消息包确定结束该同步进程;
本发明实施例还为同步会话添加同步会话结束标识,同步双方根据包含 该同步会话结束标识的同步消息包确定结束该同步会话。
如果同步进程包括第一同步进程和第二同步进程,为使同步双方明确知 道结束的是哪一个同步进程,本发明实施例将第一同步进程的进程标识与第 一同步进程的同步进程结束标识关联,将第二同步进程的进程标识与第二同 步进程的同步进程结束标识关联。
在一个同步会话中,在结束一个同步进程后,等待新的同步数据时,同 步发起方向同步接收方发送会话维持命令或空闲消息包,并接收同步接收方 回复的确认消息,维持该同步会话。优选地,同步双方在会话维持命令中携 带认证信息,同步发起方和同步接收方通过该认证信息进行认证,以增强安 全性。
在本发明实施例中,会话维持命令或空闲消息包是同步发起方按预定的 时间间隔向同步接收方发送的。例如同步发起方每隔15分钟向同步接收方 发送一个会话维持命令或空闲消息包。
在同步进程启动之前,同步发起方与同步接收方各自维护自身的第 一锚 值,在同步发起方发送给同步接收方的同步进程请求中,携带同步发起方在 第 一 同步进程结束后保存的第 一锚值,以及同步发起方新生成的第二锚值。 然后,同步接收方判断接收的第 一锚值与同步接收方存储的第 一锚值是否相二锚值相同的第二锚值,同步进程继续,否则,同步接收方认为上一次同步 进程没有正常结束。
在一个同步进程结束时或在同步进程的一个消息包发送完毕时,同步双 方更新锚值,该锚值标示同步进程是否成功结束或该同步进程的一个消息包
是否成功发送完毕。具体为同步接收方将同步接收方存储的第一锚值更新 为同步发起方发送的第二锚值,并向同步发起方发送确认结束同步进程的确 i人命令,同步发起方也将同步发起方的第一锚值更新为第二锚值。如果同步 过程中出现错误,则同步双方不更新锚值。
另外,本发明实施例还提供了一种同步命令的执行方法,具体为同步 接收方接收同步发起方发送的同步命令,该同步命令包含同步命令项的执行 指示,并根据该同步命令项的执行指示所指示的方式执行该同步命令项。
当同步命令项的执行指示为顺序执行指示时,同步接收方根据该顺序执 行指示,顺序执行该同步命令项。
当同步命令项的执行指示为原子执行指示时,同步接收方根据该原子执 行指示,以原子方式执行该同步命令项。例如在添加一个文件夹时,如果 能够成功添加该文件夹中的所有子文件夹和文件,则成功执行添加操作,如 果文件夹中有一个子文件夹或文件添加失败,则整个添加操作失败。
本发明实施例在同步会话中添加同步进程, 一个同步会话中可以包含多 个同步进程,只要同步会话没有结束,这些同步进程可以在任何一个消息包 中启动,只要有一个同步进程没有结束,同步会话就不能结束。在本发明实 施例中,与一个同步进程有关的命令必须有统一的标识。每个同步进程都用 "SyncAlert"来协商同步的类型与需要同步的对象,使用"Sync"命令执行 具体的同步操作。
同步进程的标识可以^使用以下两种方法
1 )使用进程ProcessID来标识,它的Schema (语法)规定如下 <xs:attribute name="ProcessID" type="xs:int'V>
同步双方在同步进程中需要使用ProcessID来标识这个同步进程。包括在同步请求命令(SyncAlert)中,同步命令(Sync)中,同步进程结束命令 (End_of_Process )中都要j吏用这个ProcessID。
2 )使用关联符Correlator来标识。比如在同步请求中,携带Correlator: <SyncAlert CmdID= '12345,>
<Correlator> j alkjkl 13 4 </Correlator>
</SyncAlert>
在结束同步进程时,也需要使用这个Correlator来表明结束的是哪一个同 步进程。
由于ProcessID与Correlator的作用相似,都是本发明实施例的可选方案 之一 ,只是Schema的设计有所不同,本发明实施例以ProcessID为例进行说明。
同步会话与同步进程的关系如图2所示,图2所示仅是本发明实施例中 同步会话与同步进程的一种关系,本发明实施例并不局限于此,同步会话也 可能有多个同步进程,同步进程也可能是同时进行的,不是交错执行的。
当同步进程交错执行时,需要在每一个同步请求命令(SyncAlert )、同步 命令(包括Sync、 Alert、 Get、 Put、 Sequence、 Atomic等)、同步进程结束命 令中都携带ProcessID,这样同步双方才能区分消息包中的命令是属于哪一个 同步进程的。
本发明实施例还进一步为同步会话和同步进程添加结束标识,方式如下 1 )对于同步会话,添加End—of—Session标识(会话结束命令),其Schema 头见定如下
〈xs:element name="End_of_Session" type="EmptyType"/> 当消息包中出现这个元素时,就代表会话结束了,如果还需同步,就要
发起新的会话过程。
该会话结束命令可以单独放在一个消息包中发送给同步接收方,也可以
和其他的同步命令打包在一起发送给同步接收方。若该命令单独放在一个消
12息包中发送给同步接收方,则同步接收方在接收到该命令后正常结束会话; 若该命令和其他的同步命令打包在一起发送给同步接收方,则同步接收方首 先执行消息包中的其它同步命令,并在执行完成后直接结束会话,不向同步 发送方返回相关同步命令的执行结杲;或者,同步接收方也可以緩存最后一 个消息包中同步命令的执行结果,以备对方在需要时获取;或者,同步接收 方也可以发送一个结束会话的消息给同步发送方,告知同步发送方会话结束。 该会话结束命令也可以使用Alert命令实现,这时需为Alert命令设计一 个特定的Code专门用于指示会话正常结束如1220。
1220
Session End (会话结束) 告诉对方结束会话
消息实例为
〈Alert CmdID="3,, Code=,,1220" /> <!-表示会话结束〉 2)对于同步进程,还可用<End—Of—Process>来标识进程的结束, <End_Of—Process>的Schema可以类4以于 <xs:element name="End—Of_Process"> <xs:complexType>
<xs:attribute ref="CmdID" use="required'7> <xs:attribute ref="ProcessID" use="required"/> <xs: complexType> </xs:element>
也可以用Alert命令来结束进程,只是需要扩展一个Alert code。比如,
1224 Process End (同步进程结束) 告诉对方结束同步进程
由于这两个命令的作用类似,只是Schema稍有不同,本发明实施例以 End—of—Process命令为例进4亍i兌明。
由于一个会话里面可能会有多个进程,因此结束标识要与同步进程关联, 否则,如果一个消息里有多个同步过程同时发生,同步双方将不知道结束的 是哪 一 个同步进程。可以4吏用进程标识将<SyncAlert>与结束标识 <End—Of—Process〉相关联。比如使用ProcessID作为进程标识时,同步请求为
〈SyncAlert CmdID=" 12345" ProcessID=,,r,></SyncAlert〉 同步进程结束请求为
<End—Of—Process CmdID="23456" ProcessID-" 1" /> 同步接收方根据ProcessID即可得知请求结束的是哪一个同步过程。 对于同步进程和同步会话的结束,其处理流程的一个示例如图3所示。 本发明实施例为同步会话过程添加"空闲"指示的方式如下 添加空闲指示的消息包的格式如下所示,包头(SyncHdr)与原来的消息
包一样,包体(SyncBody)只包含〈Idle/〉和〈Final/〉元素。对于"空闲,,命令,
其Schema定义如下
<xs:element name="Idle" type="EmptyType"/> 〈xs:complexType name="EmptyType7> 消息实例为
<SyncML>
〈SyncHdr VerSchema="2.0" VerProto="SyncML/2.0" SessionID="1234" MsgID="5" >
<Target><LocURI>......</LocURI> </Target>
<Source> <LocURI>……</LocURI> </Source> </SyncHdr> <SyncBody>
<Idle/> <!—空闲标识—>
<Final/> </SyncBody> </SyncML>
同步接收方接收到该命令之后,保持会话连接,并返回一个确认消息。 如果消息中没有此命令,则为正常的会话消息。
该种包可用于实时同步,在同步双方无数据需要同步的情况下,而且同 步双方也没有发送会话结束的标识时,同步双方可发送空闲包,从而保持会话连接,当有数据需要同步时,再发送各种消息包。
另外,在同步会话开始前,同步双方也可以通过发送命令来告诉对方连 续性同步的开始。如果没有此命令,则表明会话不是连续性的会话,只包含 一个同步进程。
该连续性会话开始命令可以使用Alert命令或一个单独的命令 (Continuous—Sync)来实现。如果采用Alert命令,需为Alert命令设计一个 特定的Code专门用于指示会话正常结束如1213,
1213
Continuous Session Start (会i舌开i会)
告诉对方开始连续性会"i舌
消息实例为
<Alert CmdID="3" Code="1213" /> <!-表示连续性会话开始〉 如果是采用Continuous—Sync命令,它可以包含在SyncAlert命令里,消 息实例为
<SyncAlert>
<SyncType .../>
<Continous—Sync/> </SyncAlert>
本发明实施例通过会话维持命令进行会话的维持,服务器或终端在确定 需要进行会话维持同步动作时(如完成某个同步进程,等待数据更新时),同 步发起方向同步接收方发送SyncML消息,该SyncML消息携带会话维持命 令,同步接收方回复确认。该过程在需要时是可重复执行的,直至双方中的 某一方发送实质性的同步命令给对方。同步双方可每隔一段固定的时间发送 一次会话维持命令,比如1分钟。若携带会话维持命令的SyncML消息中含 有其它同步命令,则另一方可以忽略该会话维护命令。
其流程如图4所示,本发明实施例以服务器发送会话维持命令为例进行 说明,终端向服务器发送会话维持命令的流程与图4所示流程类似,在此不 再赘述。
会话维持指令可以使用Alert命令,并为其设计一个新的Alert Code,如

151221
Session Waiting (会话等待) 告诉对方延迟会话
具体命令^口下
<AlertCmdID = "2,,Code="1221"/> <!—会话维持指示码—>
终端在接收到服务器发送的会话维持命令后,不做任何实质动作,只保 持当前会话,并返回该命令的确认消息,如下
<Status CmdID="2,, MsgRef=,,l" CmdRef^,,2" Cmd=,,Alert" Code="200,, />
可选地,同步双方在会话维持命令中携带认证信息,用于同步双方进行 认证。认证消息并不占用太多传输资源,但可以增强安全性。
在上述方案中,同步双方可约定一个时间,间断性的发送上述空消息或 空闲消息。比如,客户端在完成同步进程后,并不想中断会话,而保持实时 同步,则可以每隔15分钟发送一个空闲消息,服务器可以对此消息进行响应, 如果客户端收到响应消息,则表明双方并未断开连接,可以继续会话。
加入会话维持特性后,当同步双方有数据更改时,不用重新建立会话连 接,可以直接发送修改数据给另一方。这种特性在某些传输资源可靠的场景 或对实时同步要求比较高的场景中,作用很大。比如,智能卡与手机之间的 同步,并不耗费传输资源,在会话维持的方案下,可以避免服务器发 Notification给终端请求会话连接。在CPM中,客户端与服务器的数据更改的 比较频繁,需要双方能够及时更新修改的数据。在会话维持的方案下,就可 以很好地将更新的数据同步给对方,从而满足业务开展的需要。
还可以用会话维持指令实现定时同步功能,如每隔15分钟同步一次, 则可以发送一个会话维持指令Alert,在其Data中携带维持时间(15分钟), 在这15分钟内不再需要发送任何数据但会保持会话。 一旦超过会话维持时间, 则同步双方需要再发送会话维持命令或发送新的同步命令。
也可以是在一个同步进程完成后,如果隔一,殳时间(比如15分钟),同 步双方都没有新的数据需要传输,则进入休眠模式,保存上下文场景。 一旦 有一方有新的数据需要传输,则发送唤醒命令,唤醒会话。唤醒命令也可以 通过扩展Alert code来实现,比如Alert 1228。
1228
Session Wakeup (会话唤醒) 告诉对方唤醒会话
16会话唤醒后,同步双方继续新的同步数据的传输。
本发明实施例根据同步进程进行同步锚值(Anchor)的更新,Anchor的 使用如下在同步开始前,客户端与服务器维护自身的第一锚值,例如Last Anchor。在同步请求中,同步发起方将自身存储的Last Anchor及新生成的第 二锚值,例如Next Anchor发送给同步接收方,同步接收方比较接收的Last Anchor以及存储的Last Anchor,如果相同,则同步接收方发送相同的Next Anchor给同步发起方,同步过程继续,否则,则认为上一次同步进程没有正 常结束。当同步中的一方接收到另一方发送的结束同步进程的标识 <End—Of_Process>,且状态信息显示同步进程成功时,同步接收方将自身的 Last Anchor的值更新为Next Anchor 。
如果同步过程中出现错误,则双方不应该发送结束同步过程标识,或不 更新Anchor。
流程图如图5所示,具体包括以下步骤
步骤S501,客户端发送同步进程请求1,发送存储的第一锚值Last Anchor (Al)和新生成的第二锚值Next Anchor (A2)给服务器;
步骤S502,服务器比较接收的Last Anchor( Al )和自身存储的Last Anchor (Al),假定这两个值一致,则表明上次会话成功,同步进程继续。
步骤S503,服务器接受客户端的同步请求,并发送Next Anchor给客户端。
步骤S504,同步进程继续,双方互相交换同步数据。
步骤S505,客户端发送结束同步进程的请求给服务器,要求结束同步进 程。服务器接收到结束同步进程的请求,将自身存储的Last Anchor的值更新 为客户端发送的Next Anchor的值。
步骤S506,服务器发送同意结束同步进程的命令给终端,终端也将自身 存4渚的Last Anchor更杀斤为Next Anchor的it。
在异常情况下,如果同步双方在同步进程中中断或是某一方重置了 Anchor的值,则导致两边的Anchor不匹配,则同步双方会协商新的同步流程, 如图6所示,
17在图6中,服务器端的Anchor被重置为0,导致同步双方的Anchor不匹 配。这时,服务器发送新的同步请求,请求客户端发送数据指紋用于判别待 同步数据。客户端接受同步请求,并发送数据指紋给服务器,服务器根据数 据指紋判断待同步数据,并发送数据标识给客户端。客户端发送需要同步的 数据及指紋,服务器也发送服务器端的待同步数据给客户端。接下来,会话 正常结束,同步双方进行Anchor的更新。Anchor的更新步骤与前面的类似。 上述方案是对同步进程进行Anchor的更新,也可以根据消息包(Package ) 或同步命令(Sync )进行Anchor的更新。即同步发起方在每一个同步消息包 或同步命令中携带两个Anchor ( Last Anchor和Next Anchor)值,如果同步接 收方成功接收,则更新Next Anchor的值。如果同步发起方成功接收到来自同 步接收方的响应消息,则也更新自身的Next Anchor的值。如此循环。这样, 就可以成功标识出每一个同步消息包或同步命令的成功失败。其思想与同步 进程中的Anchor相似,但粒度更细。这样可以在异常情况下追踪到不匹配的 锚点,重新发送某个失败的消息包或同步命令,而不用重新发送所有的消息 包或同步命令,从而节省了传输流量,也提高了同步效率。
下面对同步命令中多个Item之间的顺序(Sequence )执行与原子(Atomic ) 执行进行介绍,本发明实施例在同步过程中,服务器或客户端给对方下发的 同步命令(比如Add、 Replace, Delete、 Move、 Copy等)中可以携带多个Item, 以实现使用同 一同步命令搡作对方的多个数据,例如Replace命令的语法为 〈xs:element name="Replace" type="ReplaceType"/> 〈xs:complexType name="ReplaceType"> <xs:sequence>
<xs:element ref="NoStatus" minOccurs="07>
<xs:element ref="Cred" minOccurs="07>
〈xs:element ref="Meta" minOccurs="0"/>
<xs:element ref="Item" maxOccurs="unbounded"/> </xs:ssqusncs>
<xs:attribute ref="CmdID" use-"required" /><xs:attribute ref="FieldLevel" use="optional"/> </xs:complexType>
即Replace命令可以携带多个Item以指示对多个数据元素执行Replace 动作。多个Item项的同步有时需要有序的处理,有时可以无序的处理,是否 有序执行由命令发送方确定。比如,在对一个文件夹进行同步时,需要先同 步文件夹,再同步文件夹中的文件。为了能够指示对一个同步命令中的多个 Item有序执行,服务器或客户端在下发给对方的同步命令中携带Item有序执 行的指示,携带方法如下
1 )在Item元素的父元素中携带Sequence属性,该属性指示其下子元素 有序执行,添力口的Sequence属性的Schema可以为
<xs:attribute name="Sequence" type="xs:boolean" default=,,false,,/> 如果此属性出现在同步命令中,则表明Item元素需要顺序执行,否则命
令4I"收方可以任意处理,既可以顺序也可以不顺序。如果此属性不出现,则
默i^为不顺序,由客户端来完成。 消息实例为
〈Replace CmdID="2" Sequence=,,true">
<Item> ... </Item> <Item> . </Item> </Replace>
2 )在Item元素所在的父元素中添加一个指示用的子元素(该元素为Item 元素的兄弟元素),比如,Schema可以为
〈xs:element name="Sequence" type="EmptyType" />
3 )为要顺序执行的Item加一个壳元素(即为要顺序执行的Item添加一 个父元素),壳元素只用于告诉终端该壳中的元素需要顺序执行。
同步接收方在解析出携带在Replace命令中的Item有序执行指示后,顺 序对Item指示数据执行该Replace命令。
原子(Atomic )操作表示多个Item项必须以原子方式执行,要么同时成功,要么同时失败。比如添加一个文件夹,如果能够成功,并添加了文件夹
里的所有子文件夹和文件,则表示成功执行Add命令,如果命令中有一个文 件或子文件夹添加失败,则整个Add操作失败。这样,可以保证数据操作的 完整性。
对于原子4喿作的指示方式与上面类似,携带方法如下 1)在Item元素的父元素中携带Atomic属性,该属性指示其下子元素 Atomic #丸4亍,添力口的Atomic属寸生的Schema可以为
<xs:attribute name="Atomic" type="xs:boolean" default="false,,/〉 如果此属性出现在同步命令中,则表明Item元素需要以Atomic方式执行, 否则命令4妄收方可以任意处理,即可以Atomic方式批J亍也可不以Atomic方 式执行。如果此属性不出现,则默认为非Atomic方式,由终端实现来完成。 消息实例为
<Replace CmdID="2,, Atomic="true">
<Item〉 ... </Item> <Item> ... </Item> </Replace>
2 )在Item元素所在的父元素中添加一个指示用的子元素(该元素为Item 元素的兄弟元素),比如,Schema可以为
〈xs:element name="Atomic" type="EmptyType" />
3 )为要顺序执行的Item加一个壳元素,壳元素只用于告诉终端该壳中的 元素需要Atomic才丸行。
命令接收方在解析出携带在Replace命令中的Item Atomic执行指示后,
Atomic对Item指示数据执行该Replace命令。
对于Atomic执行的多个Item项,只需要返回一个状态码即可。 下面通过一个具体的实施例对本发明实施例提出的数据同步方法进行详
细介绍。
现有 一 台终端设备,IMEI=493 005100592800 , 上面有两个数据库./Contacts和./Calendar, 需要与月良务器http:〃www.syncml.org/sync-server 进行同步,对应的数据库分别为./dev-contacts和./dev-Calendar。终端持有者 希望在一段时间内能够对Calendar数据库实时保持同步,只要有数据发生变 化就进行同步操作,除非给出会话结束标识,而且中间可能还会有Contacts 数据库的同步。下面图7给出了整个同步流程,其中同步进程1和3均为 Calendar数据库的同步,而同步进程2为数据库Contacts的同步。 具体包括如下步骤
步骤S701,同步会话开始,同步进程l最先启动,开始交换Calendar数 据库的同步。同步会话开始时(包含同步进程1启动)的示例如下 <SyncMI>
〈SyncHdr VerSchema="2.0" VerProto="SyncML/2.0" SessionID="4" MsgID=,T,>
<Target> <LocURI>http:〃www.syncml.org/sync-server</LocURI> </Target>
<Source> <LocURI>IMEI:493005100592800</LocURI〉 </Source>
<Cred〉 <!—The authentication is optional.—>
<Meta> <Type>syncml:auth-basic</Type> </Meta> <Data>QnJlY2UyOk9oQmVoYXZl</Data> <!—base64 formatting of "userid:password,,一>
</Cred>
<MaxMsgSize>5000</MaxMsgSize> </SyncHdr> <SyncBody>
〈SyncAlert CmdID=,T, ProcessID=,T, > <!—同步进程
1启动—>
.<SyncTypeDirection=,,twoWay,, Behaviour=,,Preserve,,/><!~ TWO一WAYALERT —>
<Target> <LocURI>./calendaK/LocURI> </Target><Source> <LocURI>./dev-calendar</LocURI> </Source> </SyncAlert><Final/> </SyncBody> </SyncML>步骤S702,在同步进程1的数据同步过程中,同步进程2启动了,交换 的为Contacts数据库中的数据。在同步进程1数据同步过程中,同步进程2 启动的示例如下 〈SyncML〉<SyncHdr VerSchema="2.0,, VerProto="SyncML/2.0" SessionID="4" MsgID="2"><Target> <LocURI>http:〃www.syncml.org/sync-server</LocURI></Targst><Source> <LocURI>IMEI:493005100592800</LocURI> </Source> </SyncHdr> <SyncBody><Status></Status><Sync CmdID=,,3,, ProcessID=,, 1" > <!—同步进程1的同步操作 --></Sync>〈SyncAlert CmdID="4" ProcessID="2" > <!—同步进程2启动—><SyncType Direction-"twoWay" Behaviour=,,Preserve,,/> <!--TWO_WAY_ALERT —>22<Target> <LocURI>./contacts</LocURI> </Target> <Source> <LocURI>./dev-contacts</LocURI> </Source> </SyncAlert><Final/> </SyncBody> </SyncML>步骤S703,同步进程1交换完数据后就结束了 ,同步进程2继续。同步 进程l结束后,发送结束标识的示例如下 <SyncML>〈SyncHdr VerSchema="2.0" VerProto="SyncML/2.0" SessionID="4" MsgID="3,,> <Target><LocURI>http:〃www.syncml.org/sync-server</LocURI> </Target> <Source><LocURI>IMEI:493005100592800</LocURI> </Sourcs> </SyncHdr> <SyncBody><End—Of—Process ProcessID=,, 1" /> <!一同步进程1结束标识—><Sync CmdID="3"ProcessID="2"> <!—同步进程2的同步操作—></Sync> <Final/></SyncBody> </SyncML>同步进程1的结束标识也可以和同步进程1的同步命令一起打包放在 Sync命令中发送。同步接收方首先执行消息包中的其它同步命令,并在执行 完成后直接结束会话,不向同步发起方返回相关同步命令的执行结果。命令 接收方也可以緩存最后一个包中同步命令的执行结果,以备对方在需要时获 取。具体的消息示例如下 <SyncML><SyncHdr VerSchema="2.0" VerProto="SyncML/2.0" SessionID="4" MsgID="3"><Target><LocURI〉http :〃www. syncml. org/sync- server</LocURI> </Target><Source> <LocURI>IMEI:493005100592800</LocURI> </Source> </SyncHdr> <SyncBody><Sync CmdID="2" ProcessID="l"></Sync><End—Of_Process ProcessID=,, 1,7> <!—同步进程1结束标识—><Sync CmdID="3"ProcessID=,,2"> <!—同步进程2的同步4喿作—></Sync><Final/> </SyncBody> </SyncML>步骤S704,同步进程2交换完数据结束,这时同步会话中无数据同步操 作,^f旦由于没有会话结束标识,因此会话继续维持,同步双方发送"空闲包"。 同步会话发送"空闲包"的示例如下 <SyncML>〈SyncHdr VerSchema="2.0" VerProto="SyncML/2.0" SessionID="4" MsgID="4,,><Target> <LocURI>http :〃www. syncml. org/ sync-server</LocURI></Target><Source> <LocURI>IMEI:493005100592800</LocURI> </Source> </SyncHdr> <SyncBody><Idle/> <!—空闲包标识—><Final/> </SyncBody> </SyncML>步骤S705, Calendar数据库又有数据需要同步,启动同步进程3,同步 双方不再发送"空闲包"。步骤S706,交换完数据后,同步进程3结束。这时如果有同步会话结束 标识,该会话就结束,否则继续发送"空闲包",维持同步会话连接。发送会 _活标识的示例如下 〈SyncML〉〈SyncHdr VerSchema=,,2.0" VerProto="SyncML/2.0" SessionID="4" MsgID="6"><Target> <LocURI>http:〃www.syncml.org/sync-server</LocURI> </Target><Source> <LocURI>IMEI:493005100592800</LocURI> </Source> </SyncHdr> <SyncBody><End—Of—Session/> <!—同步会话结束标识—> <Final/> </SyncBody> </SyncML>
本发明实施例提出的应用于OMA中数据同步的方法,在同步会话中启动 同步进程,同步双方在同步进程中进行数据同步。本发明实施例实现了数据 的实时同步,不需要重新建立会话过程,也不需要重新传输双方的设备能力 信息,从而节省了数据传输的流量;并且可以在一个会话过程中实现不同数 据库之间的同步进程,而且这些同步进程可以在会话过程的任何阶段启动, 增强了数据同步的灵活性;对同步进程添加Anchor,可以标识出同步进程的 完成情况,从而在同步进程失败时,可以方便地进行重传,提高了同步效率, 也节省了数据传输的流量;解决了同步会话中的混乱问题,提高了同步效率, 减少了错误的发生。
如图8所示,为本发明实施例应用于OMA中数据同步的系统的结构图, 包括
同步发起方82,可用于与同步接收方81进行数据同步; 同步接收方81,用于接收同步会话请求;
同步发起方82,用于向同步接收方81发送同步会话请求,建立与同步接 收方81的同步会话连接,在同步会话中启动同步进程,并与同步接收方81 在同步进程中进行数据同步。
其中,同步发起方82包括建立模块821,用于向同步接收方81发送同 步会话请求,建立与同步接收方81的同步会话连接;
启动模块822,用于在建立模块821建立的同步会话中启动同步进程,该 同步进程包括进程标识;
同步模块823,用于与同步接收方81在启动模块822启动的同步进程中 进行数据同步。
其中,同步模块823包括标识添加子模块8231,用于为同步进程添加 同步进程结束标识,为同步会话添加同步会话结束标识。关联子模块8232,用于将标识添加子模块8231添加的同步进程结束标识 和所述同步进程的进程标识相关联。
其中,同步模块823还包括命令发送子模块8233,用于在同步会话过 程中,结束一个同步进程后,等待新的同步数据时,向同步接收方81发送会 话维持命令或空闲消息包;
确认接收子模块8234,用于接收同步接收方81回复的确认消息,维持该 同步会话。
其中,同步模块823还包括更新子模块8235,用于在一个同步进程结 束时或在同步进程的一个消息包发送完毕时,更新锚值,所述锚值表示该同 步进程或该同步进程的消息包传输完毕。
如图9所示,为本发明实施例同步命令的执行系统的结构图,包括 同步发起方91,可用于与同步接收方92进行数据同步; 同步发起方91,用于发送同步命令,该同步命令包含同步命令项的执行 指示;
同步接收方92,用于接收同步发起方91发送的同步命令,根据同步命令 项的执行指示所指示的方式执行同步命令项。
其中,同步接收方92包括同步命令接收模块921,用于接收同步发起 方91发送的同步命令,该同步命令包含同步命令项的执行指示;
执行模块922,用于根据同步命令接收模块921接收的同步命令项的执行 指示所指示的方式执行该同步命令项。
其中,执行模块922包括顺序执行子模块9221,用于当同步命令项的 执行指示为顺序执行指示时,根据顺序执行指示,顺序执行所述同步命令项。
其中,执行模块922包括原子执行子模块9222,用于当同步命令项的 执行指示为原子执行指示时,根据原子执行指示,以原子方式执行所述同步 命令项。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发 明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件, 但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来, 该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算 机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实 施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此, 任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1、一种可应用于开放移动联盟OMA中数据同步DS的方法,其特征在于,包括向同步接收方发送同步会话请求,建立同步发起方与所述同步接收方的同步会话连接;在所述同步会话连接中启动同步进程,所述同步发起方与所述同步接收方在所述同步进程中进行数据同步。
2、 如权利要求1所述的可应用于OMA中DS的方法,其特征在于,所 述同步会话中包括一个或多个同步进程,所述每个同步进程包括唯一的进程 标识。
3、 如权利要求1所述的可应用于OMA中DS的方法,其特征在于,还 包括为所述同步进程添加同步进程结束标识,根据包含所述同步进程结束标 识的同步消息包确定结束所述同步进程。
4、 如权利要求1所述的可应用于OMA中DS的方法,其特征在于,还 包括为所述同步会话添加同步会话结束标识,根据包含所述同步会话结束标 识的同步消息包确定结束所述同步会话。
5、 如权利要求3所述的可应用于OMA中DS的方法,其特征在于,所 述同步进程包括第一同步进程和第二同步进程,所述同步进程结束标识包 括第一同步进程结束标识和第二同步进程结束标识;所述第一同步进程的进程标识与所述第一同步进程的同步进程结束标识 关联,第二同步进程的进程标识与所述第二同步进程的同步进程结束标识关 联。
6、 如权利要求1所述的可应用于OMA中DS的方法,其特征在于,还 包括所述同步会话中,在结束一个同步进程后,向所述同步接收方发送会话维持命令或空闲消息包; 接收所述同步接收方回复的确认消息,维持所述同步会话。
7、 如权利要求6所述的可应用于OMA中DS的方法,其特征在于,向所述同步接收方发送会话维持命令或空闲消息包包括按预定的时间间隔向所述同步接收方发送会话维持命令或空闲消息包。
8、 如权利要求6所述的可应用于OMA中DS的方法,其特4正在于,所 述会话维持命令携带认证信息,所述同步发起方和同步接收方通过所述认证 信息进行认证。
9、 如^L利要求1所述的可应用于OMA中DS的方法,其特^i在于,在 所述启动同步进程之前,还包括所述同步接收方接收所述同步发起方发送的同步进程请求,所述同步进 程请求携带所述同步发起方在第一同步进程结束后保存的第一锚值,以及所 述同步发起方新生成的第二锚值;判断所述接收的第 一锚值与所述同步接收方存储的第 一锚值是否相同; 如果相同,则向所述同步发起方发送与所述同步发起方发送的第二锚值 相同的第二锚值。
10、 如权利要求l所述的可应用于OMA中DS的方法,其特征在于,还 包括在一个同步进程结束时或在同步进程的一个消息包发送完毕时,更新 锚值,所述锚值标示所述同步进程是否成功结束或所述消息包是否成功发送 完毕。
11、 如权利要求9或10所述的可应用于OMA中DS的方法,其特征在 于,所述更新锚值包括所述同步接收方将所述同步接收方存储的第一锚值更新为所述同步发起 方发送的第二锚值;
12、 如权利要求9或IO所述的可应用于OMA中DS的方法,其特征在 于,所述更新锚值还包括所述同步发起方将所述同步发起方的第一锚值更新为第二锚值。
13、 一种可应用于开放移动联盟OMA中数据同步DS的系统,其特征在 于,包括同步发起方,可用于与同步接收方进行数据同步;所述同步接收方,用于接收同步会话请求;所述同步发起方,用于向所述同步接收方发送同步会话请求,建立与所 述同步接收方的同步会话连接,在所述同步会话中启动同步进程,并与所述 同步接收方在所述同步进程中进行数据同步。
14、 一种同步发起方,其特征在于,包括建立模块,用于向同步接收方发送同步会话请求,建立与所述同步接收方的同步会话连接;启动模块,用于在所述建立模块建立的同步会话中启动同步进程;同步模块,用于与所述同步接收方在所述启动模块启动的同步进程中进行数据同步。
15、 如权利要求14所述同步发起方,其特征在于,还包括 标识添加模块,用于为所述同步进程添加同步进程结束标识。
16、 如权利要求15所述同步发起方,其特征在于,还包括 关联模块,用于将所述标识添加模块添加的同步进程结束标识和所述同步进程的进程标识相关^:。
17、 如权利要求14所述同步发起方,其特征在于,还包括 命令发送模块,用于在所述同步会话过程中,结束一个同步进程后,向所述同步接收方发送会话维持命令或空闲消息包;确认接收模块,用于接收所述同步接收方回复的确认消息,维持所述同 步会话。
18、 如权利要求14所述同步发起方,其特征在于,还包括 更新模块,用于在一个同步进程结束时或在同步进程的一个消息包发送完毕时,更新锚值,所述锚值表示所述同步进程或所述同步进程的消息包传 输完毕。
19、 一种同步命令的执行方法,其特征在于,包括接收同步发起方发送的同步命令,所述同步命令包含同步命令项的执行 指示;根据所述同步命令项的执行指示所指示的方式执行所述同步命令项。
20、 如权利要求19所述同步命令的执行方法,其特征在于,所述同步命 令项的执行指示包括顺序执行指示,所述根据同步命令项的执行指示所指示的方式执行所述同步命令项包括根据所述顺序执行指示,顺序执行所述同步命令项。
21、 如权利要求19所述同步命令的执行方法,其特征在于,所述同步命 令项的执行指示包括原子执行指示,所述根据同步命令项的执行指示所指示的方式执行所述同步命令项包括根据所述原子执行指示,以原子方式执行所述同步命令项。
22、 一种同步命令的执行系统,其特征在于,包括 同步发起方,可用于与同步接收方进行数据同步;所述同步发起方,用于发送同步命令,所述同步命令包含同步命令项的 执行指示;所述同步接收方,用于接收所述同步发起方发送的同步命令,根据所述 同步命令项的执行指示所指示的方式执行所述同步命令项。
23、 一种同步接收方,其特征在于,包括同步命令接收模块,用于接收同步发起方发送的同步命令,所述同步命 令包含同步命令项的执行指示;执行模块,用于根据所述同步命令接收模块接收的同步命令项的执行指 示所指示的方式执行所述同步命令项。
24、 如权利要求23所述同步接收方,其特征在于,所述执行模块包括 顺序执行子模块,用于当所述同步命令项的执行指示为顺序执行指示时,根据所述顺序执行指示,顺序执行所述同步命令项。
25、 如权利要求23所述同步接收方,其特征在于,所述执行模块包括 原子执行子模块,用于当所述同步命令项的执行指示为原子执行指示时,根据所述原子执行指示,以原子方式执行所述同步命令项。
26、 一种同步会话的维持方法,其特征在于,包括向同步接收方发送会话维持命令或空闲消息包; 接收所述同步接收方回复的确认消息,维持所述同步会话。
27、 如权利要求26所述同步会话的维持方法,其特征在于,所述同步发 起方向同步接收方发送会话维持命令或空闲消息包包括所述同步发起方按预定的时间间隔向所述同步接收方发送会话维持命令 或空闲消息包。
28、 如权利要求26所述同步会话的维持方法,其特征在于,所述会话维 持命令携带认证信息,所述同步发起方和同步接收方通过所述认证信息进行 认证。
全文摘要
本发明实施例公开了一种可应用于开放移动联盟OMA中数据同步DS的方法,包括向同步接收方发送同步会话请求,建立同步发起方与所述同步接收方的同步会话连接;在所述同步会话连接中启动同步进程,所述同步发起方与所述同步接收方在所述同步进程中进行数据同步。本发明实施例在同步会话中启动同步进程,同步双方在同步进程中进行数据同步,从而实现了灵活地对同步双方的数据进行同步。
文档编号H04W56/00GK101516131SQ20081000828
公开日2009年8月26日 申请日期2008年2月18日 优先权日2008年2月18日
发明者刘海涛, 李克鹏, 柴晓前, 睿 王 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1