From 2ce5bbfbf1f5e74255d23e45612c629393fa377e Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 11 Apr 2025 21:17:41 +0200 Subject: [PATCH] Refactor incident creation to include `NodeId` and remove duplication Replaced `activity.Id` with `activity.NodeId` in incident creation for enhanced context. Removed redundant `LogExceptionAndTransition` method by consolidating logic into existing workflow, reducing duplication and improving maintainability. --- .../Extensions/ActivityExecutionContextExtensions.cs | 2 +- .../Activities/ExceptionHandlingMiddleware.cs | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/src/modules/Elsa.Workflows.Core/Extensions/ActivityExecutionContextExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/ActivityExecutionContextExtensions.cs index a141111ab..6d6b685bc 100644 --- a/src/modules/Elsa.Workflows.Core/Extensions/ActivityExecutionContextExtensions.cs +++ b/src/modules/Elsa.Workflows.Core/Extensions/ActivityExecutionContextExtensions.cs @@ -318,7 +318,7 @@ public static partial class ActivityExecutionContextExtensions var exceptionState = ExceptionState.FromException(e); var systemClock = context.GetRequiredService(); var now = systemClock.UtcNow; - var incident = new ActivityIncident(activity.Id, activity.Type, e.Message, exceptionState, now); + var incident = new ActivityIncident(activity.Id, activity.NodeId, activity.Type, e.Message, exceptionState, now); context.WorkflowExecutionContext.Incidents.Add(incident); context.AggregateFaultCount++; diff --git a/src/modules/Elsa.Workflows.Core/Middleware/Activities/ExceptionHandlingMiddleware.cs b/src/modules/Elsa.Workflows.Core/Middleware/Activities/ExceptionHandlingMiddleware.cs index 51d5d8a41..b7028e2b8 100644 --- a/src/modules/Elsa.Workflows.Core/Middleware/Activities/ExceptionHandlingMiddleware.cs +++ b/src/modules/Elsa.Workflows.Core/Middleware/Activities/ExceptionHandlingMiddleware.cs @@ -37,17 +37,6 @@ public class ExceptionHandlingMiddleware(ActivityMiddlewareDelegate next, IIncid } } - private void LogExceptionAndTransition(ActivityExecutionContext context, Exception e) - { - context.Exception = e; - context.TransitionTo(ActivityStatus.Faulted); - var activity = context.Activity; - var exceptionState = ExceptionState.FromException(e); - var now = systemClock.UtcNow; - var incident = new ActivityIncident(activity.Id, activity.NodeId ,activity.Type, e.Message, exceptionState, now); - context.WorkflowExecutionContext.Incidents.Add(incident); - } - private async Task HandleIncidentAsync(ActivityExecutionContext context) { var strategy = await incidentStrategyResolver.ResolveStrategyAsync(context);