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 {