Fix declarative composite activity definition to blueprint mapping

This commit is contained in:
Sipke Schoorstra 2021-03-04 21:52:23 +01:00
parent b5f5d5d223
commit 4b33418cf7
2 changed files with 13 additions and 4 deletions

View file

@ -181,6 +181,8 @@ namespace Microsoft.Extensions.DependencyInjection
return options;
}
private static ElsaOptions AddCoreActivities(this ElsaOptions services) => services.AddActivitiesFrom<ElsaOptions>();
private static ElsaOptions AddCoreActivities(this ElsaOptions services) => services
.AddActivitiesFrom<ElsaOptions>()
.AddActivitiesFrom<CompositeActivity>();
}
}

View file

@ -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
{