Развертывания
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
Прежде чем процесс (или кейс, или решение) может быть выполнен процессным движком, он должен быть развернут (deployed). Развертывание — это логическая сущность, которая группирует несколько ресурсов, разворачиваемых вместе. Развертывания могут выполняться программно через Java API или REST API, а также декларативно для ресурсов Process Application. В этом разделе рассматриваются продвинутые концепции развертывания.
Развертывания в кластерном сценарии
Перед тем как процессный движок начинает выполнять развертывание, он пытается получить эксклюзивную блокировку строки в таблице ACT_GE_PROPERTY. Если процессному движку удаётся успешно получить блокировку, он начинает развертывание и удерживает эксклюзивную блокировку на всё время выполнения операции развертывания.
Если развертывание одних и тех же ресурсов выполняется одновременно на нескольких узлах в кластерном сценарии, полученная эксклюзивная блокировка гарантирует, что механизм фильтрации дубликатов работает корректно. В противном случае параллельные развертывания могут привести к появлению нескольких версий одного и того же определения процесса.
Кроме того, эксклюзивная блокировка гарантирует, что несколько определений (например, определений процессов) с одинаковым ключом не получат одну и ту же версию при одновременном развертывании, что может приводить к сбоям и непредсказуемому поведению. Следует отметить, что в базе данных отсутствует уникальное ограничение, проверяющее уникальность определения.
Как следствие, эксклюзивная блокировка обеспечивает последовательный порядок развертываний.
По умолчанию получение эксклюзивной блокировки включено. Если это поведение нежелательно, его можно отключить, установив флаг конфигурации процессного движка с именем deploymentLockUsed в значение false.
|
Следует учитывать, что база данных H2 не поддерживается в кластерном сценарии. Процессный движок не создаёт эксклюзивные блокировки, так как H2 по умолчанию использует блокировки на уровне таблиц, что может приводить к взаимоблокировкам (deadlocks), если команда развертывания должна получить новый Id с помощью |
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org