Camunda Http-Connector非200/201状态码创建Incident配置方案咨询
Camunda 无Java开发权限下接口状态码校验自动生成Incident实现方案
方案1:脚本任务内直接抛出异常(最简便,适配现有配置)
你已经为脚本任务开启了Asynchronous Before属性,只需要在原有调用web service的脚本末尾追加状态码校验逻辑,不符合条件时主动抛出异常,Camunda异步作业执行器捕获异常后会自动生成符合要求的Incident,无需额外配置其他节点。
Groovy脚本示例(也可替换为你正在使用的JavaScript等其他脚本语言):
// 原有调用web service的逻辑,此处假设你已拿到响应状态码并存入statusCode变量 // 状态码校验逻辑 if (statusCode != 200 && statusCode != 201) { // 自定义异常信息会直接展示在Incident详情中 throw new RuntimeException("接口调用异常,响应状态码:" + statusCode) }
方案2:排他网关分支+手动创建Incident(适配需要额外失败分支逻辑的场景)
如果状态码校验失败后需要执行其他处理逻辑(如重试、通知等),可通过流程节点配置实现:
- 在原有调用web service的脚本任务后新增排他网关,设置两个分支的判断条件:
- 正常分支:
${statusCode == 200 || statusCode == 201},指向后续正常业务节点 - 异常分支:
${statusCode != 200 && statusCode != 201},指向异常处理节点
- 正常分支:
- 异常分支新增脚本任务,调用Camunda内置API手动生成Incident,示例脚本:
def runtimeService = execution.getProcessEngineServices().getRuntimeService() // 自定义Incident类型、关联执行ID、异常描述 runtimeService.createIncident("web_service_failure", execution.getId(), "接口调用失败,状态码:" + statusCode)
注意事项
- 上述方案依赖的
execution内置对象、脚本调用引擎API能力均为Camunda原生提供,无需额外部署Java代码 - 确保你使用的脚本语言(Groovy/JavaScript等)已在服务端预启用,主流Camunda发行版默认均已启用Groovy、JavaScript支持
内容的提问来源于stack exchange,提问作者SNO
相关产品推荐
相关产品推荐

