【发布时间】:2020-11-13 16:29:24
【问题描述】:
我正在尝试创建一个简单的 Camunda BPM 工作流,其中包含并行网关和如下补偿操作:
所有服务任务都配置为由 C# 程序执行的外部任务。该程序调用 API 上的fetchAndLock 方法来获取要执行的任务列表,然后在后台并行执行这些任务。我在使用这种方法时遇到了一些问题:
fetchAndLock 方法中的 Lock 似乎没有做任何事情,并且工作流引擎似乎不会等到所有获取的任务都被处理后,只要其中一个任务通过bpmnError'. Instead it immediately plans the execution of the compensating actions for the tasks it already received a complete` 调用并删除所有其他计划任务的实例,而不等待它们的结果。
这会导致以下问题:
- C# 程序继续执行未完成的任务,并在它们完成后尝试调用 API 上的
complete方法,但由于 Camunda 引擎已删除这些任务实例而失败并出现 404 错误。 - 永远不会调用这些任务的补偿操作,这会使业务流程处于无效状态。
我做错了什么?我对 BPMN 不是很熟悉,所以也许有更好的方法来设计这个过程。或者这是 Camunda 中的主要错误?
【问题讨论】:
标签: camunda