Перейти к содержанию

Обновление версий действий

В данном разделе представлена информация об обновлении версий действий бизнес-процессов.

Версионность действий

С развитием платформы неизбежно внедряются новые возможности и вносятся изменения в уже реализованную и активно использующуюся функциональность. В том числе изменения могут затронуть и действия бизнес-процессов. Для того, чтобы иметь возможность корректно обеспечивать переход с устаревших версий действий бизнес-процессов на более новые, был реализован механизм версионности действий бизнес-процессов. В дескрипторе любого действия имеется значение версии. По умолчанию оно равно 1, но может быть изменено. При серьёзных изменениях действий, требующих обновления, версия действия увеличивается.

Экземпляр действия в шаблоне бизнес-процесса и экземпляр действия в запущенном процессе хранят версию, которая была у дескриптора в момент их создания. Система не позволит выполнить действие, если оно имеет неактуальную версию.

Обновление из редактора шаблона бизнес-процесса

В редакторе шаблона бизнес-процессов можно обновить версии действий для текущего открытого шаблона бизнес-процесса. Для этого необходимо:

  • Заблокировать процесс для редактирования.

  • Перейти в раздел “Настройки процесса”.

  • Нажать кнопку “Обновить действия процесса”.

Произойдёт обновление версий всех действий текущего шаблона бизнес-процесса, которые нуждались в обновлении. После успешного обновления шаблон бизнес-процесса будет сохранён и открыт заново.

Обновление из редактора экземпляра бизнес-процесса

В редакторе экземпляра бизнес-процессов можно обновить версии действий для текущего открытого экземпляра бизнес-процесса. Для этого необходимо:

  • Перейти в раздел “Настройки процесса”.

  • Нажать кнопку “Обновить действия процесса”.

Произойдёт обновление версий всех активных действий текущего экземпляра бизнес-процесса, которые нуждались в обновлении. После успешного обновления экземпляр бизнес-процесса будет сохранён и открыт заново.

Warning

Обновлять версии действий в экземпляре бизнес-процесса можно только после обновления версий действий шаблона, по которому был создан экземпляр процесса. Если при запуске обновления экземпляра бизнес-процесса версия действий в его шаблоне будет неактуальной, система выдаст сообщение об ошибке с указанием на необходимость обновить сперва версии действий в шаблоне бизнес-процесса.

Обновление через консольную утилиту tadmin

Существует возможность обновить версии действий в шаблонах бизнес-процессов и их экземплярах, используя команду UpgradeWorkflowProcesses консольной административной утилиты tadmin.

Обработчики обновления версий действий бизнес-процессов

Для возможности обновления версий действий бизнес-процессов существует интерфейс IWorkflowEngineActionUpgradeHandler, который реализует следующие методы:

/// <summary> /// Обновление действия в шаблоне бизнес-процесса на новую версию. /// </summary> /// <param name="actionStorage">Действие в WorkflowEngine в шаблоне процесса.</param> /// <param name="validationResult">Объект, выполняющий построение результата валидации.</param> /// <param name="cancellationToken">Объект, посредством которого можно отменить асинхронную задачу.</param> /// <returns>Асинхронная задача.</returns> Task UpgradeActionTemplateAsync( WorkflowActionStorage actionStorage, IValidationResultBuilder validationResult, CancellationToken cancellationToken = default);

/// <summary> /// Обновление действия в экземпляре бизнес-процесса на новую версию. /// </summary> /// <param name="actionTemplateStorage">Действие в WorkflowEngine в шаблоне процесса.<</param> /// <param name="actionStateStorage">Экземпляр действия в WorkflowEngine.</param> /// <param name="validationResult">Объект, выполняющий построение результата валидации.</param> /// <param name="cancellationToken">Объект, посредством которого можно отменить асинхронную задачу.</param> /// <returns>Асинхронная задача.</returns> Task UpgradeActionInstanceAsync( WorkflowActionStorage actionTemplateStorage, WorkflowActionStateStorage actionStateStorage, IValidationResultBuilder validationResult, CancellationToken cancellationToken = default);

Так же имеется реестр экземпляров обработчиков обновления версии действия IWorkflowEngineActionUpgradeHandlersRegistry, который хранит зарегистрированные экземпляры IWorkflowEngineActionUpgradeHandler.

В случае необходимости реализовать механизм обновления версии действия бизнес-процесса, необходимо написать для этого процесса обновления свой обработчик IWorkflowEngineActionUpgradeHandler и зарегистрировать его в IWorkflowEngineActionUpgradeHandlersRegistry:

var upgradeHandlersRegistry = NotNullOrThrow(container).TryResolve<IWorkflowEngineActionUpgradeHandlersRegistry>(); if (upgradeHandlersRegistry is not null) { upgradeHandlersRegistry.Register<MyNewActionUpgradeHandler>(SomeTaskActionTypeID, versionNumber); }

Где:

  • MyNewActionUpgradeHandler - класс, реализующий интерфейс IWorkflowEngineActionUpgradeHandler и описывающий логику обновления действия.

  • SomeTaskActionTypeID - идентификатор типа действия.

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

Back to top