目录
- 1 概述
- 2 范例模型
- 3 Web Service 接口 (WSDL)
- 4 API 概述
- 5 Web Service 数据类型描述
1. 概述
这个文档介绍了如何使用Web Services和OneCMDB交互,这使得像Java这样的其他变成语言可以和OneCMDB交互。Web Services接口目的是要尽可能简单、实用和强大。
1.1. 一些OneCMDB概念
OneCMDB按照面向对象方式组织, 即对象从其他对象继承。这意味着所有配置项(CI)源于另外一个CI,所有CI都从一个已经存在的根派生。有两种风格的配置项:模板和实例,模板描述每个实例必须有什么属性、什么类型,也包含缺省值。实例包含模板中定义的属性对应的值。
- CI 都有唯一的ID(人类不可读的),而且是不能改变的),他和后端存储紧密相关。
- CI 具有唯一的别名。别名可以指定和修改,除非别名在别地地方使用。它经常用于OneCMDB XML定义中。
- CI 具有一个显示名称,它定义CI作为一行文字如何呈现。显示名称通常一个或多个属性值的串联,它在需要显示时被计算。这样好处是CI不必有一个具体的名称,它将随相应值的变化而改变。
- CI(模板和实例) (templates and instances) 可以在一个XML文档中描述,它可以从OneCMDB中导出,可以导入到OneCMDB中。
2. 范例模型
为了说明向OneCMDB提交的不同的查询和更新命令,定义了一个简单的带实例的模板模型,它用在所有范例中。
2.1. 模板模型
CI之间的继承用箭头表示。例如:NetworkDevice模板有CI模板中定义的所有属性,Router模板有NetworkDevice和CI的所有属性。
2.2. 实例模型
在此图中箭头表示CI(实例)之间的关联关系。
2.3. OneCMDB XML模型描述
上面的模板和实例模型可以由下面的XML文档定义。这个XML文档可以被导入到OneCMDB中。请注意这只是一个完整文档中的一部分。
<onemcdb> <templates> <!-- Definition of NetworkDevice Template --> <template alias=”NetworkDevice” displayName=”NetDevice ${primaryIp}> <derivedFrom><ref alias=”Ci”/></derivedFrom> <attribute attAlias=”primaryIp”> <simpleType>String</simpleType> </attribute> </template> <!-- Definiton of the Router Defines a Complex Attribute of Type Site and Reference Type Reference. It also defines the occurrence of values[0..1] meaning that it's not required to have site value but it can not have more than one site. Default policy are [1..1].--> <template alias=”Router”> <derivedFrom><ref alias=”NetworkDevice”/></derivedFrom> <attribute attAlias=”site”> <complexType> <ref alias="Site"/> <refType><ref alias="Reference"/></refType> </complexType> <policy> <minOccurs>0</minOccurs> <maxOccurs>1</maxOccurs> </policy> </attribute> </template> ... </templates> <instances> <!-- Definition of an Router instance that has a reference to Site S1 --> <Router alias=”R1”> <primaryIp>192.168.1.2<//primaryIp> <site><ref alias=”S1”/></site> </Router> <Site alias=”S1”> ... </Site> .... </instances> </onecmdb>
3. Web Service 接口(WSDL)
OneCMDB Core功能可以用Web Service访问,这使用户无需受编程语言限制与OneCMDB远程交互。下面的范例将展示如何使用PHP和Java实现交互。
Core 中像创建CI、更新CI、删除CI、查找CI、查询CI和查询CI变更历史功能是可用的。
其他OneCMDB 功能像任务和策略处理在服务没有实现。
本服务的WSDL描述,可以从 http://localhost:8080/webservice/onecmdb?wsdl 获取。
3.1. 设置Java环境
通过Java访问Web Service API可按照以下方法设置:
- 在classpath中包含以下Jar文件。这些文件可以在目录install/tomcat*/webapps/onecmdb-desktop/WEB-INF/lib下找到
- onecmdb-core-2.0.1.jar
- activation-1.1.jar
- commons-codec-1.3.jar
- commons-httpclient.jar
- commons-logging-1.0.4.jar
- jdom-1.0.jar
- jsr173_api-1.0.jar
- wsdl4j-1.6.1.jar
- wstx-asl-3.2.0.jar
- xfire-all-1.2.6.jar
然后,创建Web Service接口如下:
import org.onecmdb.core.utils.wsdl.IOneCMDBWebService; import org.onecmdb.core.utils.wsdl.OneCMDBServiceFactory; public class OneCMDBClient { public static void main(String argv[]) { try { // 创建web service接口 IOneCMDBWebService service = OneCMDBServiceFactory.getWebService("http://localhost:8080/webservice/onecmdb"); // 身份认证 String token = service.auth("admin", "123"); System.out.println("Authenticated token=" + token); // .... // 退出 service.logout(token); } catch (Exception e) { e.printStackTrace(); } } }
这里,提供了在System配置项的图形查询完整范例。
import org.onecmdb.core.utils.bean.CiBean; import org.onecmdb.core.utils.graph.query.GraphQuery; import org.onecmdb.core.utils.graph.query.constraint.AttributeValueConstraint; import org.onecmdb.core.utils.graph.query.selector.ItemOffspringSelector; import org.onecmdb.core.utils.graph.result.Graph; import org.onecmdb.core.utils.wsdl.IOneCMDBWebService; import org.onecmdb.core.utils.wsdl.OneCMDBServiceFactory; public class OneCMDBClient { public static void main(String argv[]) { try { // 创建web service接口 IOneCMDBWebService service = OneCMDBServiceFactory.getWebService("http://localhost:8080/webservice/onecmdb"); String token = service.auth("admin", "123"); System.out.println("Authenticated token=" + token); // 构成查询... GraphQuery query = new GraphQuery(); ItemOffspringSelector sel = new ItemOffspringSelector(); sel.setTemplateAlias("System"); // 添加约束... AttributeValueConstraint constraint = new AttributeValueConstraint(); constraint.setAlias("Name"); constraint.setOperation(AttributeValueConstraint.LIKE); constraint.setValue("Al%"); sel.applyConstraint(constraint); query.addSelector(sel); // 执行查询 Graph result = service.queryGraph(token, query); result.buildMap(); for (CiBean bean : result.fetchAllNodeOffsprings()) { System.out.println("System=" + bean.toStringValue("Name")); } // 退出 service.logout(token); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
3.1.1. 使用基本模型Java范例
4. API 概述
有效Web Services 函数有:
auth(String username, String pwd) throws Exception : String logout(String authToken) : void history(String auth, CiBean vBean, RfcQueryCriteria criteria) : RFCBean[] historyCount(String auth, CiBean vBean, RfcQueryCriteria criteria) : int search(String auth, QueryCriteria criteria) : CiBean[] searchCount(String auth, QueryCriteria criteria) : int query(String auth, String xPath, String attributes) : CiBean[] update(String auth, CiBean localBeans[], CiBean baseBeans[]) : IRfcResult findRelation(String auth, CiBean left, CiBean right) : String[] evalRelation(String auth, CiBean root, String relationPath, QueryCriteria crit) : CiBean[] evalRelationCount(String auth, CiBean root, String relationPath, QueryCriteria crit) : int queryGraph(String token, GraphQuery q) : Graph
4.1. Auth函数
语法:
- auth(String username, String pwd) throws Exception : String
在OneCMDB中认证一个用户。返回的令牌在所有方法中使用,要结束会话则使用Logout函数。如果用户无法通过身份验证抛出异常。
4.2. GraphQuery函数
语法:
- graphQuery(String auth, GraphQuery) : Graph
这是OneCMDB目前支持的最先进的查询方法。它可以查询源自不同模板的CI以及这些CI之间的关系,它也可以对每个模板支持分页和条件搜索(如属性值)。
欲了解更多信息和示例,请参阅 WSDL的图形查询(本站翻译文章:[译]WSDL的图形查询)
4.3. Query函数
语法:
- query(String auth, String xPath, String attributes) : CiBean[]
使用XPath语法查询OneCMDB,返回结果总是CiBean数组,见下文的CiBean数据类型的定义。
通用XPath:
- /template/* – 列出所有模板。
- /template/<alias> – 获取特定别名的模板。
- /instance/<template-alias>/* – 列出某个模板的所有实例。
- /instance/<template-alias>/<instance-alias> -获取特定的实例。
attributes参数可用于指定包含在结果CI中属性。它通过指定属性路径控制检索索引的深度。
范例
query(“xxx”, “/instance/Router/*”, “primaryIp site site/supervisor”);
将返回所有路由器实例和应用的Site、Person配置项实例。
4.4. Update 函数
语法:
- update(String auth, CiBean localBeans[], CiBean baseBeans[]) : IRfcResult
方法用于在OneCMDB中创建、更新、删除CI。这个方法有三个参数:auth会话的令牌、bean本地集合和bean的基准集合。CI的基准集合用于决定查询时哪些CI有效,CI的本地集合用户修改已经存在的CI或者新建不存在的CI。这是一个CVS做法,基准集合是签出点,本地集合是当前修改的条目。它实现了三方比较,该方法可以检测到冲突。目前只实现了删除CI和属性检测。(译者注:localBeans即bean本地集合相当于新值,baseBeans即bean基准集合相当于旧值。即在baseBeans上修改为localBeans。)
4.5 Search(Count) 函数
语法:
- search(String auth, QueryCriteria criteria) : CiBean[]
- searchCount(String auth, QueryCriteria criteria) : int
在OneCMDB中搜索符合某些条件的CI。searchCount函数有同样的参数但只返回搜索结果中命中数量(忽略maxResult属性),它对实现大数据集的分页非常有用。search方法比query方法快一些,但是需要更复杂的参数。
典型搜索条件是:
- 针对值、别名、描述的文本搜索。
- 特定模板的实例。
search函数也支持结果集的分页,通过使用maxResult和firstResult属性组合实现,见下面范例。
4.6 History(Count) 函数
语法:
- history(String auth, CiBean vBean, RfcQueryCriteria criteria) : RFCBean[]
- historyCount(String auth, CiBean vBean, RfcQueryCriteria criteria) : int
查看CI的变更历史记录。OneCMDB对CI所有变化都进行跟踪,并存储在一个RFC对象中。这些对象可以使用这个函数检索出来。
4.7 Relation 函数
语法:
- findRelation(String auth, CiBean left, CiBean right) : String[]
- evalRelation(String auth, CiBean root, String relationPath, QueryCriteria crit) : CiBean[]
- evalRelationCount(String auth, CiBean root, String relationPath, QueryCriteria crit) : int
注意:这些函数还处于alpha状态和改变中。findRelation方法在OneCMDB 1.3.0中未实现。
Relation 函数用于浏览模型关系。一旦关系路径是已知的,就可能从一个指定的关系路径源获取关联的实例。关系路径语法如下:
- direction cmd delimiter
这里
- direction
- > 正向
- < 反向
- cmd
- $attr{alias} – 从指定别名属性出发正向关联
- $template{alias} – 反向,意味着CI是从指定别名模板的实例关联
- delimiter
- 管道标志 |
范例 – 关联一个Person实例到一个Router实例
<$template{Site}|<$template{Router}
范例 – 关联一个Router实例到Person属性
>$attr{site}|>$attr{supervisor}
4.8 Logout 函数
语法:
- logout(String authToken) : void
终止会话令牌。
4.9 范例
注意: 所有的例子使用上面描述的范例模型。
4.9.1 PHP范例
下面的PHP范例使用PHP5内建SOAP扩展,它默认没有启用,要启用它请在PHP网站http://www.php.net 查找更多信息。(Windows系统中通过在php.ini文件中添加extension=php_soap.dll启用它。)
4.9.1.1 范例 – 列出路由器的所有实例
<?php // 指定WSDL URL $wsdl_url = "http://localhost:8080/webservice/onecmdb?wsdl"; // 创建Soap 客户端 $client = new SoapClient($wsdl_url); // 通过OneCMDB身份认证 $token = $client->auth(“admin”, “123”); // 查询路由器实例 $routers = $client->query($token, “/instance/Router/*”, ”*”); // 退出 $client->logout($token); // 显示转储结果 print_r($routers); ?>
4.9.1.2 范例 – 搜索某个属性值
<?php // 范例 - 搜索指定属性值的CI // ======================================================== // 使用PHP5 内部soap客户端创建Soap客户端 $wsdl_url = "http://localhost:8080/webservice/onecmdb?wsdl"; $client = new SoapClient($wsdl_url); try { $token = $client->auth("admin", "123"); } catch (SoapFault $e) { print("Auth Error:::: $e"); } // 设置搜索条件 $criteria->offspringOfAlias = "Router"; $criteria->textMatchValue = "true"; $criteria->text = "192.168.1.2"; // 映射到正确的命名空间 $arg1 = new SoapVar($criteria, 0, "QueryCriteria", "http://model.internal.core.onecmdb.org"); // 获取搜索结果数量 $result = $client->searchCount($token, $arg1); print("Matched : $result CI"); print("<br/>"); // 搜索所有符合条件的CI $result = $client->search($token, $arg1); // 显示结果 // 注意:如果返回数组中只有一个条目,它将不再是数组! if (is_array($result->CiBean)) { print("<ul>"); foreach ($result->CiBean as $bean) { print("<li>"); print("Alias=$bean->alias displayName=$bean->displayName"); print("</li>"); } print("</ul>"); } else { $bean = $result->CiBean; print("Alias=$bean->alias displayName=$bean->displayName"); } // 这样退出也不错 $client->logout($auth); ?>
4.9.1.3 范例 – 添加一个配置项模板和实例
<?php // 该函数创建一个实例对象 function getInstance($alias) { $instance->alias = $alias; $instance->derivedFrom = "NewTemplate"; $attrValue->alias = "a1"; $attrValue->value = "value for $alias"; $instance->attributeValues[0] = new SoapVar($attrValue, 0, "ValueBean", "http://bean.utils.core.onecmdb.org"); // 映射到正确的命名空间 $soapArg = new SoapVar($instance, 0, "CiBean", "http://bean.utils.core.onecmdb.org"); return($soapArg); } // 检查时间 $start = time(); /** * 范例 - 添加一个配置项模板和实例 */ $wsdl_url = "http://localhost:8080/webservice/onecmdb?wsdl"; $client = new SoapClient($wsdl_url); try { $token = $client->auth("admin", "123"); } catch (SoapFault $e) { print("Auth Error:::: $e"); } $template->alias = "NewTemplate"; $template->derivedFrom = "Root"; $template->displayNameExpression = "Test PHP CI"; $template->description = "Testing template creating from PHP"; $template->template = "true"; $attr1->alias = "a1"; $attr1->type = "xs:string"; $attr1->description = "Test attribute"; $template->attributes[0] = new SoapVar($attr1, 0, "AttributeBean", "http://bean.utils.core.onecmdb.org"); // 映射到正确的命名空间 $arg1[0] = new SoapVar($template, 0, "CiBean", "http://bean.utils.core.onecmdb.org"); // 创建100个实例 for ($i = 0; $i < 100; $i++) { // 产生实例 $arg1[] = getInstance("instance-$i"); } $count = count($arg1); print("<h1>Example - Create/Delete $count CI:s</h1>"); $updateStart = time(); // 创建所有配置项 $result = $client->update($token, $arg1, Null); $updateStop = time(); $dtUpdate = $updateStop-$updateStart; $stop = time(); $dt = $stop-$start; print("<h2>Create/Update Request took $dt [s], call to server $dtUpdate [s]</h2>"); // 删除所有已经创建的配置项 $startDelete = time(); $result = $client->update($token, Null, $arg1); $stopDelete = time(); $dtDelete = $stopDelete - $startDelete; print("<h2>Delete Request ($result->rejected) took $dtDelete [s]</h2>"); ?>
4.9.1.4 范例 – 显示某个配置项历史
<?php function showRFC($rfc) { print("<td>$rfc->ts</td>"); print("<td>$rfc->issuer</td>"); print("<td>$rfc->summary</td>"); } /** * 范例 - 显示CI历史 */ $wsdl_url = "http://localhost:8080/webservice/onecmdb?wsdl"; $client = new SoapClient($wsdl_url); try { $token = $client->auth("admin", "123"); } catch (SoapFault $e) { print("Auth Error:::: $e"); } try { // 请求最后的变更 $rfcQuery->fetchAttributes = "true"; $rfcQuery->maxResult = "20"; $rfcQuery->descendingOrder = "true"; // 绑定参数的命名空间 $arg1 = new SoapVar($rfcQuery, 0, "RfcQueryCriteria", "http://ccb.internal.core.onecmdb.org"); $result = $client->history($token, Null, $arg1); // 用表格显示结果 print("<table border=\"1\">"); print("<tr>"); print("<th>Date</th>"); print("<th>Issuer</th>"); print("<th>Summary</th>"); print("</tr>"); // 注意:如果返回数组中只有一个条目,它将不再是数组! if (is_array($result->RFCBean)) { foreach($result->RFCBean as $rfc) { print("<tr>"); showRFC($rfc); print("</tr>"); } } else { print("<tr>"); showRFC($result->RFCBean); print("</tr>"); } print("</table>"); } catch (SoapFault $e) { print("Auth Error:::: $e"); } ?>
4.9.2 使用XFire客户端的Java语言范例
4.9.2.1 范例 – 转储配置项模板到XML
/** * <code>范例1</code> 取得所有配置项模板,并生成XML输出 */ public class Example1 { public static void main(String argv[]) { // 注意: 这里不需要?wsdl String url = "http://localhost:8080/webservice/onecmdb"; String username = "admin"; String pwd = "123"; String path = "/template/*"; try { // 创建服务 Service serviceModel = new ObjectServiceFactory().create(IOneCMDBWebService.class); // 创建IOneCMDBWebService代理实例 IOneCMDBWebService service = (IOneCMDBWebService) new XFireProxyFactory().create(serviceModel, url); // 通过OneCMDB身份认证 String token = service.auth(username, pwd); // 查询所有模板 CiBean[] beanArray = service.query(token, path, "*"); List<CiBean> beans = Arrays.asList(beanArray); // 产生所有模板的XML文本到标准输出 XmlGenerator gen = new XmlGenerator(); gen.setBeans(beans); gen.transfer(System.out); } catch (Exception e) { System.err.println("ERROR:" + e.toString()); e.printStackTrace(); } } }
4.9.2.2 范例 – 从XML文件导入配置项
/** * <code>范例2</code> 导入XML文件(myModel.xml)并更新OneCMDB * */ public class Example2 { public static void main(String argv[]) { String url = "http://localhost:8080/webservice/onecmdb"; String username = "admin"; String pwd = "123"; String myFile = "file:myModel.xml"; try { Service serviceModel = new ObjectServiceFactory().create(IOneCMDBWebService.class); IOneCMDBWebService service = (IOneCMDBWebService) new XFireProxyFactory().create(serviceModel, url); String token = service.auth(username, pwd); XmlParser provider = new XmlParser(); provider.addURL(myFile); // 解析XML文件 CiBean beans[] = provider.getBeans().toArray(new CiBean[0]); // 更新OneCMDB. IRfcResult result = service.update(token, beans, null); // 检查是否更新成功 if (result.isRejected()) { System.out.println("Error importing, cause : " + result.getRejectCause()); } else { System.out.println("Import completed"); } } catch (Exception e) { System.err.println("ERROR:" + e.toString()); e.printStackTrace(); } } }
4.9.2.3 范例 – 搜索配置项并分页
/** * <code>范例3</code> 在OneCMDB中搜索实例并分页 */ public class Example3 { public static void main(String argv[]) { String url = "http://localhost:8080/webservice/onecmdb"; String username = "admin"; String pwd = "123"; try { Service serviceModel = new ObjectServiceFactory().create(IOneCMDBWebService.class); IOneCMDBWebService service = (IOneCMDBWebService) new XFireProxyFactory().create(serviceModel, url); String token = service.auth(username, pwd); int pageSize = 5; int offset = 0; // 列出所有路由器 QueryCriteria criteria = new QueryCriteria(); criteria.setOffspringOfAlias("Router"); criteria.setMatchCiInstances(true); criteria.setMaxResult(pageSize); int count = service.searchCount(token, criteria); System.out.println("Total router instances : " + count); // 搜索配置项并分页 while(offset < count) { criteria.setFirstResult(offset); CiBean[] beanArray = service.search(token, criteria); System.out.println("Retrieved " + beanArray.length + " routers"); offset += pageSize; } } catch (Exception e) { System.err.println("ERROR:" + e.toString()); e.printStackTrace(); } } }
4.9.2.4 范例 – 删除配置项
/** * <code>范例4</code> 从OneCMDB中删除CI */ public class Example4 { public static void main(String argv[]) { String url = "http://localhost:8080/webservice/onecmdb"; String username = "admin"; String pwd = "123"; try { Service serviceModel = new ObjectServiceFactory().create(IOneCMDBWebService.class); IOneCMDBWebService service = (IOneCMDBWebService) new XFireProxyFactory().create(serviceModel, url); String token = service.auth(username, pwd); // 创建10个路由器实例 List<CiBean> list = new ArrayList<CiBean>(); for (int i = 0; i < 10; i++) { list.add(new CiBean("Router", "ri-" + i, false)); } // 更新OneCMDB IRfcResult result = service.update(token, list.toArray(new CiBean[0]), null); if (result.isRejected()) { System.out.println("Can't add instances cause " + result.getRejectCause()); System.exit(-1); } System.out.println("Instances added"); // 现在删除这些实例 // 注意作为最后一个参数的列表 result = service.update(token, null, list.toArray(new CiBean[0])); if (result.isRejected()) { System.out.println("Can't delete instances cause " + result.getRejectCause()); System.exit(-1); } System.out.println("Instances deleted"); } catch (Exception e) { System.err.println("ERROR:" + e.toString()); e.printStackTrace(); } } }
4.9.2.5 范例 – 查看最近修改的配置项ed CI.
译者注:英文Wiki文章这里并没有代码
5 Web Service 数据类型描述
Web Service接口中使用参数对象简介,每个数据类型更详细描述可以在WSDL找到。
5.1 CiBean
范围:输入和输出
命名空间 http://bean.utils.core.onecmdb.org
定义配置项,包含属性和值的列表
属性:
- id
- 配置项后端ID,只读。
- alias
- CI的别名
- derivedFrom
- 采用模板的别名
- template
- 是模板还是实例
- description
- 配置项的详细描述
- displayNameExpression
- 显示名称的表达式,没有经过计算的。
- displayName
- 经过计算的显示名称。(只读)
- attributes
- CI所有继承的、自身属性列表。当CI是一个模板时有值。
- attributeValues
- CI所有属性的值列表。
5.2 AttributeBean
范围:输入和输出
命名空间:http://bean.utils.core.onecmdb.org
定义CI的属性定义。
属性:
- alias
- 属性的别名。
- displayName
- 属性的显示名称。
- complexType
- 如果 complexType 值为 true,其之就是到另外CI的引用(别名)。
- type
- 类型别名。
- refType
- 引用类型别名,如果没有需要的引用类型,则为null。
- maxOccurs
- 该属性出现最多次数。
- minOccurs
- 该属性出现最少次数。
- description
- 属性的详细描述。
- id
- 后端ID。(只读)
- derived
- 属性是否在这个模板中定义。(只读)
5.3 ValueBean
范围:输入和输出
命名空间:http://bean.utils.core.onecmdb.org
定义CI的值。
属性::
- id
- 后端ID,只读。
- alias
- 属性的别名
- value
- 实际值,可以是复杂类型,那意味着它是别名。
- complexValue
- 指示值是否是复杂类型。
- beanValue
- 值是另外一个 CiBean。
5.4 RfcQueryCriteria
范围: 输入
命名空间:http://ccb.internal.core.onecmdb.org
属性:
- rfcClass
- 查询中应该包含一个RFC类型(类),这个变更类有如下这些类可用(如果没有设置将查询所有变更):
- org.onecmdb.core.internal.ccb.rfc.RFCNewCi
- org.onecmdb.core.internal.ccb.rfc.RFCNewAttribute
- org.onecmdb.core.internal.ccb.rfc.RFCDestroy
- org.onecmdb.core.internal.ccb.rfc.RFCModifyAlias
- org.onecmdb.core.internal.ccb.rfc.RFCModifyAttributeType
- org.onecmdb.core.internal.ccb.rfc.RFCModifyAttributeReferenceType
- org.onecmdb.core.internal.ccb.rfc.RFCModifyDerivedAttributeValue
- org.onecmdb.core.internal.ccb.rfc.RFCModifyAttributeValue
- org.onecmdb.core.internal.ccb.rfc.RFCModifyDescription
- org.onecmdb.core.internal.ccb.rfc.RFCModifyIsTemplate
- org.onecmdb.core.internal.ccb.rfc.RFCModifyDescription
- org.onecmdb.core.internal.ccb.rfc.RFCModifyDisplayNameExpression
- org.onecmdb.core.internal.ccb.rfc.RFCModifyMaxOccurs
- org.onecmdb.core.internal.ccb.rfc.RFCModifyMinOccurs
- fromDate
- 变更发生的起始时间。
- toDate
- 变更发生的结束时间。
- descendingOrder
- 按时间对结果排序,缺省为false。
- maxResult
- 每次返回多少变更记录。和firstResult一起使用实现分页。
- firstResult
- 每次跳过多少变更记录。和maxResult一起使用实现分页。
- fetchAttributes
- 查询CI所有属性变更,缺省只查询CI的变更。
- attributeAlias
- 查询指定别名的属性的变更。
5.5 RFCBean
范围: output
命名空间:http://wsdl.utils.core.onecmdb.org
为查询CI历史时的结果。
- id
- 对应RFC后端ID。
- issuer
- 提交变更的用户。
- ts
- 发生变更的时间。
- summary
- 变更摘要。
- transactionId
- 封闭事务的后端ID。
5.6 QueryCriteria
范围: 输入
命名空间:http://model.internal.core.onecmdb.org
用于在OneCMDB中查询CI的对象。支持分页和自由文本搜索。
属性描述:
- offspringOfId
- 只搜索某ID的后代。
- offspringOfAlias
- 只搜索某别名的后代。
- matchCiTemplates
- 匹配CI模板。
- matchCiInstances
- 匹配CI 实例。
- matchAttributeTemplates
- 匹配属性模板,意味着属性的定义。
- matchAttributeInstances
- 匹配属性实例,意味着属性的值。
- maxResult
- 返回总数。
- firstResult
- 跳过条数直到firstResult值对应的记录。
- matchAttribute
- 在属性中匹配
- matchCi
- 在CI中匹配
- text
- 搜索的自由文本,将使用通配符前后匹配。
- textMatchAlias
- 在别名上匹配文本。
- textMatchValue
- 在值上匹配文本。
- textMatchDescription
- 在描述上匹配文本。
5.7 IRfcResult
范围: 输出
命名空间:http://core.onecmdb.org
执行更新命令之后的结果。
属性描述:
- rejected
- 反映一个提交的变更是否被拒绝。如果被拒绝,rejectCause将包含一个拒绝原因。
- rejectCause
- 拒绝的主要原因,如果没有拒绝则返回null。
原文见:http://www.onecmdb.org/wiki/index.php?title=OneCMDB_Web_Services_V2.0,由OneCMDB中文站翻译,完成于2010年01月12日。





