基于Scripted REST API实现ServiceNow与第三方应用集成的步骤咨询
ServiceNow与第三方应用集成通用步骤
- 需求梳理与规划:明确集成的业务目标(比如数据同步、流程触发、双向交互),敲定数据字段映射规则、交互频率、权限控制要求,以及异常处理机制(重试、告警等)。
- 选择集成方式:根据需求选适配方案,比如ServiceNow Store的原生连接器、REST/SOAP API、MID Server(针对内网第三方系统)、事件管理集成等。
- 配置认证机制:按第三方系统支持的方式配置,常用的有OAuth2.0、Basic Auth、API Key、SAML等,在ServiceNow的
System OAuth或Credentials模块创建对应凭证。 - 搭建集成通道:
- 原生连接器:直接安装对应应用,按向导配置第三方系统地址、凭证、字段映射。
- API方式:在ServiceNow或第三方系统中配置API端点,设置请求方法、请求头、参数等。
- 字段映射与数据转换:用ServiceNow的
Transform Maps(导入数据场景)或脚本处理字段映射,搞定数据格式转换(日期、枚举值对应等),确保双方数据兼容。 - 测试集成链路:分阶段验证:先测认证连通性,再测单条数据交互,最后测批量/高并发场景,确认数据准确、流程触发正常,异常处理符合预期。
- 上线与监控:正式上线后,用ServiceNow的
System Log、Integration Hub Health或第三方工具跟踪集成状态,设置告警规则,及时处理失败任务。
采用Scripted REST API实现集成的具体步骤
1. 在ServiceNow中创建Scripted REST API
- 进入
System Web Services > Scripted REST APIs,点击New。 - 填写基本信息:名称、API ID(唯一标识,用于端点路径)、描述,勾选
Requires authentication并选择已配置的认证方式(OAuth/Basic Auth等)。 - 保存后,在该API下创建
Resource(具体端点):点击New,填写资源名称、HTTP方法(GET/POST/PUT/DELETE)、相对路径(比如/incidents)。
2. 编写资源处理脚本
在Resource的Script标签页编写逻辑,以下是常用场景示例:
- POST请求创建事件
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) { // 获取第三方传入的请求体 var requestBody = request.body.data; // 校验必填字段 if (!requestBody.short_description || !requestBody.caller_id) { response.setStatus(400); response.setBody({error: "缺少必填字段:short_description或caller_id"}); return; } // 创建ServiceNow事件记录 var incidentGR = new GlideRecord('incident'); incidentGR.initialize(); incidentGR.short_description = requestBody.short_description; incidentGR.caller_id = requestBody.caller_id; // 需传入用户sys_id或可匹配的字段值 if (requestBody.description) incidentGR.description = requestBody.description; var incidentSysId = incidentGR.insert(); // 返回响应 response.setStatus(201); response.setBody({ success: true, incident_sys_id: incidentSysId, number: incidentGR.number }); })(request, response);
- GET请求查询事件
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) { // 获取请求参数 var incidentNumber = request.queryParams.number; if (!incidentNumber) { response.setStatus(400); response.setBody({error: "请提供事件编号参数number"}); return; } // 查询事件记录 var incidentGR = new GlideRecord('incident'); if (incidentGR.get('number', incidentNumber)) { var incidentData = { number: incidentGR.number, short_description: incidentGR.short_description, state: incidentGR.state.getDisplayValue(), caller_id: incidentGR.caller_id.getDisplayValue(), sys_id: incidentGR.sys_id }; response.setBody(incidentData); } else { response.setStatus(404); response.setBody({error: "未找到对应事件"}); } })(request, response);
3. 配置API权限
在Scripted REST API的Security标签页,设置允许访问的角色(比如web_service_access_only或自定义角色),确保只有授权的第三方系统能调用。
4. 测试Scripted REST API
- 用Postman、curl等工具测试:构造请求URL
https://<你的ServiceNow实例名>.service-now.com/api/<API ID>/<Resource相对路径>,添加认证头后发送请求,验证响应是否符合预期。 - 在ServiceNow的
System Log中查看脚本执行日志,排查错误。
5. 第三方系统对接
- 第三方系统按照ServiceNow生成的API文档(在Scripted REST API页面点击
Generate API Documentation获取),配置请求地址、认证信息、请求体格式,实现调用逻辑。 - 双方约定异常处理规则:比如请求失败的重试次数、错误码对应处理方式。
内容的提问来源于stack exchange,提问作者Madhuri
相关产品推荐
相关产品推荐

