From 53172cded9c6f902a652ae762209bccd0e4612bb Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 20 Sep 2024 15:59:35 +0200 Subject: [PATCH] Refactor IdentityGraphService constructor and add logging. Replaced private fields with constructor parameters in IdentityGraphService and introduced a logger. Added logging to handle cases where activity descriptors are not found, improving debugging and maintainability. --- .../Services/IdentityGraphService.cs | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) 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)