camunda 中的 Receivetask 未按预期工作

Sai*_*thi 5 spring camunda

我们在大多数项目中一直使用 camunda 7.4 版本以及 camunda-bpm-spring-boot-starter 1.1.0。

我们有一个项目,在 camunda 流中,我们尝试将消息发布到消息代理,该消息在内部由另一个系统使用,并将新消息重新发布到同一个消息代理。然后我们触发一个 receiveTask 来接收该消息并进一步处理。为了收听传入的消息,我们使用 org.springframework.amqp.core.MessageListener 并在 onMessage() 方法中为 receiveTask 定义消息关联。但是我们这样做会遇到以下错误

org.camunda.bpm.engine.MismatchingMessageCorrelationException:无法关联消息“ReceiveAmsharedResponse”:没有流程定义或执行与参数匹配

我们试图找出问题出在哪里?是在我们使用的camunda 版本中还是问题出在receiveTask 的使用上。我们尝试了https://docs.camunda.org/manual/7.4/reference/bpmn20/tasks/receive-task/ 中定义的所有方法,但没有成功。

对于 createMessageCorrelation 方法,我们得到了上述错误。对于其他方法,我们得到一个 NPE,因为 EventSubscription/Execution 对象为空。

示例 Camunda 流接收任务用法如下:

 <bpmn2:receiveTask id="ReceiveTask" name="Receive Task" messageRef="Message_06nl07f">
  <bpmn2:incoming>SequenceFlow_xyz</bpmn2:incoming>
  <bpmn2:outgoing>SequenceFlow_190m9nx</bpmn2:outgoing>
</bpmn2:receiveTask>
......
......
<bpmn2:message id="Message_06nl07f" name="Message" />
Run Code Online (Sandbox Code Playgroud)

和示例消息关联代码:

 class XYZ implements MessageListener {
 onMessage() {
    runtimeService.createMessageCorrelation("Message")
                .processInstanceBusinessKey(resourceId)
                .setVariable(ACTIVITY_RESULT, activityResult)
                .correlate();
 }
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激?

谢谢,维斯瓦纳特

Zel*_*don 2

关于给定的异常消息是:

org.camunda.bpm.engine.MismatchingMessageCorrelationException: Cannot correlate message 'ReceiveAmsharedResponse': No process definition or execution matches the parameters
Run Code Online (Sandbox Code Playgroud)

我假设您将消息与名称相关联ReceiveAmsharedResponse,但您为 ReceiveTask 定义了具有不同名称的消息。

将消息的定义更改为以下内容应该可行:

<bpmn2:message id="Message_06nl07f" name="ReceiveAmsharedResponse" />
Run Code Online (Sandbox Code Playgroud)