Обновление версий действий¶
В данном разделе представлена информация об обновлении версий действий бизнес-процессов.
Обработчики обновления версий действий бизнес-процессов¶
Для возможности обновления версий действий бизнес-процессов существует интерфейс 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- номер версии, при обновлении на которую должен срабатывать зарегистрированный обработчик.