如何通过REST API一次性获取ServiceNow中变更请求的CI依赖?
ServiceNow单接口查询变更关联CI依赖方案
完全可以通过单个REST接口完成全量查询,不需要分三次调用,核心是利用ServiceNow原生的*dot walking(点遍历)*关联查询能力,根据你要取的CI类型不同,有两种实现方式:
场景1:查询变更请求绑定的主CI
即change_request表自带cmdb_ci字段关联的唯一主CI,直接查询change_request表即可,接口示例如下:
/api/now/table/change_request?sysparm_query=number={CrNumber}&sysparm_fields=number,sys_id,cmdb_ci.sys_id,cmdb_ci.name,cmdb_ci.classification,cmdb_ci.operational_status
你可以根据自己需要的CI字段,在sysparm_fields参数里追加cmdb_ci.对应CI表字段名即可,无需额外调用CI表接口。
场景2:查询变更关联的所有受影响CI
即存储在task_ci关联表中的多条CI记录,直接查询task_ci关联表,通过点遍历关联变更编号过滤即可,接口示例如下:
/api/now/table/task_ci?sysparm_query=task.number={CrNumber}&sysparm_fields=task.number,ci_item.sys_id,ci_item.name,ci_item.class_name,ci_item.asset_tag
这个接口会直接返回指定变更下关联的所有CI的全量字段,不需要先查变更sys_id、再查关联表、再查CI表三次调用。
可选优化参数
- 追加
&sysparm_display_value=true可以直接返回字段的显示值,而非存储的sys_id,不需要额外做值映射 - 追加
&sysparm_limit=100可以限制返回的CI数量,避免关联CI过多导致接口响应慢
内容的提问来源于stack exchange,提问作者Himanshu sharma
相关产品推荐
相关产品推荐

