From 1f7df0efcda404e34fefcb73d2031ab38f5a9724 Mon Sep 17 00:00:00 2001 From: herblinernexxbizz <125579511+herblinernexxbizz@users.noreply.github.com> Date: Mon, 5 Jun 2023 14:17:02 +0200 Subject: [PATCH] make it so you can start a specific version of a workflow (#4103) --- .../Endpoints/WorkflowDefinitions/Execute/Endpoint.cs | 10 ++++++++-- .../Endpoints/WorkflowDefinitions/Execute/Models.cs | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute/Endpoint.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute/Endpoint.cs index 846ec39c8..7ce67adc7 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute/Endpoint.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute/Endpoint.cs @@ -44,7 +44,13 @@ internal class Execute : ElsaEndpoint public override async Task HandleAsync(Request request, CancellationToken cancellationToken) { var definitionId = request.DefinitionId; - var exists = await _store.AnyAsync(new WorkflowDefinitionFilter { DefinitionId = definitionId, VersionOptions = VersionOptions.Published }, cancellationToken); + + var versionOptions = VersionOptions.Published; + if (request.Version.HasValue) { + versionOptions = VersionOptions.SpecificVersion(request.Version.Value); + } + + var exists = await _store.AnyAsync(new WorkflowDefinitionFilter { DefinitionId = definitionId, VersionOptions = versionOptions }, cancellationToken); if (!exists) { @@ -54,7 +60,7 @@ internal class Execute : ElsaEndpoint var correlationId = request.CorrelationId; var input = (IDictionary?)request.Input; - var startWorkflowOptions = new StartWorkflowRuntimeOptions(correlationId, input, VersionOptions.Published, request.TriggerActivityId); + var startWorkflowOptions = new StartWorkflowRuntimeOptions(correlationId, input, versionOptions, request.TriggerActivityId); var result = await _workflowRuntime.StartWorkflowAsync(definitionId, startWorkflowOptions, cancellationToken); // If a workflow fault occurred, respond appropriately with a 500 internal server error. diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute/Models.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute/Models.cs index 392babddd..4edb21dfa 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute/Models.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute/Models.cs @@ -9,6 +9,7 @@ internal class Request public string DefinitionId { get; set; } = default!; public string? CorrelationId { get; set; } public string? TriggerActivityId { get; set; } + public int? Version { get; set; } [JsonConverter(typeof(ExpandoObjectConverterFactory))] public object? Input { get; set; }