Версионирование бизнес-процессов

Общие сведения

Схема бизнес-процесса, индексируемые переменные и назначения выбранного процесса теперь отображаются с привязкой к конкретной версии.

Новая версия процесса автоматически создается при каждой публикации черновика модели бизнес-процессов, если в черновике были какие-либо изменения по сравнению с опубликованной моделью.

Просмотр актуальной версии и списка всех версий доступен при наведении курсора на имя бизнес-процесса и нажатии на кнопку image1. В списке отображаются последние 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 будет игнорироваться.

Указание версии реализует следующую логику: по версии получается ревизия модели и для полученной ревизии возвращается историческое состояние процесса.