Корреляция сообщения в multiple подпроцессе

коллеги, привет!

есть примерно вот такой процесс:

дано:
создается множественное исполнение подпроцесса (согласно числу элементов в коллекции)
внутри подпроцесса receive task, каждый экземпляр подпроцесса содержит в себе локальную переменную executor, каждая из которых имеет уникальное значение.

отправляю в REST API вот такой запрос:

{
	"messageName" : "receive",
	"processInstanceId": "878095dc-8d6f-11ec-ac13-c6f88cda0584",
	"localCorrelationKeys" : 
		{
    	"executor" : {"value" : 2, "type": "Long"}
	}
}

в ответ мне приходит такое (система не находит подходящие для доставки экземпляры процесса):

{
    "type": "RestException",
    "message": "org.camunda.bpm.engine.MismatchingMessageCorrelationException: Cannot correlate message 'receive': No process definition or execution matches the parameters"
}

если убираю localCorrelationKeys, то получаю другую ошибку (под такое сообщение подпадают три экзекьюшена):

{
    "type": "RestException",
    "message": "org.camunda.bpm.engine.MismatchingMessageCorrelationException: ENGINE-13031 Cannot correlate a message with name 'receive' to a single execution. 3 executions match the correlation keys: CorrelationSet [businessKey=null, processInstanceId=5f893c07-8d72-11ec-ac13-c6f88cda0584, processDefinitionId=null, correlationKeys=null, localCorrelationKeys=null, tenantId=null, isTenantIdSet=false, isExecutionsOnly=false]"
}

сломал уже голову на этой проблеме, помогите )))

Добрый день!

Пришлите, пожалуйста, модель процесса и скриншот из Camunda Cockpit с переменными экземпляра процесса (локальными переменными).

@Mstislav

скриншот кокпита:

модель процесса не дает загрузить, выводится ошибка

Судя по скриншоту - переменная executor относится к скоупу подпроцесса, а не к скоупу Receive Task.

Попробуйте сделать ее маппинг в задачу - в Input/Output задачи указать:

  • Local Variable Name: executor
  • Variable Assignment Type: String or Expression
  • Variable Assignment value: ${ executor }

Затем заново провести тест.

1 лайк