本申请要求了2009年4月1日提交的,申请号为200910132988.6,发明名称为“提供节点信息的方法、获取节点信息的方法及设备”的中国申请的优先权,其全部内容通过引用结合在本申请中。
具体实施方式
图1为本发明实施例中设备管理系统的结构示意图。该系统包括:DM客户端11及DM服务器12。DM服务器12向DM客户端11发送命令以获取MO实例信息,发送的命令可包括MOI以及节点对象信息,以表示DM服务器12希望获取MO实例中的该节点对象信息对应的节点信息。DM客户端11接收到该命令后,根据所述MOI找到对应的MO实例的位置,然后根据所述节点对象信息找到对应的节点,获取对应的节点信息,并向DM服务器12回复获取的节点信息。节点对象信息可包括节点标识信息、节点信息参数中的任意一种或组合。节点标识信息可为相对URI、节点名称等。节点信息参数可为层级参数(如“?list=StructDataLevel2”)、结构参数(如“?list=Struct”)、结构数据参数(如“?list=StructData”)、树和描述序列化(Tree aNd Description Serialization,TNDS)参数(如“?list=TNDS”)中的任意一种。
本实施例中,DM服务器12通过向DM客户端11发送包含有MOI以及节点对象信息的命令,使得DM客户端11不仅能够确定MO实例的位置,还能够根据节点对象信息找到目的节点,从而获得该目的节点的节点信息,并回复给DM服务器12,这样,DM服务器12通过发送一次命令便能够获得节点信息,大大提高了DM服务器12获取节点信息的效率,也提高了设备管理系统的执行效率。
图2为本发明实施例的一种设备管理服务器的结构示意图。该DM服务器可包括发送模块21和接收模块22。发送模块21向DM客户端发送命令以获取节点信息。接收模块22接收DM客户端回复的节点信息。其中命令可包括MOI以及节点对象信息,参见上述系统实施例。
当所述节点对象信息仅包括节点标识信息时,所述接收模块22可具体用于接收MO实例中与所述节点标识信息对应的节点信息;所述MO实例与所述MOI对应。
当所述节点对象信息仅包含节点信息参数时:
若所述节点信息参数为层级参数,所述接收模块22可具体用于接收MO实例中所述层级参数对应的子孙节点的节点信息;所述MO实例与所述MOI对应;或者
若所述节点信息参数为结构参数,所述接收模块22可具体用于接收根据所述结构参数返回的与所述MOI对应的MO实例的结构信息;或者
若所述节点信息参数为结构数据参数,所述接收模块22可具体用于接收根据所述结构数据参数返回的与所述MOI对应的MO实例的结构信息及叶子节点的数据信息;或者
若所述节点信息参数为树和描述序列化参数,所述接收模块22具体用于接收根据所述树和描述序列化参数返回的与所述MOI对应的MO实例序列化的管理子树信息。
当节点对象信息不仅节点标识信息还包括上述节点信息参数时,所述接收模块22可具体用于接收所述MO实例中与所述节点标识信息对应的节点下与所述层级参数对应的子孙节点的节点信息;或者
所述接收模块22可具体用于接收所述MO实例中与所述节点标识信息对应的节点的管理子树的结构信息;或者
所述接收模块22可具体用于接收所述MO实例中与所述节点标识信息对应的节点的管理子树的结构信息及叶子节点的数据信息;或者
所述接收模块22可具体用于接收所述MO实例中与所述节点标识信息对应的节点的序列化的管理子树信息。
本实施例中,DM服务器通过发送模块21向DM客户端发送包含有MOI以及节点对象信息的命令,使得DM客户端不仅能够确定MO实例的位置,还能够根据节点对象信息找到目的节点,从而获得该目的节点的节点信息,并回复给DM服务器,这样,DM服务器通过发送一次命令便能够获得节点信息,大大提高了DM服务器获取节点信息的效率。
图3为本发明实施例的一种终端设备的结构示意图。该终端设备包括:接收模块31及返回模块32。接收模块31接收DM服务器发送的用于获取MO实例信息的命令,该命令可包括MOI以及节点对象信息,参见上述系统实施例。返回模块32根据命令中的MOI及节点对象信息获取节点信息返回给DM服务器。返回模块32具体可根据接收模块31接收的命令中的MOI找到对应的MO实例的位置,然后进一步根据命令中的节点对象信息在找到的位置上获取节点信息。
当节点对象信息仅包括节点标识信息时;所述返回模块32可具体用于返回MO实例中与所述节点标识信息对应的节点信息;所述MO实例与所述MOI对应。
当所述节点对象信息仅包含节点信息参数时:
若所述节点信息参数为层级参数,所述返回模块32可具体用于返回MO实例中所述层级参数对应的子孙节点的节点信息;所述MO实例与所述MOI对应;或者
若所述节点信息参数为结构参数,所述返回模块32可具体用于根据所述结构参数返回与所述MOI对应的MO实例的结构信息;或者
若所述节点信息参数为结构数据参数,所述返回模块32可具体用于根据所述结构数据参数返回与所述MOI对应的MO实例的结构信息及叶子节点的数据信息;或者
若所述节点信息参数为树和描述序列化参数,所述返回模块32可具体用于根据所述树和描述序列化参数返回与所述MOI对应的MO实例序列化的管理子树信息。
所述节点对象信息不仅包括节点标识信息还包括上述节点信息参数时,所述返回模块32可具体用于返回所述MO实例中与所述节点标识信息对应的节点下与所述层级参数对应的子孙节点的节点信息;或者
所述返回模块32可具体用于返回所述MO实例中与所述节点标识信息对应的节点的管理子树的结构信息;或者
所述返回模块32可具体用于返回所述MO实例中与所述节点标识信息对应的节点的管理子树的结构信息及叶子节点的数据信息;或者
所述返回模块32可具体用于返回所述MO实例中与所述节点标识信息对应的节点的序列化的管理子树信息。
所述返回模块32还可用于在所述节点对象信息对应的节点不存在的情况下,返回所述节点不存在的信息。
上述接收模块31及返回模块32可设置在终端设备的DM客户端中。
上述终端设备实施例中,终端设备返回模块32找到接收模块31接收的命令中所指定的节点信息,并向DM服务器回复,从而使得终端设备在接收到DM服务器发送的一个命令的情况下,便可获得该目的节点的节点信息,也使得DM服务器通过发送一次命令便能够获得节点信息,大大提高了DM服务器获取节点信息的效率。
图4为本发明实施例的一种提供节点信息的方法的流程图。该方法可包括:
步骤41、DM客户端接收DM服务器发送的包含有MOI以及节点对象信息的命令;
步骤42、DM客户端根据所述命令中的MOI以及节点对象信息向所述DM服务器返回所述节点信息。
上述步骤41、步骤42中,节点对象信息详见上述系统实施例。
本实施例中,DM服务器向DM客户端发送包含有MOI以及节点对象信息的命令,DM客户端根据MOI及节点对象信息获取并返回节点信息,从而使得DM服务器仅发送一次命令便能够获得节点信息,大大提高了DM服务器获取节点信息的效率。
本发明实施例的一种获取节点信息的方法可包括:
向终端设备发送包含有MOI以及节点对象信息的命令;该命令可包括MOI以及节点对象信息,参见上述系统实施例;
接收终端设备根据所述命令中的MOI以及节点对象信息返回的节点信息。
当节点对象信息包括节点标识信息时:所述接收根据所述命令中的MOI以及节点对象信息返回的节点信息可包括:接收MO实例中与所述节点标识信息对应的节点信息;所述MO实例与所述MOI对应。
所述节点对象信息仅包括节点信息参数时,若节点信息参数为层级参数时,所述接收根据所述命令中的MOI以及节点对象信息返回的节点信息可包括:接收返回MO实例中所述层级参数对应的子孙节点的节点信息;所述MO实例与所述MOI对应;
若节点信息参数为结构参数,所述接收根据所述命令中的MOI以及节点对象信息返回的节点信息可包括:接收根据所述结构参数返回的与所述MOI对应的MO实例的结构信息;或者
若节点信息参数为结构数据参数,所述接收根据所述命令中的MOI以及节点对象信息返回的节点信息包括:接收根据所述结构数据参数返回的与所述MOI对应的MO实例的结构信息及叶子节点的数据信息;或者
若节点信息参数为树和描述序列化参数,所述接收根据所述命令中的MOI以及节点对象信息返回的节点信息可包括:接收根据所述树和描述序列化参数返回的与所述MOI对应的MO实例序列化的管理子树信息。
所述节点对象信息包括节点信息参数和节点标识信息时:
所述接收返回MO实例中所述层级参数对应的子孙节点的节点信息可包括:接收所述MO实例中与所述节点标识信息对应的节点下与所述层级参数对应的子孙节点的节点信息;
所述接收根据所述结构参数返回的与所述MOI对应的MO实例的结构信息可包括:接收所述MO实例中与所述节点标识信息对应的节点的管理子树的结构信息;
所述接收根据所述结构数据参数返回的与所述MOI对应的MO实例的结构信息及叶子节点的数据信息可包括:接收所述MO实例中与所述节点标识信息对应的节点的管理子树的结构信息及叶子节点的数据信息;
所述接收根据所述树和描述序列化参数返回的与所述MOI对应的MO实例序列化的管理子树信息可包括:接收所述MO实例中与所述节点标识信息对应的节点的序列化的管理子树信息。
本实施例中,DM服务器仅向终端设备发送一次命令便获取了节点信息,大大提高了执行效率。
图5A为本发明实施例的另一种提供节点信息的方法的流程图。图5B为图5A对应的DCMO的数据模型图。图5C为图5A对应的MO实例示意图。假设本实施例中DCMO实例被存储在设备管理树中的DCMO节点下,DCMO节点是“.”的子节点。图5B中的x节点实例化后得到如图5C所示的DCMO实例,分别被命名为“1”和“2”,节点1及其所有子孙节点(descendant node)一起可称为DCMO实例1,节点2及其所有子孙节点一起可称为DCMO实例2。两个实例中的节点分别有不同的值,两个实例分别完成不同的功能。当DM服务器需要获取某一节点如“Property”节点信息时,获取过程包括:
步骤51、DM服务器向DM客户端发送包含MOI及相对URI的“Get”命令,以获取该相对URI对应的节点信息,如本实施例中的“Property”节点的节点信息。
步骤52、DM客户端接收到DM服务器发送的“Get”命令后在设备管理树中找到MO实例的位置,本实施例中,即节点1和节点2的位置。
步骤53、DM客户端根据“Get”命令中的相对URI在步骤52找到的位置上找到对应的节点,如本实施例中的“Property”节点,获取“Property”节点的节点信息。
步骤54、DM客户端向DM服务器回复步骤52查找到的MO实例中与相对URI对应的节点的节点信息。如本实施例中的“Properry”节点的节点信息。
至此,DM服务器即通过发送一条命令获取了MO实例的相关信息,这些信息既包括实例的位置,又包括MO实例中某节点的节点信息。
上述步骤51中,Get命令可为:
“<Get>
<CmdID>4</CmdID>
<Item>
<Target><LocURI>urn:oma:mo:oma-dcmo:1.0/Property</LocURI>
</Target>
</Item>
</Get>”。
该“Get”命令使用“Item/Target/LocURI”携带了DCMO的MOI以及“Property”节点的相对URI“Property”,表示DM服务器希望获取DCMO实例中Property节点的值。其中,MOI即“urn:oma:mo:oma-dcmo:1.0”。
也可以在相对URI后添加“?prop=<property_name>”以获取节点属性等节点信息。本实施例中采用在MOI后衔接节点相对URI的形式来进行表示,即“urn:oma:mo:oma-dcmo:1.0/Property”。本实施例不限定MOI与相对URI具体的表示方式,只要包含上述两项信息,且能让DM客户端进行解析即可。例如,可以使用某种保留符号来明确标记MOI,然后再衔接相对URI,如使用问号来标记,即“?urn:oma:mo:oma-dcmo:1.0?”。再如,还可以把MOI和相对URI分开,如:
“<Get>
<CmdID>4</CmdID>
<Item>
<TargetParent>
<LocName>urn:oma:mo:oma-dcmo:1.0</LocName>
</TargetParent>
<Target><LocURI>Property</LocURI></Target>
</Item>
</Get>”。
该命令在“Item”中包含了“TargetParent”,并在“TargetParent”中使用了“LocName”来携带MOI。而相对URI仍在“Item/Target/LocURI”中携带,此处的相对URI即为“Property”。
上述步骤52中,DM客户端收到上述命令后,即可了解DM服务器需要获取MOI为“urn:oma:mo:oma-dcmo:1.0”的MO实例的相关信息,则DM客户端先在设备管理树中查找到DCMO的位置。查找的方法可以是在设备管理树的所有内部节点中遍历节点类型(Type)为“urn:oma:mo:oma-dcmo:1.0”的节点,也可以根据已保存的MOI与节点位置的对应关系信息来确定MO实例根节点位置。本实施例中,MO实例根节点即为x节点实例化后的上述的节点1和节点2。通过上述查找方法,DM客户端查找到DCMO实例在设备管理树上的位置为“./DCMO/1”和“./DCMO/2”,也即图5C中的节点1和节点2。
上述步骤53中,DM客户端根据上述命令中的相对URI来获取节点信息,此时即在节点1和节点2下找到“Property”节点,获取节点值。
上述步骤54中,DM客户端可通过如下结果(Results)命令向DM服务器回复节点信息:
“<Results>
<CmdRef>4</CmdRef>
<CmdID>7</CmdID>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./DCMO/1/Property</LocURI></Source>
<Data>Camera</Data>
</Item>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./DCMO/2/Property</LocURI></Source>
<Data>Speaker</Data>
</Item>
</Results>”
该Results命令中使用多个“Item”来携带不同节点的信息,在“Item/Source/LocURI”元素中携带了上述Property节点的绝对URI,即“./DCMO/1/Property”或“./DCMO/2/Property”,而在“Item/Data”元素中携带了Property节点的值。其中“./DCMO/1/Property”节点的值为“Camera”,而“./DCMO/1/Property”节点的值为“Speaker”。
需要说明的是,上述的绝对URI中实际上包含了DCMO实例的位置,即“./DCMO/1”和“./DCMO/2”。回复的信息中也可以不使用绝对URI,仍使用相对URI,如“1/Property”和“2/Property”。
本实施例中,DM服务器通过一个命令从DM客户端获取了多个MO实例的指定节点的节点值,进一步提高了DM服务器获取节点信息的效率,同时节约了空中资源。
图6A为本发明实施例的再一种提供节点信息的方法的流程图。图6B为图6A对应的诊断和监测(Diagnostics and Monitoring,DiagMon)MO实例示意图。假设设备管理树中存在如图6B所示的DiagMon MO实例,且图6B中“DiagMon”节点是设备管理树根节点例的子节点,其下存在两个MO实例,实例根节点分别为节点1和节点2。节点1及其所有子孙节点一起可称为DiagMon MO实例1,节点2及其所有子孙节点一起可称为DiagMon MO实例2。若DM服务器使用一条命令来获取MO实例中多个节点的节点信息,可包括:
步骤61、DM服务器向DM客户端发送包含MOI及相对URI的“Get”命令,以获取该相对URI对应的节点信息,如本实施例中的“DFID”节点和“Status”节点的节点信息。
步骤62、DM客户端接收到DM服务器发送的Get命令后,根据“Get”命令中的MOI在设备管理树中查找MO实例的位置,本实施例中,即节点1和节点2的位置。
步骤63、DM客户端根据Get命令中的相对URI在步骤62找到的位置上找到对应的节点,如本实施例中的“DFID”节点和“Status”节点,获取“DFID”节点和“Status”节点的节点信息。
步骤64、DM客户端向DM服务器回复步骤62查找到的MO实例中与多个相对URI对应的多个节点的节点信息。本实施例中即“DFID”节点和“Status”节点的节点信息,完成DM客户端上节点信息的获取。
上述步骤61中,DM服务器发送的命令可以为:
“<Get>
<CmdID>4</CmdID>
<Item>
<Target><LocURI>urn:oma:mo:oma-diagmon:1.0/DFID</LocURI>
</Target>
</Item>
<Item>
<Target><LocURI>urn:oma:mo:oma-diagmon:1.0/Status</LocURI
></Target>
</Item>
</Get>”。
该命令使用两个“Item”表示DM服务器需要获取MOI为“urn:oma:mo:oma-diagmon:1.0”的MO实例中“DFID”节点和“Status”节点的节点值。该命令相对于上述步骤51中的“Get”命令多加入了“Item”,每个“Item”中携带的信息可与上述方法实施例使用的方法相同。也可以在相对URI后添加“?prop=<property_name>”以获取节点属性。
上述步骤62、步骤63的处理可同上述步骤52、步骤53,只是此时要获取每个MO实例中两个节点的值。
上述步骤64中,DM客户端在获取到节点值后,仍然可通过发送“Results”命令向DM服务器回复节点信息。“Results”命令可为:
“<Results>
<CmdRef>4</CmdRef>
<CmdID>7</CmdID>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./DiagMon/1/DFID</LocURI></Source>
<Data>urn:oma:mo:oma-diag:device:BatteryInfo:1.0</Data>
</Item>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./DiagMon/1/Status</LocURI></Source>
<Data>Running</Data>
</Item>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./DiagMon/2/DFID</LocURI></Source>
<Data>urn:oma:diag:device:SmsOptions:1.0</Data>
</Item>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./DiagMon/2/Status</LocURI></Source>
<Data>Stopped</Data>
</Item>
</Results>”。
该命令中包括了两个DiagMon MO实例的“DFID”节点和“Status”节点的绝对URI及节点值。这些信息的携带方式同上述步骤54,只是本实施例中对于每个MO实例包含了两个节点的信息,相当于总共包含了四项信息,均由“Item”元素承载。
需要说明的是,这四项信息是按照MO实例的顺序排列的。例如,DiagMon MO实例1的两个节点的信息在前,DiagMon MO实例2的两个节点的信息在后。这四项信息也可以按其他顺序排列,例如两个“DFID”节点的信息在前,两个“Status”节点的信息在后等等。DM服务器可以从绝对URI中了解到有两个MO实例存在,以及了解到相关的节点值。
当DM服务器希望获取MO实例的某个节点的信息,但某个MO实例或某些MO实例中却没有该节点,如对于可选节点,某个实例中并未定义,例如不同的DiagMon功能MO(DiagMon Function MO)就可能会定义不同的节点集合,那么它们的实例就会包含不同的节点;或者由于节点虽然已被定义,但却还没有创建在设备管理树中。这种情况下,DM客户端无法向DM服务器提供该节点的节点信息。此时,DM客户端可仍然使用“Results”命令回复存在的节点的节点信息,并在针对获取命令的状态回复命令(“Status”命令)中告知DM服务器某个或某些节点信息无法获取。具体可以在“Status”命令中使用“Data”元素承载一个状态码来说明节点不存在的信息,也可以进一步在“Status”中用“Item”元素具体指出不存在的节点的URI。
本实施例中,DM服务器通过一个命令从DM客户端获取了多个MO实例的多个节点的节点值,更进一步地提高了DM服务器获取节点信息的效率,同时进一步节约了空中资源。
图7A为本发明实施例的又一种提供节点信息的方法的流程图。图7B为图7A对应的软件组件管理对象(Software Component MO,SCOMO)实例示意图。假设如图7B所示的SCOMO节点为设备管理树根节点的子节点,图7B中包含一个SCOMO实例即MO实例。在SCOMO实例的Deployed子树下存在两个实例:实例1和实例2。实例1和实例2不是MO实例,是管理子树实例。此时,服务器不了解实例1和实例2一级子节点中都包含哪些节点。一级子节点是指“Deployed”节点下的节点1和节点2的子节点。当DM服务器需要从DM客户端获取节点1和节点2及其子节点的节点信息时,可包括:
步骤71、DM服务器向DM客户端发送包含MOI、相对URI及节点信息参数的Get命令,以获取节点信息参数对应的节点信息,本实施例中即节点1和节点2及它们的子节点的节点信息;
步骤72、DM客户端接收到DM服务器发送的Get命令后,根据Get命令中的MOI查找MO实例;在找到的MO实例中,根据相对URI在设备管理树中找到“Deployed”节点下的节点1和节点2的位置。
步骤73、DM客户端根据“Get”命令中的参数在步骤72找到的位置上查找对应的子孙节点(descendant node),本实施例中即节点1和节点2本身以及其下层的“ID”节点、“PkgIDRef”节点、“Name”节点、“Description”节点、“Version”节点、“Operations”节点、“State”节点及“Ext”节点,获取这些节点的节点信息。
步骤74、DM客户端向DM服务器回复步骤73找到的子孙节点的节点信息。本实施例中即“ID”节点、“PkgIDRef”节点、“Name”节点、“Description”节点、“Version”节点、“State”节点及“Ext”节点的节点信息,完成DM客户端上节点信息的获取。
上述步骤71中,DM服务器发送的命令可以为:
“<Get>
<CmdID>4</CmdID>
<Item>
<Target>
<LocURI>urn:oma:mo:oma-scomo:1.0/Inventory/Deployed?list=Struct
DataLevel2</LocURI>
</Target>
</Get>”。
DM服务器在该命令的“Item/Target/LocURI”元素中携带的信息为“urn:oma:mo:oma-scomo:1.0/Inventory/Deployed?list=StructDataLevel2”,除了如上述步骤51和步骤61中包含的MOI信息和相对URI信息外,还包含了层级参数“?list=StructDataLevel2”。这个层级参数中的“StructDataLevel2”用以说明DM服务器希望获取“Deployed”节点下两层节点结构和/或节点值信息,也就是节点1及其一级子节点和节点2及其一级子节点的节点结构和/或节点值。其中,节点值只针对叶子节点。若DM服务器要利用该命令获取如图5C和图6B所示的MO实例的一级子节点信息,则可不包含相对URI信息,此时命令中仅包含MOI信息和上述节点信息参数,即在“Item/Target/LocURI”元素中携带“urn:oma:mo:oma-scomo:1.0?list=StructDataLevel1”。MOI信息和节点对象信息的表示方式可参见上述步骤51及其说明。
上述步骤74中,DM客户端收到DM服务器发送的命令并获取相关节点的信息后,可通过如下命令向DM服务器回复,如:
“<Results>
<CmdRef>4</CmdRef>
<CmdID>7</CmdID>
<Item>
<Meta><Format xmlns=″syncml:metinf″>node</Format></Meta>
<Source><LocURI>./SCOMO/1/Inventory/Deployed</LocURI></
Source>
</Item>
<Item>
<Meta><Format xmlns=″syncml:metinf″>node</Format></Meta>
<Source><LocURI>./SCOMO/1/Inventory/Deployed/1</LocURI>
</Source>
</Item>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./SCOMO/1/Inventory/Deployed/1/ID</LocUR
I></Source>
<Data>word</Data>
</Item>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./SCOMO/1/Inventory/Deployed/1/PkgIDRef</
LocURI></Source>
<Data>Pkg1</Data>
</Item>
<Item>
<Meta><Format xmlns=″syncml:metinf″>node</Format></Meta>
<Source><LocURI>./SCOMO/1/Inventory/Deployed/2</LocURI>
</Source>
</Item>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./SCOMO/1/Inventory/Deployed/2/ID</LocUR
I></Source>
<Data>Excel</Data>
</Item>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./SCOMO/1/Inventory/Deployed/2/PkgIDRef</
LocURI></Source>
<Data>Pkg2</Data>
</Item>
</Results>”。
通过该命令可以看出,DM客户端回复了“Deployed”节点信息、实例1中的节点1和节点1的一级子节点的信息,及实例2中的节点2和节点2的一级子节点的信息,为描述的简洁起见,上面仅列出了节点1、节点2、及其“ID”子节点和“PkgIDRef”子节点的回复情况,省略了其它节点。节点信息在“Results”命令中的承载方式与上述步骤54、步骤64相同,只是对于内部节点仅回复其绝对URI,而对于叶子节点既回复绝对URI也回复节点值。同样,参见上述步骤64及其说明,本实施例中不限定每个节点信息在命令中的排列顺序。
本实施例中,DM服务器通过“?list=StructDataLevel2”这个层级参数来告知DM客户端,并获取了“Deployed”节点的下两层节点结构和/或节点值信息。其中,“Level2”说明DM服务器需要获取指定的URI的下两层节点的信息,还可以是“Level3”、“Level4”等,以获取更下层节点的信息,终端的回复方式同上面的例子也是类似的,不再赘述。类似地,本实施例的方法仍然可以用于MO实例。
获取节点信息的命令中也可以去掉“Level2”,直接使用结构数据参数即“?list=StructData”,例如“urn:oma:mo:oma-scomo:1.0/Inventory/Deployed?list=StructData”,这样需要获取的就是“Deployed”节点的所有实例(包括所有子孙节点)的结构和/或节点信息。获取节点信息的命令还可以使用结构参数“?list=Struct”和TNDS参数“?list=TNDS”,其用法参见协议“DM1.2”,“Struct”属性用于获取管理树或管理子树的结构,而“TNDS”属性用于获取序列化的管理子树信息,只要把这些参数与上述方法实施例相结合,即可获取某个指定MOI的MO实例中的某个相对URI位置下的结构信息或序列化管理子树信息,也可以是获取某个指定MOI的MO实例的结构信息或序列化管理子树信息。
本实施例中,DM服务器通过一个命令从DM客户端不仅获取了一级子节点的节点值,还获取了下两层节点结构和/或数据,又进一步地提高了DM服务器获取节点信息的效率,并节约了空中资源。
上述系统、设备及方法实施例中,DM服务器通过向DM客户端发送包含有MOI以及节点对象信息的命令,使得DM客户端不仅能够确定MO实例的位置,还能够根据节点对象信息找到目的节点,从而获得该目的节点的节点信息,这样,DM服务器通过发送一次命令便能够获得节点信息,大大提高了DM服务器获取节点信息的效率。
还可以使用另一种方法来获得MO实例中指定节点的信息,即服务器在获取MO实例信息的命令中携带需要获取的节点的名称。服务器需要获取的可能是叶子节点信息或内部节点信息;
首先对于服务器需要获取叶子节点的情况进行描述,现假设服务器需要获取如图8所示的SCOMO实例中的叶子节点,即PkgID节点的信息,则向终端设备发送命令,如下:
<Get>
<CmdID>4</CmdID>
<Item>
<Target><LocURI>urn:oma:mo:oma-scomo:1.0</LocURI></Targ
et>
<Data>”PkgID”</Data>
</Item>
</Get>
在上面命令中,使用Item/Target/LocURI元素携带了SCOMO的MOI,即urn:oma:mo:oma-scomo:1.0,另外使用Item/Data元素携带了PkgID节点的名称,该名称即为PkgID,这表示服务器希望获取SCOMO实例中PkgID节点的值。当然,也可以在节点名称后添加?prop=<property_name>以获取节点属性。本发明不限定MOI和节点名称在命令中的携带方式,只要能包含上述两项信息,并且能让终端设备进行解析即可。例如可以使用一个新的元素MOID元素来携带MOI,另外还可以把节点名称衔接在MOI后面,如urn:oma:mo:oma-scomo:1.0+PkgID,不限定如何衔接,比如使用“-”号或“/”号等均可;另外也不限定使用Data元素来携带节点名称,例如可以使用Item/Target/LocName元素携带。
终端设备收到上述命令后即可了解服务器需要获取MOI为urn:oma:mo:oma-scomo:1.0的MO实例的相关信息,则终端先在设备管理树中找到SCOMO的位置,查找的方法可以是在设备管理树的所有内部节点中遍历节点Type(类型)为urn:oma:mo:oma-scomo:1.0的节点,当然也可以根据已保存的MOI与节点位置的对应关系信息来确定MO实例根节点位置。
经过上述过程,终端查找到SCOMO实例在设备管理树上的位置为./SCOMO/1。之后终端根据上述命令中的节点名称来获取节点信息,此时即为在节点./SCOMO/1下查找PkgID节点,./SCOMO/1下可能有一个或多个PkgID节点,比如./SCOMO/1/Download/1节点和./SCOMO/1/Inventory/Delivered/1节点下分别存在PkgID节点,终端找到所有的./SCOMO/1下的PkgID节点,把其值向服务器进行回复:
<Results>
<CmdRef>4</CmdRef>
<CmdID>7</CmdID>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./SCOMO/1/Download/1/PkgID</LocURI></S
ource>
<Data>Pkg1</Data>
</Item>
<Item>
<Meta><Format xmlns=″syncml:metinf″>chr</Format></Meta>
<Source><LocURI>./SCOMO/1/Inventory/Delivered/1/PkgID</Lo
cURI></Source>
<Data>Pkg1</Data>
</Item>
</Results>
上面的代码即描述了终端设备向服务器回复的信息,该信息使用了Results命令,在命令中使用多个Item来携带不同节点的信息,在Item/Source/LocURI元素中携带了上述PkgID节点的绝对URI,即./SCOMO/1/Download/1/PkgID和./SCOMO/1/Inventory/Delivered/1/PkgID,而在Item/Data元素中携带了PkgID节点的值,其中./SCOMO/1/Download/1/PkgID节点的值为Pkg1,而./SCOMO/1/Inventory/Delivered/1/PkgID节点的值也为Pkg1。
注意,上述的绝对URI中实际上包含了SCOMO实例的位置,即./SCOMO/1。当然,回复的信息中也可以不使用绝对URI,而还是使用相对URI,如1/Inventory/Delivered/1/PkgID和1/Download/1/PkgID。
至此服务器即通过发送一条命令获取了MO实例的相关信息,这些信息既包括实例的位置,又包括MO实例中指定叶子节点的值。
其次,对于服务器需要获取内部节点信息的情况进行描述,现假设服务器需要获取如图7B所示的SCOMO实例中Deployed节点的所有子节点信息,则向终端设备发送命令,如下:
<Get>
<CmdID>4</CmdID>
<Item>
<Target><LocURI>urn:oma:mo:oma-scomo:1.0</LocURI></Targ
et>
<Data>”Deployed”</Data>
</Item>
</Get>
在上面命令中,使用Item/Target/LocURI元素携带了SCOMO的MOI,即urn:oma:mo:oma-scomo:1.0,另外使用Item/Data元素携带了Deployed节点的名称,该名称即为Deployed,这表示服务器希望获取SCOMO实例中Deployed节点的所有子节点的名称。当然,也可以在Deployed节点名称后添加?prop=<property_name>以获取节点属性。本发明不限定MOI和节点名称在命令中的携带方式,只要能包含上述两项信息,并且能让终端设备进行解析即可。例如可以使用一个新的元素MOID元素来携带MOI,另外还可以把节点名称衔接在MOI后面,如urn:oma:mo:oma-scomo:1.0+Deployed,不限定如何衔接,比如使用“-”号或“/”号等均可;另外也不限定使用Data元素来携带节点名称,例如可以使用Item/Target/LocName元素携带。
终端设备收到上述命令后即可了解服务器需要获取MOI为urn:oma:mo:oma-scomo:1.0的MO实例的相关信息,则终端先在设备管理树中找到SCOMO的位置,查找的方法可以是在设备管理树的所有内部节点中遍历节点Type(类型)为urn:oma:mo:oma-scomo:1.0的节点,当然也可以根据已保存的MOI与节点位置的对应关系信息来确定MO实例根节点位置。
经过上述过程,终端查找到SCOMO实例在设备管理树上的位置为./SCOMO/1;之后终端根据上述命令中的节点名称来获取节点信息,此时即为在节点./SCOMO/1下查找Deployed节点,终端找到所有的./SCOMO/1下的Deployed节点(本例只有一个Deployed,若存在有多个的情况则需要都找到),终端把Deployed节点的所有子节点名称向服务器进行回复:
<Results>
<CmdRef>4</CmdRef>
<CmdID>7</CmdID>
<Item>
<Meta>
<Format xmlns=’syncml:metinf’>node</Format>
</Meta>
<Source><LocURI>./SCOMO/1/Inventory/Deployed/1</LocU
RI></Source>
</Item>
<Item>
<Meta>
<Format xmlns=’syncml:metinf’>node</Format>
</Meta>
<Source><LocURI>./SCOMO/1/Inventory/Deployed/2</LocU
RI></Source>
</Item>
</Results>
上面的代码即描述了终端设备向服务器回复的信息,该信息使用了Results命令,在命令中使用多个Item来携带不同节点的信息,在Item/Source/LocURI元素中携带了上述Deployed节点的子节点的绝对URI,即./SCOMO/1/Inventory/Deployed/1和./SCOMO/1/Inventory/Deployed/2。
注意,上述的绝对URI中实际上包含了SCOMO实例的位置,即./SCOMO/1,此时终端上只有1个SCOMO实例,若有多个则需要反馈多个实例的Deployed节点的子节点名称。
至此服务器即通过发送一条命令获取了MO实例的相关信息,这些信息既包括实例的位置,又包括MO实例中指定内部节点的子节点名称。
本实施例是通过携带内部节点的名称来指定需要获取的节点的,也可以使用内部节点的相对URI来指定,相对URI是指从MO实例根节点下的子节点到需要获取的节点构成的相对路径。
前面的实施例提到,可以使用MOI和相对URI来获取MO实例中指定节点的信息,但若相对URI中存在服务器不知道的URI片段,即存在服务器不能确定的节点名称,则需要相应的方法来处理,(这类不能确定名称的节点即为前面提到的x节点,它是在服务器或终端对它进行实例化时,才会被命名的,因此服务器有可能不知道它的名称;x节点又称为占位符节点或未命名节点);
此时可以在相对URI中使用一些符号来代替服务器不知道名称的节点,如图7B,若服务器需要获取SCOMO实例中的ID节点的信息,则可以发送如下命令:
<Get>
<CmdID>4</CmdID>
<Item>
<Target>
<LocURI>urn:oma:mo:oma-scomo:1.0?/Inventory/Deployed/<x
>/ID</LocURI>
</Target>
</Item>
</Get>
上面同样也是使用相对URI来表示需要获取的节点,相对URI是指从MO实例根节点到需要获取的节点之间的路径,在图7B中即为?/Inventory/Deployed/<x>/ID,也可以增加MO实例的根节点,如?/<x>/Inventory/Deployed/<x>/ID。与前面实施例的不同之处在于,对于Deployed节点的子节点,是使用<x>表示的,因为对于未命名节点,服务器可能不知道它的实例化后的名称,本发明不限定使用什么符号来进行这种表示x节点,比如还可以使用“*”等符号,或RFC2396中规定的保留符号。另外,本实施例还在相对URI中添加了“?”号,用于明确告知终端这是一个相对URI,这个“?”号只是一个标识,它也可以不属于相对URI的一部分,只作为MOI和相对URI之间衔接的符号,当然,问号也可以由其它符号替代。另外,可以如前面实施例提到的,把MOI和相对URI用不同的元素携带。
与前面实施例类似,终端收到命令后查找到所有Deployed下的ID节点,并向服务器进行回复它们的URI和节点值,具体回复内容不再赘述。
对于需要获取MO实例中内部节点的子节点名称的情况,若需要获取的相对URI中也有未知的节点名称,也可以使用上面的方法来表示。
综上可知:
一种提供节点信息的方法,包括:
接收包含有管理对象标识以及节点对象信息的命令;
根据所述命令中的管理对象标识以及节点对象信息返回节点信息。
其中,所述节点对象信息包括节点标识信息、节点信息参数中的任意一种或组合;所述节点标识信息为节点的相对统一资源标识符或节点名称;所述相对统一资源标识符包括指定字符,所述指定字符用于表示占位符节点或未命名节点;所述节点对象信息包括节点标识信息;
返回所述节点信息包括:
返回管理对象实例中与所述节点标识信息对应的节点信息;所述管理对象实例与所述管理对象标识对应;或者
返回管理对象实例中与所述节点标识信息对应的节点的子节点信息;所述管理对象实例与所述管理对象标识对应。
一种获取节点信息的方法,包括:
发送包含有管理对象标识以及节点对象信息的命令;
接收根据所述命令中的管理对象标识以及节点对象信息返回的节点信息。其中,所述节点对象信息包括节点标识信息、节点信息参数中的任意一种或组合。所述节点标识信息为节点的相对统一资源标识符或节点名称;所述相对统一资源标识符包括指定字符,所述指定字符用于表示占位符节点或未命名节点;所述节点对象信息包括节点标识信息;
所述接收根据所述命令中的管理对象标识以及节点对象信息返回的节点信息包括:
接收管理对象实例中与所述节点标识信息对应的节点信息;所述管理对象实例与所述管理对象标识对应;或者
接收管理对象实例中与所述节点标识信息对应的节点的子节点信息;所述管理对象实例与所述管理对象标识对应。
与此相应的在前面实施例中所描述的设备管理服务器和终端设备,其中所处理的所述节点标识信息为节点的相对统一资源标识符或节点名称;
所述相对统一资源标识符包括指定字符,所述指定字符用于表示占位符节点或未命名节点;
所述的设备管理服务器和终端设备分别实现上述获取节点信息的方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。