Как указать порядок казни в параллельном шлюзе с камундами? - PullRequest
0 голосов
/ 08 мая 2018

Для моих интеграционных тестов я хотел бы указать точный порядок в путях выполнения параллельного шлюза. Я не хочу, чтобы параллельные пути выполнялись одновременно, но последовательно. Есть ли способ достичь этого с помощью Камунды?

Я уже пытался замедлить один путь, откладывая ответ на смоделированный сервисный вызов, но поскольку не всегда используется смоделированный сервисный вызов, это решение не всегда работает.

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

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Если все исходящие потоки помечены как выполняемые асинхронно исполнителем задания, этого можно достичь, включив приоритетное получение задания (свойство jobExecutorAcquireByPriority в ProcessEngineConfiguration) и назначив явные приоритеты этим задачам.

Это задокументировано в руководстве пользователя на https://docs.camunda.org/manual/7.8/user-guide/process-engine/the-job-executor/#configure-the-process-engine-for-job-priorities

0 голосов
/ 09 мая 2018

Это невозможно. В двигателе камунды не гарантируется, какой поток последовательности берется на параллельном шлюзе.

В любом случае в камуфдере нет реального параллелизма, поскольку каждый поток выполняется последовательно (экземпляр процесса однопоточный). Это означает, что если первый поток взят, он выполняется до тех пор, пока не будет достигнута точка сохранения (состояние ожидания) и транзакция будет зафиксирована. Это может быть, например, пользовательская задача или любая другая активность, помеченная asyncBefore или asyncAfter.

После достижения этого состояния ожидания выполняется другой поток последовательности.

Для получения дополнительной информации о транзакциях в камунде, пожалуйста, прочитайте документацию о Транзакциях в процессах

...