From 492b16bd243dc72cd42d5e54a72fb49ef9d966a0 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Wed, 20 Nov 2024 14:44:57 +0100 Subject: [PATCH] Filter workflow summaries by latest version (#6132) Ensure that only the latest version of each workflow definition is processed by grouping and selecting the highest version. This change helps prevent redundant updates and ensures data consistency. --- .../Services/WorkflowReferenceUpdater.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/modules/Elsa.Workflows.Management/Services/WorkflowReferenceUpdater.cs b/src/modules/Elsa.Workflows.Management/Services/WorkflowReferenceUpdater.cs index 492358851..24f49701e 100644 --- a/src/modules/Elsa.Workflows.Management/Services/WorkflowReferenceUpdater.cs +++ b/src/modules/Elsa.Workflows.Management/Services/WorkflowReferenceUpdater.cs @@ -118,11 +118,18 @@ public class WorkflowReferenceUpdater( IsReadonly = false }; var workflowDefinitionSummaries = await workflowDefinitionStore.FindSummariesAsync(workflowDefinitionFilter, cancellationToken); + + // If there are workflow definition summaries with the same definition ID, only take the latest version. + workflowDefinitionSummaries = workflowDefinitionSummaries + .GroupBy(x => x.DefinitionId) + .Select(x => x.OrderByDescending(y => y.Version).First()) + .ToList(); + var workflowGraphs = new List(); foreach (var workflowDefinitionSummary in workflowDefinitionSummaries) { - var workflowGraph = await workflowDefinitionService.FindWorkflowGraphAsync(workflowDefinitionSummary.DefinitionId, VersionOptions.LatestOrPublished, cancellationToken); + var workflowGraph = await workflowDefinitionService.FindWorkflowGraphAsync(workflowDefinitionSummary.Id, cancellationToken); if (workflowGraph != null) workflowGraphs.Add(workflowGraph);