Версионирование бизнес-процессов
Общие сведения
Схема бизнес-процесса, индексируемые переменные и назначения выбранного процесса теперь отображаются с привязкой к конкретной версии.
Новая версия процесса автоматически создается при каждой публикации черновика модели бизнес-процессов, если в черновике были какие-либо изменения по сравнению с опубликованной моделью.
Просмотр актуальной версии и списка всех версий доступен при наведении курсора на имя бизнес-процесса и нажатии на кнопку
. В списке отображаются последние 5 версий, просмотр всего перечня доступен по кнопке "Показать все" с возможностью выбора версий и их сравнения.
Версия, отображающаяся в режиме черновика — это актуальная в момент редактирования версия. При публикации черновика произойдет автоматический переход на только что созданную новую версию.
Примечания:
При выключенном режиме черновика, отображаемую версию можно поменять при помощи выпадающего списка, в котором отображаются последние 5 версий.
При включенном режиме черновика выбор версии недоступен - происходит автоматическое переключение на актуальную версию.
При запуске бизнес-процесса будет учитываться его актуальная версия. Если позже будет опубликована новая версия, то автоматическое переключение уже запущенных БП на нее НЕ произойдет - уже запущенный процесс будет оставаться на одной исторической версии своей модели в течение всего времени.
Примечание
Редактирование уже созданных версий не поддерживается.
Совет
Ранее при создании и редактировании модели БП можно было заполнить поле "Версия" - оно переименовано в "Тег версии" во избежании путаницы, т.к оно не относится к функционалу версионирования.
Endpoint /v2/workflow/process-definitions/{id}/versions предоставляет поле tag, которое не связано с полем "Тег версии" и в текущий момент не используется.
Отображение в файле XML
В xml-файле ревизии модели бизнес-процессов (Workflow_Model_Revision) сохраняется метаинформация о всех версиях существующих бизнес-процессов.
Xml представление версии:
<processVersions xmlns="" version="22" workflowModelRevision="31" bpmnRevision="30" processName="Process_23756c90-8c91-11f0-9d9f-e755da559370" createdBy="admin" last="true" tag="v22.0" description="Версионированный БП с назначениями и индексируемой переменной "/>
version - Версия бизнес-процесса - отображается справа от заголовка бизнес-процесса.
workflowModelRevision - Номер соответствующей ревизии модели бизнес-процессов - отображается внизу списка имеющихся бизнес-процессов.
bpmnRevision - Номер ревизии схемы конкретного бизнес-процесса - не отображается в интерфейсе, но хранится в базе данных в com_unidata_mdm_workflow_core.bpmn_models в столбце revision.
processName - ID бизнес-процесса - отображается в поле "Идентификатор" в параметрах бизнес-процесса во вкладке "Схема".
createdBy - Автор, создавший ревизию модели бизнес-процессов - логин пользователя, отображающийся, например, в окне сравнения ревизий в виде "№ ревизии / Автор / Дата создания".
last - Признак, является ли данная версия последней - Нужен для пагинации на уровне BE.
tag - Тег, по которому группируются версии - В текущей реализации не используется. Группу версий по тегу можно получить в ProcessVersionsElementImpl#getVersionElements.
description - Описание версии - отображается в поле "Описание" в параметрах бизнес-процесса во вкладке "Схема".
При удалении бизнес-процесса, данные о его версиях удаляются из XML ревизии, но остаются в XML прошлых ревизий, в которых данный бизнес-процесс существовал.
Метафинформация о версиях хранится в xml-ревизии модели бизнес-процессов - т.е метафинормация о версиях остается в старых ревизиях неизменной, а в новых дополняется новыми данными.
Таблица изменения версий при внесении изменений
Ниже представлена таблица изменения версий при публикации модели бизнес-процессов для наглядного понимания изменения новой виртуальной версии относительно других.
Таблица 1 - Изменения версий при публикации модели БП
Изменение |
модели БП |
Процесс 1 |
Процесс 2 |
||||
|---|---|---|---|---|---|---|---|
схемы БП |
Версия БП в Camunda |
Версия БП |
схемы БП |
Версия БП в Camunda |
Версия БП |
||
0 |
|||||||
Создали исполняемый Процесс 1 |
1 |
1 |
1 |
1 |
|||
Внесли изменения в исполняемый Процесс 1 |
2 |
2 |
2 |
2 |
|||
Опубликовали черновик без изменений |
3 |
3 |
2 |
2 |
|||
Сделали Процесс 1 неисполняемым |
4 |
4 |
2 |
3 |
|||
Внесли изменения в неисполняемый Процесс 1 |
5 |
5 |
2 |
4 |
|||
Сделали Процесс 1 исполняемым |
6 |
6 |
3 |
5 |
|||
Создали неисполняемый Процесс 2 |
7 |
7 |
3 |
5 |
1 |
1 |
|
Внесли изменения в неисполняемый Процесс 2 |
8 |
8 |
3 |
5 |
2 |
2 |
|
Сделали Процесс 2 исполняемым |
9 |
9 |
3 |
5 |
3 |
1 |
3 |
Внесли изменения в исполняемый Процесс 1 |
10 |
10 |
4 |
6 |
4 |
1 |
3 |
Внесли изменения в исполняемый Процесс 1 и исполняемый Процесс 2 |
11 |
11 |
5 |
7 |
5 |
2 |
4 |
Удалили Процесс 1 |
12 |
6 |
2 |
4 |
|||
API запросы
Получение списка всех версий - GET запрос /v2/workflow/process-definitions/{id}/versions.
В пути запроса задается параметр id бизнес-процесса.
В ответе на запрос возвращается id бизнес-процесса и список всех версий указанного бизнес-процесса:
{
"processName": "Process_81103620-83e8-11f0-a2bb-7d171895107f",
"versions": [
{
"version": 1,
"tag": "v1.0",
"description": "Процесс публикации черновика",
"createDate": "2025-08-28T08:25:22.067+00:00",
"author": "admin",
"last": false
},
{
"version": 2,
"tag": "v2.0",
"description": "Процесс публикации черновика с ручной проверкой",
"createDate": "2025-08-28T08:28:59.041+00:00",
"author": "admin",
"last": true
}
]
}
description в текущей реализации хранит описание бизнес-процесса из схемы, tag в текущей реализации не используется и равняется v№.0, где № - номер версии.
Получение процесса по его версии - /v2/workflow/process-definitions/{id}
Параметр version опционален. Если указан параметр draftId или revision, то параметр version игнорируется.
Получение схемы процесса - /v2/workflow/bpmn/{processName}
Параметр version опционален. Если указан параметр draftId, то параметр version игнорируется. Если draftId не указан и указан version, то параметр lud будет игнорироваться.
Указание версии реализует следующую логику: по версии получается ревизия модели и для полученной ревизии возвращается историческое состояние процесса.