目录
1. 概述
这个文档介绍了如何使用Web Services和OneCMDB交互,这使得像Java这样的其他变成语言可以和OneCMDB交互。Web Services接口目的是要尽可能简单、实用和强大。
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(实例)之间的关联关系。

上面的模板和实例模型可以由下面的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范例
- Create/Update CI’s
有效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
用于查询OneCMDB中CI变更情况对象。
属性:
- 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日。