From 189883ee7f064a08dfab6894556dea3efa88e1ab Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Wed, 30 Jun 2021 12:27:30 +0200 Subject: [PATCH] Fix double scheduling of activities --- src/core/Elsa.Abstractions/ActivityResults/OutcomeResult.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/Elsa.Abstractions/ActivityResults/OutcomeResult.cs b/src/core/Elsa.Abstractions/ActivityResults/OutcomeResult.cs index fd502eb07..b3041d0f7 100644 --- a/src/core/Elsa.Abstractions/ActivityResults/OutcomeResult.cs +++ b/src/core/Elsa.Abstractions/ActivityResults/OutcomeResult.cs @@ -30,8 +30,10 @@ namespace Elsa.ActivityResults var nextConnections = GetNextConnections(workflowExecutionContext, activityExecutionContext.ActivityBlueprint.Id, outcomes).ToList(); // See if we got a "default" connection (from the current activity to the next activity via the default "Done" outcome). - if (!outcomes.Contains(OutcomeNames.Done) && !nextConnections.Any()) - nextConnections = GetNextConnections(workflowExecutionContext, activityExecutionContext.ActivityBlueprint.Id, new[] { OutcomeNames.Done }).ToList(); + // Unless the current activity is a "scope" activity, in which case it will schedule a Done outcome itself. + // TODO: This is another sign that we need to refactor activity scopes into a natural contained activity structure. + if (!outcomes.Contains(OutcomeNames.Done) && !nextConnections.Any() && activityExecutionContext.ActivityId != activityExecutionContext.CurrentScope?.ActivityId) + nextConnections = GetNextConnections(workflowExecutionContext, activityExecutionContext.ActivityId, new[] { OutcomeNames.Done }).ToList(); var nextActivities = (