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

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

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

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

Для возможности обновления версий действий бизнес-процессов существует интерфейс 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