From 4bb1c846a9243ef0fd23e018296033b7c9d3b8c0 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Mon, 12 Feb 2024 20:49:44 +0100 Subject: [PATCH] Refactor GetOutput method in ActivityExtensions The GetOutput method was extracted from the execution contexts to ensure more precise and isolated functionality. It was simplified and redefined in three contexts which are: the ActivityExecutionContext, the WorkflowExecutionContext, and the ExpressionExecutionContext. This will enhance maintainability and readability of the code. --- .../Extensions/ActivityExtensions.cs | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/src/modules/Elsa.Workflows.Core/Extensions/ActivityExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/ActivityExtensions.cs index f5e629ce28..9b230e96de 100644 --- a/src/modules/Elsa.Workflows.Core/Extensions/ActivityExtensions.cs +++ b/src/modules/Elsa.Workflows.Core/Extensions/ActivityExtensions.cs @@ -58,21 +58,6 @@ from outputProp in outputProps return query.Select(x => x!).ToList(); } - - /// - /// Gets the output with the specified name. - /// - /// The activity to get the output from. - /// The workflow execution context. - /// Name of the output. - /// The output value. - public static object? GetOutput(this IActivity activity, WorkflowExecutionContext context, string? outputName = default) - { - var workflowExecutionContext = context; - var outputRegister = workflowExecutionContext.GetActivityOutputRegister(); - var output = outputRegister.FindOutputByActivityId(activity.Id, outputName); - return output; - } /// /// Gets the output with the specified name. @@ -83,7 +68,10 @@ from outputProp in outputProps /// The output value. public static object? GetOutput(this IActivity activity, ActivityExecutionContext context, string? outputName = default) { - return activity.GetOutput(context.WorkflowExecutionContext, outputName); + var workflowExecutionContext = context.WorkflowExecutionContext; + var outputRegister = workflowExecutionContext.GetActivityOutputRegister(); + var output = outputRegister.FindOutputByActivityInstanceId(context.Id, outputName); + return output; } /// @@ -95,7 +83,12 @@ from outputProp in outputProps /// The output value. public static object? GetOutput(this IActivity activity, ExpressionExecutionContext context, string? outputName = default) { - return activity.GetOutput(context.GetWorkflowExecutionContext(), outputName); + var activityExecutionContext = context.GetActivityExecutionContext(); + + if (activityExecutionContext == null) + return null; + + return activity.GetOutput(activityExecutionContext, outputName); } ///