From 4b33418cf77bea7659b6f4305d5151e63c035482 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 4 Mar 2021 21:52:23 +0100 Subject: [PATCH] Fix declarative composite activity definition to blueprint mapping --- .../Extensions/ElsaServiceCollectionExtensions.cs | 4 +++- .../Services/WorkflowBlueprintMaterializer.cs | 13 ++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs b/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs index 5b956445d..ca7aa71e9 100644 --- a/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs +++ b/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs @@ -181,6 +181,8 @@ namespace Microsoft.Extensions.DependencyInjection return options; } - private static ElsaOptions AddCoreActivities(this ElsaOptions services) => services.AddActivitiesFrom(); + private static ElsaOptions AddCoreActivities(this ElsaOptions services) => services + .AddActivitiesFrom() + .AddActivitiesFrom(); } } \ No newline at end of file diff --git a/src/core/Elsa.Core/Services/WorkflowBlueprintMaterializer.cs b/src/core/Elsa.Core/Services/WorkflowBlueprintMaterializer.cs index c3bd4922f..31b77a1d0 100644 --- a/src/core/Elsa.Core/Services/WorkflowBlueprintMaterializer.cs +++ b/src/core/Elsa.Core/Services/WorkflowBlueprintMaterializer.cs @@ -6,6 +6,7 @@ using Elsa.ActivityProviders; using Elsa.Models; using Elsa.Services.Models; using Microsoft.Extensions.Logging; +using NetBox.Extensions; namespace Elsa.Services { @@ -103,8 +104,8 @@ namespace Elsa.Services var activityBlueprints = manyActivityBlueprints.SelectMany(x => x).ToDictionary(x => x.Id); list.AddRange(activityBlueprints.Values); - - list.Add(new CompositeActivityBlueprint + + var compositeActivityBlueprint = new CompositeActivityBlueprint { Id = activityDefinition.ActivityId, Type = activityDefinition.Type, @@ -116,7 +117,13 @@ namespace Elsa.Services LoadWorkflowContext = activityDefinition.LoadWorkflowContext, SaveWorkflowContext = activityDefinition.SaveWorkflowContext, ActivityPropertyProviders = await CreatePropertyProviders(compositeActivityDefinition, cancellationToken) - }); + }; + + list.Add(compositeActivityBlueprint); + + // Connect the composite activity to its starting activities. + var startActivities = compositeActivityBlueprint.GetStartActivities().ToList(); + compositeActivityBlueprint.Connections.AddRange(startActivities.Select(x => new Connection(compositeActivityBlueprint, x, CompositeActivity.Enter))); } else {