diff --git a/src/modules/Elsa.Workflows.Core/Services/IdentityGraphService.cs b/src/modules/Elsa.Workflows.Core/Services/IdentityGraphService.cs index c3802b3f1..14d259421 100644 --- a/src/modules/Elsa.Workflows.Core/Services/IdentityGraphService.cs +++ b/src/modules/Elsa.Workflows.Core/Services/IdentityGraphService.cs @@ -3,24 +3,13 @@ using Elsa.Workflows.Activities; using Elsa.Workflows.Contracts; using Elsa.Workflows.Models; using Humanizer; +using Microsoft.Extensions.Logging; namespace Elsa.Workflows.Services; /// -public class IdentityGraphService : IIdentityGraphService +public class IdentityGraphService(IActivityVisitor activityVisitor, IActivityRegistryLookupService activityRegistryLookup, ILogger logger) : IIdentityGraphService { - private readonly IActivityVisitor _activityVisitor; - private readonly IActivityRegistryLookupService _activityRegistryLookup; - - /// - /// Constructor. - /// - public IdentityGraphService(IActivityVisitor activityVisitor, IActivityRegistryLookupService activityRegistryLookup) - { - _activityVisitor = activityVisitor; - _activityRegistryLookup = activityRegistryLookup; - } - /// public async Task AssignIdentitiesAsync(Workflow workflow, CancellationToken cancellationToken = default) { @@ -30,7 +19,7 @@ public class IdentityGraphService : IIdentityGraphService /// public async Task AssignIdentitiesAsync(IActivity root, CancellationToken cancellationToken = default) { - var graph = await _activityVisitor.VisitAsync(root, cancellationToken); + var graph = await activityVisitor.VisitAsync(root, cancellationToken); await AssignIdentitiesAsync(graph); } @@ -56,7 +45,14 @@ public class IdentityGraphService : IIdentityGraphService /// public async Task AssignInputOutputsAsync(IActivity activity) { - var activityDescriptor = await _activityRegistryLookup.FindAsync(activity.Type, activity.Version) ?? throw new Exception($"Activity descriptor \"{activity.Type}\" with version \"{activity.Version}\" not found"); + var activityDescriptor = await activityRegistryLookup.FindAsync(activity.Type, activity.Version); + + if (activityDescriptor == null!) + { + logger.LogWarning("Activity descriptor not found for activity type {ActivityType}. Skipping identity assignment", activity.Type); + return; + } + var inputDictionary = activityDescriptor.GetWrappedInputProperties(activity); foreach (var (inputName, input) in inputDictionary)