Skip to content

Commit

Permalink
Refactor GetOutput method in ActivityExtensions
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
sfmskywalker committed Feb 12, 2024
1 parent a678325 commit 4bb1c84
Showing 1 changed file with 10 additions and 17 deletions.
27 changes: 10 additions & 17 deletions src/modules/Elsa.Workflows.Core/Extensions/ActivityExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,21 +58,6 @@ public static IEnumerable<NamedOutput> GetOutputs(this IActivity activity)

return query.Select(x => x!).ToList();
}

/// <summary>
/// Gets the output with the specified name.
/// </summary>
/// <param name="activity">The activity to get the output from.</param>
/// <param name="context">The workflow execution context.</param>
/// <param name="outputName">Name of the output.</param>
/// <returns>The output value.</returns>
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;
}

/// <summary>
/// Gets the output with the specified name.
Expand All @@ -83,7 +68,10 @@ public static IEnumerable<NamedOutput> GetOutputs(this IActivity activity)
/// <returns>The output value.</returns>
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;
}

/// <summary>
Expand All @@ -95,7 +83,12 @@ public static IEnumerable<NamedOutput> GetOutputs(this IActivity activity)
/// <returns>The output value.</returns>
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);
}

/// <summary>
Expand Down

0 comments on commit 4bb1c84

Please sign in to comment.