我们在大多数项目中一直使用 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)
任何帮助,将不胜感激?
谢谢,维斯瓦纳特
关于给定的异常消息是:
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)
| 归档时间: |
|
| 查看次数: |
3256 次 |
| 最近记录: |