Camunda fetchAndLock API请求触发InvalidRequestException问题求助
错误原因
workerId参数类型错误:Camunda REST API要求workerId为字符串类型,你当前请求传入的是数字1,类型不匹配触发参数校验异常。- 接口使用逻辑错误:
/external-task/fetchAndLock接口的作用是拉取并锁定待处理的外部任务,请求体中的variables参数是用来指定需要从流程中拉取的已有变量名称列表,不是用来上传新变量的。你需要提交变量完成任务的场景,应该使用/external-task/{任务ID}/complete接口。 variables参数格式错误:就算是用fetchAndLock的变量过滤功能,variables也应该是字符串数组格式,而不是你现在写的变量值对象格式。
正确调用步骤
- 首先调整
fetchAndLock请求,拉取待处理任务:
请求地址:POST http://localhost:8080/engine-rest/external-task/fetchAndLock
请求体:
{ "workerId": "worker-1", "maxTasks": 100, "topics": [ { "topicName": "testingtopic", "lockDuration": 100000, "variables": ["a", "b", "id"] } ], "asyncResponseTimeout": 5000 }
调用成功后会返回锁定的外部任务详情,从中获取任务id字段的值,你提供的示例中对应的任务id为0623e6f7-4837-11ec-8c7e-02426d005d3a。
- 调用完成接口提交变量:
请求地址:POST http://localhost:8080/engine-rest/external-task/0623e6f7-4837-11ec-8c7e-02426d005d3a/complete
请求体:
{ "workerId": "worker-1", "variables": { "a": { "value": 1, "type": "long" }, "b": { "value": 2, "type": "long" }, "id": { "value": 1, "type": "long" } } }
完成上述操作即可正常处理外部任务,同时将变量提交到流程中。
内容的提问来源于stack exchange,提问作者newbie
相关产品推荐
相关产品推荐

