配色: 字号:
OMA-TS-DM_RepPro-V1_2-20070209-A
2012-11-05 | 阅:  转:  |  分享 
  
OMADeviceManagementRepresentationProtocol

OMA-TS-DM_RepPro-V1_2-20070209-A

1概述

ThisdocumentcoverstheDeviceManagementusageoftheSyncMLRepresentationProtocol.

这篇文档将讲述设备管理应用的SyncML表现协议。

2参考文件

2.1标准化的参考文件

2.2非标准化的参考文件

3术语和约定

3.1约定

在这份文档中用到的关键字“MUST”,“MUSTNOT”,“REQUIRED”,“SHALL”,“SHALLNOT”,“SHOULD”,“SHOULDNOT”,“RECOMMENDED”,“MAY”,“OPTIONAL”与定义在[RFC2119]中的一致。

所有的部分和附录,除了“范围”和“介绍”以外都是标准化的,除非明确地指出是非标准化的。

所有的对DTD部分和XML片段的引用都在typeface中详细说明。

3.2定义

在这篇文档中使用到的SyncML术语请参考SyncMLRepresentationProtocol[REPPRO]和OMADeviceManagementProtocol[DMPRO]。

管理树的相关术语定义请参考theDMTreeandDescriptiondocument[DMTND]。

3.3缩写

OMA开放手机联盟

WAP无线应用协议

4简介

这篇文档涵盖了SyncMLRepresentationProtocol的设备管理的用途。

5OMADeviceManagement用途

5.1MIME用途

OMADM消息使用两种MIME内容类型。application/vnd.syncml.dm+xml:DM消息的XML表示。application/vnd.syncml.dm+wbxml:DM消息的WBXML二进制表示。这篇说明书的附录C指定了为上述两种MIME媒体形式的内容形式注册的MIMEcontenttype。

支持MIME内容形式的传输层和会话层协议中,必须使用这两个MIMEcontenttype标识OMADM消息。

5.2WBXML用途

所有的客户端和服务器必须expect任何1.x版本的WBXML,所有的客户端和服务器必须用下述的任何WBXML:[WBXML1.1],[WBXML1.2],[WBXML1.3].

6Mark-upLanguage描述

本节中的例子演示了XML片段的使用。

本文档中列出的限制条件是除了[REPPRO]中列出的之外的。

6.1通用元素

下述是许多其他元素类型使用的通用元素类型。下表列出了服务器及客户端发送和接收的强制的以及可选的元素。



6.1.1Archive

限制:在OMADM管理协议中不使用这个元素。

6.1.2Chal

当使用syncml:auth-md5或syncml:auth-MAC验证的时候,NextNonce元素的MetaFormat必须被指定并且必须是b64.

例如:下面是一个MD-5的认证例子,用户id和密码必须是Base64字符编码的。这种认证方法的种类和格式在Meta元素中的元信息中说明。

例子:



6.1.3Cmd

其约束定义在[REPRO]中。

实例:下面是一个"MD-5"验证challenge例子.被请求的password和userid是Base64字符编码。



6.1.4CmdID

其约束定义在[REPRO]中。

实例:



6.1.5CmdRef

其约束定义在[REPRO]中。

实例:



6.1.6Cred

同[REPPRO]定义相同的限制。另外OMADM限制Cred元素的使用在sync头元素:SyncHdr中.发起人一定不能应用Cred在单独的命令中。当使用syncml:auth-md5时,Cred元素的MetaFormat必须被指定为b64。

下面是一个MD5digest鉴权证书体制的例子,其是由特征字符串:Bruce2:OhBehave:Nonce组成的。MD-5Digest也是Base64字符编码的,证书的类型和格式和nextnonce都在Meta元素的meta-information中说明。

实例:



6.1.7Final

其约束定义在[REPRO]中。

实例:



6.1.8Lang

这个元素在OMADM协议中没有使用。

6.1.9LocName

用来在MD5验证中发送userid。

6.1.10LocURI

其约束定义在[REPRO]中。

实例:



6.1.11MoreData

其约束定义在[REPRO]中。

实例:



6.1.12MsgID

其约束定义在[REPRO]中。

实例:





6.1.13MsgRef

其约束定义在[REPRO]中。

实例:



6.1.14NoResp

这个元素在OMADM协议中没有使用。

6.1.15NoResults

这个元素在OMADM协议中没有使用。

6.1.16NumberOfChanges

这个元素在OMADM协议中没有使用。

6.1.17RespURI

其约束定义在[REPRO]中。

实例:



6.1.18SessionID

其约束定义在[REPRO]中。

实例:



6.1.19SftDel

这个元素在OMADM协议中没有使用。

6.1.20Source

其约束定义在[REPRO]中。

实例:下面是一个在SyncHdr元素类型中应用的例子。



6.1.21SourceRef

其约束定义在[REPRO]中。

实例:



6.1.22Target

其约束定义在[REPRO]中。

实例:



6.1.23TargetRef

其约束定义在[REPRO]中。

Example:ThefollowingisanexampleoftheusageinaSyncHdrelementtype.

实例:下面是一个在SyncHdr元素类型中应用的例子。



6.1.24VerDTD

其约束定义在[REPRO]中。

实例:



6.1.25VerProto

主要的修订产生了一些不兼容问题,可能需要一个新的管理客户端。还有一些其他修订,但不影响已有客户端的基本兼容性。

当DM消息符合OMADM协议的当前版本时,则必须取值DM/1.2。

实例:



6.2MessageContainer元素

以下元素类型为DM消息提供基础容器元素支持。



6.2.1SyncML

由于传输支持MIME内容类型,所以对象必须识别为application/vnd.syncml.dm+xml(对于clear-text,XML表示)或者application/vnd.syncml.dm+wbxml(对于二进制,WBXML表示)。

实例:



6.2.2SyncHdr

其约束定义在[REPRO]中。

实例:





6.2.3SyncBody

其约束定义在[REPRO]中。



6.3Data元素

以下元素类型被用做DM消息进行数据交换的数据描述元素。



6.3.1Data

其约束定义在[REPRO]中。

要么使用并使之符合xml结构规范,要么使用<[[CDATA]]>字段。

实例:



6.3.2Item

其约束定义在[REPRO]中。

当一个Item包含一个托管节点的信息,并且meta中的format非空的时候,Data元素一定要指定。

实例:



6.3.3Meta

其约束定义在[REPRO]中。

实例:



6.3.4Correlator

其约束定义在[REPRO]中。

实例:



6.4MetaInformation元素

下面说明了DM协议中SyncML通用的Meta-Information元素种类,下表中没有列出的元素是用于实现特殊用途的或者没有这篇说明书中定义。



6.5ProtocolManagement元素

下表列出的元素类型用来支持DM协议。



6.5.1Status

如果statuscode是200,则这个Status命令不能被作为Results命令的响应发送,在其他情况下,status命令必须要发送。在发送或接收大对象的情况下,Alert1222(MoreMessages)必须被用于保持消息的继续交互

实例:



6.6ProtocolCommand元素

下面的元素种类用于表示DM消息中的设备管理指令。





6.6.1Add

限制:

Add命令创建一个新的节点,如果节点已经存在将返回错误。不允许在“AddtargetURI”处创建节点,指定为不能创建的URI处也不能创建节点。

Node必须作为内部节点的子节点被创建。root(.)内部节点必须存在,设备厂商可以创建叶子或内部节点。

如果TargetLocURI路径指向的父内部节点不存在,设备可以隐式地增加这个节点。当隐式地增加一个内部节点时,该节点的ACLs可以是空的,以使每一个这种节点继承其父节点的ACL。但是,如在[DMTND]§7.7.1.1中指定的一样,这个规则可能会使隐含增加的节点出现例外情况:当某服务器添加一个内部节点,但是却没有该节点父类的修改权限时,该被添加节点的ACL就不能为空,而应该明确指明创建它的这个服务器拥有add,delete和replace的权限。

在由于设备隐式地执行添加一个缺少的内部节点的操作失败而导致Add操作失败的情况下,如果设备曾经尝试过明确地添加内部节点,则statuscode应该和设备显式增加节点时的一样。此外,在上述情况下,返回的status元素应该包含一个Item元素。如果上述Item出现的话,其必须包含一个包含有设备添加失败的内部节点的LocURI的Target元素。

如果MIME-Type是定义在[DMTNDS]中的类型,那么多个节点可以用一条Add命令创建。如果设备不支持DMTNDS对象,客户端必须发送Status码415:“Unsupportedmediatypeorformat”。如果DMTNDS对象包含多个节点,设备可以为所有创建的节点报告一个status。如果从DMTNDS对象建立节点失败,客户端必须返回和下面的情况相同的status码:如果失败的节点是通过一个标准的Add命令建立的并且这个操作应该没有使设备管理树发生变化。ACL的值可以包含在DMTNDS对象中,并且这些ACL值必须遵从[DMTND]§7.7.1.中定义的规则。

DMTNDS对象中的路径被解释成和Add命令中的目的URI有关的。

CmdID元素类型指定了命令的唯一标识。

Cred元素不能用在命令级别。

Meta元素类型指定了命令的meta-information。meta-information的节点类型在[DMTND]中定义。例如:所有item命令的媒体类型或格式都需要被指定,meta-information的范围限制在命令中。Sizemeta元素可以用于通知接收者add的data大小。

一个或多个Item元素的类型必须指定。Item元素类型指出了传输到接收者的dataitems。在Item元素中指名的Target必须是一个完整的设备URI。

命令必须返回在[REPPRO]中定义的有效的status码,此处列出的status码仅作为实施指南使用。

Statuscode Meaning (200)OK 指令连接到叶子节点并成功完成。 (213)Chunkeditemaccepted 接收并且缓存了分块的Item。 (215)Notexecuted 由于用户交互和用户选择取消或退出,指令没有执行。 (216)AtomicrollbackOK 指令在Atomic中,并且Atomic失败,指令成功回滚。 (401)Unauthorized 发起者的认证证书指定的委托者没有足够权限去完成指令。 (404)NotFound 接收者没有指明的dataitem,这可能表明新的管理对象的定位URI不能用。 (405)Commandnotallowed 指令不被允许,请求指令不被目标允许。 (407)Authenticationrequired 没有指定的认证证书,一个合适的challenge也可以被返回。 (413)Requestentitytoolarge 要传输的dataitem过大(传输给接收者的dataitem的大小是有约束的)。 (414)URItoolong 指令中的URI太长,以字符形式表述的URI或者URI的片段太长,或者URI的片段数太多。 (415)Unsupportedmediatypeorformat 接受者不支持dataitem的媒体类型和格式。 (418)Alreadyexists 由于目标已经存在导致请求的Add指令失败。 (420)Devicefull 接收者设备内存满了。 (424)Sizemismatch 分块对象接收完成,但是接收到的对象的大小和第一块中声明的大小不一致。 (425)Permissiondenied 服务器没有合适的ACL权限。 (500)Commandfailed 当试图完成这个指令时,接收端出现了不明确的错误。 (516)Atomicrollbackfailed 指令在atomic中并且atomic失败。指令没有成功回退,服务器应该采取行动让客户端回到原始状态。 例子:



6.6.2Alert

Alert命令被明确的用来运送通知,譬如设备管理会话请求给接收者。例如,移动设备用这个命令来发起一个和服务器交互的“客户端发起的管理会话。CmdID元素类型指定了命令的唯一标识。

Cred元素不能用在命令级别。

Data元素必须被用来指出Alert类型。

如果alert作为Exec命令的异步响应发送,Correlator元素类型必须和该Exec命令的Correlator值相同。

可以定义一个或多个Item标签,例如Alert1224,用于发送客户端事件信息给服务器,需要使用一个或多个Item。每个Item运送一个独立的事件。每个Item必须包含一个Meta元素来标识数据的Type和Format。

目前可以使用有效的DM类型和格式(如“text/plain”和“xml”等)。

当服务器在Alert中能够处理Data,必须返回状态200(Ok);当服务器在Alert中不能够处理Data,必须返回状态406(OptionalFeatureNotSupported)。

Item元素类型指定了给Alert命令的参数。命令返回的状态码如下:

Statuscode Meaning (200)OK 指令和相关的Alert动作成功完成。 (202)Acceptedforprocessing 指令成功接收,但Alert指令没有被成功执行。后面可以为相关alert动作的最终完成状况创建一个异常状况。 (214)OperationCancelled 用户取消用户交互命令。 (215)NotExecuted 用户交互和用户选择取消或退出的结果,指令没有被执行。 (216)AtomicrollbackOK 指令在Atomic中,并且Atomic失败,指令成功回退。 (304)Notmodified 确认UIAlert产生了一个来自用户的negative响应。 (401)Unauthorized 发起者的认证证书指定的委托者没有足够权限去完成指令。 (405)Commandnotallowed DM协议不允许现在的syncML包中指定的alert指令。 (406)Optionalfeaturenotsupported 接收者不支持指定的alert命令。 (407)Authenticationrequired 没有指定的认证证书,一个适当的challenge也可以被返回。 (408)Requesttimeout 用户没有在超时时限内响应用户交互Alert。 (412)Incompletecommand Alert指令没有包含item元素类型的所有正确参数。 (415)Unsupportedmediatypeorformat 接收者不支持data项的媒体类型或格式。 (416)Requestedrangenotsatisfiable 客户端不能显示用户交互alert因为一个设备的局限(比如太多选择)。 (500)Commandfailed 当试图完成这个指令时,接收端出现了不明确的错误。 (516)Atomicrollbackfailed 指令在atomic中并且atomic失败。指令没有成功回退,服务器应该采取行动让客户端回到原始状态。 实例:

Atomic

Atomic中的命令必须和Sequence中的命令采用相同的执行顺序,所有的子命令必须被一起执行或都不执行。

如果客户端能执行所有atomic命令,则客户端可以将响应消息拆分到多个消息中。

Ifaclientcannotexecutealltheatomiccommandstogether(andthuscannotguaranteetheresultsofcommandsnotexecuted)andstatusresponseswouldgointomultiplemessages,thentheAtomiccommandMUSTfailwithstatuscode517-Atomicresponsetoolargetofitinmessage.PreviouslyexecutedcommandsinAtomiccommandMUSTberolledback.

如果客户端不能一起执行所有atomic命令(因此不能保证命令的results没有执行)并且status响应会分到多条消息中,atmoic命令必须返回失败,status码为517-atomic响应太大而不能装进message。

如果Atomic命令实现失败,必须给予失败响应。

CmdID元素类型指定了命令的唯一标识。

命令由一个或多个Add、Alert、Delete、Copy或Replace命令组成,Atomic的组成范围就是SyncML命令。

嵌套Atomic和Get命令是不合法的。嵌套的Atomic和Get命令将产生error(500)命令错误。

Statuscode Meaning (200)OK 指令成功完成。 (215)Notexecuted 用户交互和用户选择取消或退出的结果,指令没有被执行。 (401)Unauthorized 发起者的认证证书指定的委托者没有足够权限去完成指令。 (406)OptionalFeatureNotSupported 接收者不支持指定的原子命令。 (407)Authenticationrequired 没有指明的鉴权credentials,一个合适的challenge可以回复给发送者。 (500)Commandfailed 检测到嵌套的Atomic命令。 (507)Atomicfailed 当执行一个指定在Atomic元素类型中的单独命令时出现错误。 (517)AtomicResponsetoolargetofit 对于一个atomic命令的响应太大不能写入一个消息里面。

实例:



6.6.4Copy

Restrictions:

ImplementationMUSTtreatthedataofthecopyandthedataoftheoriginalindependentlyafterthecopyiscomplete.Itisimplementationdependentwhenaphysicalcopyoftheitemismadeintherecipient.

当copy完成后,copy的数据和原始的数据必须独立地进行处理。它的实施依赖于接收者的item的物理copy动作完成的时间。

这个版本中的copy命令不允许用于修改dataitem的mediatype,压缩dataitem或转换targetdataitem。这是为了提供一个在客户端拷贝或移动数据的简便方法,不需要发送数据给服务器并且达到同样的效果。

CmdID元素类型指定了命令的唯一标识。

Cred元素不能用在命令级别。

Meta元素类型指定了命令中的meta-information。例如所有Item的通用mediatype或format格式都需要被指定。meta-information的范围限制在命令中。

一个或多个Item元素的类型必须指定。Item元素类型指定了需要被接受方的管理树拷贝的dataitem。Copy必须指定在Atomic、Sequence或SyncBody元素类型中,并且Copy命令的Item元素类型中的Target和Source必须是一个完整的设备URI。

在这个版本中,source和destination节点必须都是叶子节点,假设两个都是叶子,则source节点的值覆盖目标节点的值。如果由于访问权限问题,目标节点不能用source节点的值来写,导致Copy命令不能执行,则需要返回403(Forbidden)。



Statuscode Meaning (200)OK 命令和相关的Alert行为执行成功。 (215)Notexecuted 由于用户选择了取消管理操作或命令而导致命令没有执行。 (216)AtomicrollbackOK 命令在Atomic中,Atomic执行失败。这个命令成功回滚。 (401)Unauthorized 发起者的鉴权证书指定的委托者不能完成该命令。 (403)Forbidden 禁止的。由于除了接入控制权限之外的原因导致source不能拷贝到目的URI而使得命令不能执行。 (405)Commandnotallowed 在target上请求的命令是不允许的。 (406)OptionalFeatureNotSupported 指定的Copy命令不能被接收者所支持。 (407)Authenticationrequired 没有指定鉴权证书。可以返回一个合适的challenge。 (414)URItoolong 命令中的URI太长。String表示的URI或者URI中的段太长或者URI有太多的段。 (418)Alreadyexists 在接收者的管理树中已经存在目标data项。 (420)Devicefull 接收者管理树中没有足够的空间存储data项。 (425)Permissiondenied 服务器没有合适的ACL权限。 (500)Commandfailed 接收者尝试执行命令时出现了不明确的错误。 (510)Datastorefailure 当接收者在接收者的管理树里面复制data项的时候出现错误。 (516)Atomicrollbackfailed 命令在Atomic元素中并且Atomic失败。这个命令没有成功回滚。服务器应该采取响应行动来试图恢复客户端到原始状态。

实例:

6.6.5Delete

限制:

Delete命令删除一个node,并且删除该节点的所有子节点分支,Delete命令受制于accessrights和节点的AccessTypestatus。Delete命令是用于删除一个节点,如果要删除一个节点的值,则应该使用Replace命令。

如果要删除的一个包括子节点的节点,则需要注意以下几点:

1、如果目标节点及其所有子节点都可以被删除,并且delete操作完成,则返回200(OK)的status。

永久性节点不能被删除,如果试图删除一个永久性节点,则返回(405)命令不允许的status。

根节点(.)不能被删除,如果试图删除它,则返回(405)命令不允许的status

CmdID元素类型指定了命令的唯一标识。

Cred元素不能用在命令级别。

一个或多个Item元素的类型必须指定。Item元素类型指定了需要被接受方的管理树删除的dataitem。Item元素类型中的Target必须是一个完整的设备URI。

Statuscode Meaning (200)OK Thecommandandtheassociatedindividualcommandsarecompletedsuccessfully.Delete命令和相关的单独命令成功完成。 (215)Notexecuted 由于用户选择取消管理操作/命令而导致命令没有执行。 (216)AtomicrollbackOK 命令在Atomic中,而且Atomic失败。此命令回滚成功。 (401)Unauthorized 发起者的鉴权证书指定了没有足够权限完成命令的委托方。 (403)Forbidden Delete命令的目标节点是一个除了由于接入控制原因之外而不能被删除的节点。 (404)Notfound 接收者判断data项在接收者的管理树中不存在。 (405)Commandnotallowed 要求执行的命令不允许在目标上执行。 (407)Authenticationrequired 没有指定鉴权证书,一个响应的challenge将会发送给发送者。 (414)URItoolong 命令中的URI太长。以字符形式表现的URI或者URI中的分段太长或者URI有太多的分段。 (425)Permissiondenied 服务器没有适当的ACL权限。 (516)Atomicrollbackfailed 命令在Atomic中,而且Atomic失败。此命令回滚失败,服务器应该采取相应措施使客户端回退到原始状态。 实例:



6.6.6Exec

Exec操作的执行必须看起来就像同步操作一样,例如,就像target已经生效而且返回了一个值。当需要用Exec命令启动一个长期运行的过程,例如一个服务,则Exec执行后,必须返回一个标识处理过程是否成功启动的status码,并且可能需要为该处理过程建一个本地标识。

CmdID元素类型指定了命令的唯一标识。

Cred元素不能用在命令级别。

如果服务器期望获得一个对Exec命令的异步响应时,Correlator应该被使用。

Meta元素类型指定了命令的meta-information。例如:所有item命令的媒体类型或格式都需要被指定,meta-information的范围限制在命令中。

至少有一个Item元素类型必须被定义,Item元素类型指定了一个data元素作为执行程序的参数。Sequence或SyncBody元素中必须指定一个Exec,这个exec的Item元素中指定的Target必须是一个完整的设备URI。

注意Exec命令的target的本质:它是怎样解释参数的、它是怎样返回依赖于对target进行节点描述的值



Statuscode Meaning (200)OK 命令和相关的Alert操作成功执行。 (202)Acceptedforprocessing 对于启动一个应用程序的远程的执行操作或者警告一个用户或者应用程序成功接收。 (215)Notexecuted 由于用户选择取消管理操作/命令而导致命令没有执行。 (401)Unauthorized 发起者的鉴权证书指定了没有足够权限完成命令的委托方。 (403)Forbidden 禁止的。由于除了接入控制权限之外的原因导致source不能拷贝到目的URI而使得命令不能执行。 (405)Commandnotallowed 要求执行的命令不允许在目标上执行。 (406)OptionalFeatureNotSupported 接收者不支持指定的Exec命令。 (407)Authenticationrequired 没有指定鉴权证书,一个适当的响应的challenge将会发送给发送者。 (414)URItoolong 命令中的URI太长。以字符形式表现的URI或者URI中的分段太长或者URI有太多的分段。 (420)Devicefull 接收者的管理树中没有写入data项需要的足够的空间。 (425)Permissiondenied 服务器没有适当的ACL权限。 (500)Commandfailed 当接收者尝试执行命令时出现了未定义的错误。 (510)Datastorefailure 当接收者在其管理树中拷贝data项的时候出现错误。

实例:



6.6.7Get

通过随后的SyncML消息,Get命令请求的数据被通过Result字段返回。CmdID元素类型指定了命令的唯一标识。

DMTNDS对象中的Path元素的值将被解释执行成与Get命令中的targetURI有关。

如果客户端不支持DMTNDS并且Get命令的target是一个内部节点,则Result中必须包括子节点的名称列表,列表的类型定义在[DMTND]中。

Cred元素不能用在命令级别。

必须定义一个或多个Item,Item元素类型指定需要接收方返回的dataitem。在Item元素中指名的Target必须是一个完整的设备URI。

Statuscode Meaning (200)OK 命令成功执行。 (215)Notexecuted 由于用户选择取消管理操作/命令而导致命令没有执行。 (401)Unauthorized 发起者的鉴权证书指定了没有足够权限完成命令的委托方。 (404)Notfound 指定的data项在接收者上不存在。 (405)Commandnotallowed 要求执行的命令不允许在目标上执行。 (406)Optionalfeaturenotsupported 接收者不能识别在URI的最后的“?”之后指定的特征。 (407)Authenticationrequired 没有指定鉴权证书,一个适当的响应的challenge将会发送给发送者。 (413)Requestentitytoolarge Therequesteddataitemistoolargetobetransferredatthistime.在当前时刻请求的data项太大而不能传输出去。 (414)URItoolong 命令中的URI太长。以字符形式表现的URI或者URI中的分段太长或者URI有太多的分段。 (415)Unsupportedmediatypeorformat 接收者不支持Data项的媒体类型或者格式。 (425)Permissiondenied 服务器没有适当的ACL权限。 (500)Commandfailed 当接收者尝试执行命令时出现了未定义的错误。

实例:



6.6.8Map

这个元素在OMADM协议中没有使用。

在DM协议中不使用。

6.6.9MapItem

这个元素在OMADM协议中没有使用。

6.6.10Put

这个元素在OMADM协议中没有使用。

6.6.11Replace

Replace命令用于覆盖已有节点的值。如果该节点不存在,不能创建该节点,并应该返回status码404。如果新名字于目前其他节点相同,Replace命令返回status码418(AlreadyExists)。

命令的发起者应该决定data项的哪些特征/属性是被接收者支持的,并且其只发送支持的属性。这些信息将被保存在接收者的设备信息文件中。

如果MIME-Type是定义在[DMTNDS]中的形式,那么一个完整的子树可以立即被replaced。如果设备确定在DMTNDS对象中的一些子节点和父节点不兼容,那么设备一定不能repalce任何设备中的节点。如果设备接受了整个子树的repalcement,那么DMTNDS对象中的整个子树必须replace设备中所有存在的子节点。如果DMTNDS对象中的一些节点是和设备中存在的节点相比的新节点,那么设备必须建立这些节点。如果一些老节点没有包含在DMTNDS对象中,那么老的节点必须删除。ACL值可以包含在DMTNDS对象中,并且这些值必须遵循定义在[DMTND]§7.7.1.中的规则。

如果设备不支持DMTNDS,客户端必须发送status码415“Unsupportedmediatypeorformat”。

如果DMTNDS对象包含多个节点,设备只能为所有的replaced节点回复一个status。如果DMTNDS对象中的任何节点的replace失败,那么客户端必须返回与下列情况相同的status码:失败的节点是通过一个普通的Replace命令replaced,并且设备管理树应该没有由于这种操作而改变。

由于MIME-Type的Replace命令的执行产生的树必须和这种情况:接收者已经删除了所有的子节点、repalced第一个节点或者成功处理了一系列添加DMTNDS对象中的节点的Add命令产生的树一致。

DMTNDS对象中的路径被解释执行成与Replace命令中的targetURI相关。

CmdID元素类型指定了命令的唯一标识。

Cred元素不能用在命令级别。

Meta元素类型指定了命令的meta-information。例如:所有item命令的媒体类型或格式都需要被指定,meta-information的范围限制在命令中。Sizemeta元素可以用于通知接收者add的data大小。

必须指定一个或多个Item元素类型。Item元素类型指定了管理树中需要被replace的信息(dataitem)。在Item元素中指名的Target和Source必须是一个完整的设备URI。

Statuscode Meaning (200)OK 此命令使用了一个现存的叶子节点而且其成功执行。 (213)Chunkeditem

accepted 分块的对象接收、缓冲完成。 (215)Notexecuted 由于用户选择取消管理操作/命令而导致命令没有执行。 (216)AtomicrollbackOK 此命令在Atomic元素中,同时Atomic失败。此命令成功回滚。 (401)Unauthorized 发起者的鉴权证书指定了没有足够权限完成命令的委托方。 (403)Forbidden 禁止的。由于除了接入控制权限之外的原因导致source不能拷贝到目的URI而使得命令不能执行(例如这个节点正在使用)。 (404)NotFound 指定的data项在接收者上不存在。 (405)Commandnotallowed 该命令不被允许。在target上不允许执行请求的命令。任何试图往叶子节点上添加子节点的操作都会照成一个405status:Commandnotallowed。此外,永久节点的一些属性:格式、名字和类型不能更改,如果试图做这种尝试,405status:Commandnotallowed将会返回给发送者。 (407)Authenticationrequired 没有指定鉴权证书,一个适当的响应的challenge将会发送给发送者。 (413)Requestentitytoolarge 要传输的data项太大(例如,传输给接收者的data项的大小有限制)。 (414)URItoolong 命令中的URI太长。以字符形式表现的URI或者URI中的分段太长或者URI有太多的分段。 (415)Unsupportedmediatypeorformat 接收者不支持data项的媒体类型或者格式。 (418)AlreadyExists 由于target已经存在,要求的Replace命令失败。 (420)Devicefull 接收设备的存储空间已满。 (424)Sizemismatch 接收到了分块对象,但是接收对象的大小和第一块中指定的大小不一致。 (425)Permissiondenied 服务器没有适当的ACL权限。 (500)Commandfailed 当接收者尝试执行命令时出现了未定义的错误。 (516)Atomicrollbackfailed 命令在Atomic中,而且Atomic失败。此命令回滚失败,服务器应该采取相应措施使客户端回退到原始状态。

实例:



6.6.12Results

限制:

Result命令必须在同一个命令的Status后被发送。

实例:



6.6.13Search

这个元素在OMADM协议中没有使用。

6.6.14Sequence

CmdID元素类型指定了命令的唯一标识。

必须指定一个或多个Add、Replace、Delete、Copy、Get、Exec或Alert。这些元素必须被按顺序执行。

如果sequence命令被取消,Status码215必须被返回。如果开始执行sequence,sequence的status码必须是200。

Statuscode Meaning (200)OK 命令成功执行。 (401)Unauthorized 发起者的鉴权证书指定了没有足够权限完成命令的委托方。 (407)Authenticationrequired 没有指定鉴权证书,一个适当的响应的challenge将会发送给发送者。 (500)Commandfailed 当接收者尝试执行命令时出现了未定义的错误。 实例:



6.6.15Sync

这个元素在OMADM协议中没有使用。

7AlertCodes

SyncMLDM协议只能使用下面列出的alert码。

SyncMLDM协议从1100开始。

AlertCodeValue Name Description Userinteractionalertcodes 1100 DISPLAY 此Alert是由服务器发送的,客户端应该显示此信息以给用户提供相应的信息。 1101 CONTINUEORABORT 此Alert是由服务器发送的,客户端应该显示由服务器发送的此信息并且要求确认。如果用户没有确认此操作,必须向服务器回复abort码。 1102 TEXTINPUT 终端显示接收到的Alert中的消息,然后要求用户输入一个文本字符串。随后,这个文本字符串会包含在Status消息中发送给服务器。 1103 SINGLECHOICE 呈现给用户一系列的选项,用户只能从这些选项中选择一个。 1104 MULTIPLECHOICE 呈现给用户一系列选项,用户可以选择这些选项中的一个或多个。 1105-1199 - 留待将来的SyncML的扩展用途使用。 Devicemanagementsessionalertcodes 1200 SERVER-INITIATEDMGMT 指定一个服务器发起的设备管理会话。 1201 CLIENT-INITIATEDMGMT 指定一个客户端发起的设备管理会话。 1202–1220 - 留待将来的SyncML的扩展用途使用。 Specialdevicemanagementalertcodes 1222 NEXTMESSAGE 用来请求包中的下一条信息。 1223 SESSIONABORT 通知接收者发送者希望取消设备管理会话。 1224 CLIENTEVENT 通知服务器客户端出现了一个事件。事件数据必须包含在Item元素中的Data元素中。 1225 NOENDOFDATA 分块对象的数据的最后部分没收到。 1226 GENERICALERT 通用客户端产生了携带或没携带一个MO的引用的alert。 1226-1299 - 留待将来的SyncML的扩展用途使用。



















少的第二段:“IncasetheAddoperationfailsbecausethedevicefailstoimplicitlyaddamissinginteriornode,thestatuscodeSHOULDbe

thesameasifthedevicehadtriedtoaddtheinteriornodeexplicitly.Additionally,thereturnedStatuselementinsucha

failurecaseSHOULDincludeanItemelement.TheItemelement,ifpresent,MUSTcontainaTargetelementwhichincludes

theLocURIoftheinteriornodethatthedevicefailedtoadd.”

少的第三段:IftheMIME-Typeisasdefinedin[DMTNDS]thenmultiplenodesmaybecreatedwithoneAddcommand.ClientMUSTsendstatuscode415,“Unsupportedmediatypeorformat”,ifthedevicedoesnotsupportDMTNDSobjects.ThedevicecanonlyreportonestatusforallcreatednodesiftheDMTNDSobjectcontainsmultiplenodes.IfthecreationofanynodesfromtheDMTNDSobjectfailsthentheclientMUSTreturnthesameerrorstatuscodeasifthatfailurenodewascreatedwithanormalAddcommandandthedevicesManagementTreeSHOULDnotbechangedasresultofthisoperation.ACLvalues

MAYbeincludedintheDMTNDSobjectandthesevaluesMUSTfollowtherulesspecifiedin[DMTND]§7.7.1.

少的第四段:“PathsinDMTNDSobjectsareinterpretedrelativetothetargetURIintheAddcommand.”

少的第一段:“IftheMIME-Typeisasdefinedin[DMTNDS]thenacompletesub-treeMAYbereplacedatonce.AdeviceMUSTNOTreplaceanynodesifthedeviceidentifythatsomeofthesubnodesintheDMTNDSobjectarenotcompatiblewithcurrentnodesinthedevice.IfthedeviceacceptsthereplacementofacompletesubtreethenthecompletesubtreeintheDMTNDSobjectMUSTreplaceallexistingsubnodesinthedevice.IfsomeofthenodesintheDMTNDSobjectisnewcomparedtotheexistingoneinthedevicethenthedeviceMUSTcreatethesenodes.Ifsomeoftheoldnodesarenotincludedinthe

DMTNDSobjectthentheoldnodesmustbedeleted.ACLvaluesMAYbeincludedintheDMTNDSobjectandthesevaluesMUSTfollowtherulesspecifiedin[DMTND]§7.7.1.”

少的第二段:“ClientMUSTsendstatuscode415,“Unsupportedmediatypeorformat”,ifthedevicedoesnotsupportDMTNDS.”

少的第三段:“ThedevicecanonlyreportonestatusforallreplacednodesiftheDMTNDSobjectcontainsmultiplenodes.IfthereplaceofanynodesfromtheDMTNDSobjectfailsthentheclientMUSTreturnthesameerrorstatuscodeasifthatfailurenodewasreplacedwithanormalReplacecommandandthedevicesManagementTreeSHOULDnotbechangedasresultofthisoperation.”

少的第四段:“ThetreethatresultsfromtheexecutionofaReplacecommandwiththisMIME-TypeMUSTbeconsistentwithatreethatwouldhaveresultediftherecipienthaddeletedallsub-nodesandReplacedthefirstnodeandthereafterprocessedaseriesof

successfulAddcommands,eachofwhichaddsoneofthenodesoftheDMTNDSobject.”

少的第五段:“PathsinDMTNDSobjectsareinterpretedrelativetothetargetURIintheReplacecommand.”





献花(0)
+1
(本文系leewenlee首藏)