You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ServiceNow CMDB调用API获取业务应用CI Relationships数据咨询

ServiceNow CMDB 获取指定业务负责人所属业务应用CI关系数据方案

问题根因

你之前调用cmdb_rel_type表的思路有误:cmdb_rel_type是存储关系类型元数据的表,仅保存「依赖于」「包含」「被使用」这类关系的定义信息,不存储具体CI之间的关联记录,所以无法获取到业务应用的实际关系数据。

正确实现步骤

你前两步的操作是正确的,只需调整第三步的调用逻辑即可:

  • 第一步:通过邮箱查询sys_user表获取业务负责人的sys_id,接口逻辑无需调整
    GET https://xxx.service-now.com/api/now/table/sys_user?sysparm_query=email%3D{xxxx.com}&sysparm_limit=1
  • 第二步:通过负责人ID过滤cmdb_ci_business_app表,获取名下所有业务应用CI的sys_id列表,接口逻辑无需调整
    GET https://xxx.service-now.com/api/now/table/cmdb_ci_business_app?sysparm_query=owned_by%3D{owner_sys_id}&sysparm_limit=10
  • 第三步:调用存储实际CI关联关系的cmdb_rel_ci表,查询对应业务应用的所有关系记录。该表核心字段为parent(父CI ID)、child(子CI ID)、type(关联关系类型,对应cmdb_rel_type表记录),调用示例如下:
    要获取单个业务应用(ID为{app_sys_id})的全部关联关系(对应UI上CI Relationships标签页的全量数据),调用:
    GET https://xxx.service-now.com/api/now/table/cmdb_rel_ci?sysparm_query=parent%3D{app_sys_id}%5EORchild%3D{app_sys_id}&sysparm_limit=100&sysparm_display_value=true

参数说明

  • 查询条件parent={app_sys_id}^ORchild={app_sys_id}:匹配该业务应用作为父CI或子CI的所有关联记录,和UI展示的内容完全一致
  • 可选添加sysparm_display_value=true参数:可直接返回关联CI的显示名称、关系类型的显示名,无需额外调用接口转换sys_id
  • 如需过滤特定类型的关联关系,可在查询条件后追加^type={rel_type_sys_id}指定关系类型ID即可

可选优化方案

如果不需要单独保留业务应用列表,也可以通过关联查询一步获取结果,将cmdb_rel_ci表与cmdb_ci_business_app表关联,直接过滤owned_by字段,适合批量查询场景。

内容的提问来源于stack exchange,提问作者Idan Taler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:54:02