Нашли обходной путь -- перевесили listener на промежуточное событие (см. "Update 3" на
https://stackoverflow.com/questions/68850500/why-does-camunda-attempt-to-execute-a-task-listener-in-the-wrong-process-engine ). Камунда пока разбирается с этим поведением (см.
https://jira.camunda.com/browse/CAM-13829 ). Планировалось, что когда Камунда починит баг, промежуточное решение заменим на правильное.
Но после моего отпуска заказчик решил, что нужна несколько другая функциональность:
1. Когда запускается процесс в call activity, надо передать в ElasticSearch идентификатор запущенного процесса.
2. Запускаемый процесс должен находиться в отдельном движке и ничего не знать про ElasticSearch.
Стандартный механизм (spring eventing) не подходит. Стартовый listener на call activity не может знать идентификатор запущенного процесса, потому что когда listener вызывается, этот процесс еще не запущен.
Поэтому я сейчас выясняю, можно ли все это реализовать с помощью второго механизма реакции на события -- исторические события. По предварительным впечатлениям этот второй механизм лучше первого, потому что из одного движка можно следить за всеми событиями во всех процессах.