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)