diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/Activities/TestRun/Endpoint.cs b/src/modules/Elsa.Workflows.Api/Endpoints/Activities/TestRun/Endpoint.cs deleted file mode 100644 index a3f9764b9..000000000 --- a/src/modules/Elsa.Workflows.Api/Endpoints/Activities/TestRun/Endpoint.cs +++ /dev/null @@ -1,80 +0,0 @@ -using Elsa.Abstractions; -using Elsa.Extensions; -using Elsa.Workflows.Management; -using Elsa.Workflows.Models; -using Elsa.Workflows.Runtime; -using Elsa.Workflows.Runtime.Entities; -using Elsa.Workflows.State; - -namespace Elsa.Workflows.Api.Endpoints.Activities.TestRun; - -/// -/// This abstract class provides the necessary infrastructure to handle the execution of workflows, including setup of routes, permissions, -/// and processing of HTTP requests to execute workflows. -/// -internal class Endpoint( - IWorkflowDefinitionService workflowDefinitionService, - IActivityInvoker activityInvoker, - IActivityExecutionMapper activityExecutionMapper, - IIdentityGenerator identityGenerator, - IServiceProvider serviceProvider) - : ElsaEndpoint -{ - /// - public override void Configure() - { - Post("/activities/test-run"); - ConfigurePermissions("exec:activities"); - } - - /// - public override async Task HandleAsync(Request request, CancellationToken cancellationToken) - { - var workflowGraph = await workflowDefinitionService.FindWorkflowGraphAsync(request.WorkflowDefinitionHandle, cancellationToken); - - if (workflowGraph == null) - { - AddError("Workflow definition not found."); - await SendErrorsAsync(cancellation: cancellationToken); - return; - } - - var workflowInstanceId = identityGenerator.GenerateId(); - var workflowExecutionContext = await WorkflowExecutionContext.CreateAsync(serviceProvider, workflowGraph, workflowInstanceId, cancellationToken: cancellationToken); - var activity = workflowExecutionContext.FindActivity(request.ActivityHandle); - - if (activity == null) - { - AddError("Activity not found."); - await SendErrorsAsync(cancellation: cancellationToken); - return; - } - - var activityExecutionContext = await activityInvoker.InvokeAsync(workflowExecutionContext, activity); - var record = activityExecutionMapper.Map(activityExecutionContext); - var outcomes = record.Payload != null && record.Payload.TryGetValue("Outcomes", out var outcomesObj) ? outcomesObj as ICollection : null; - var response = new Response - { - Outputs = record.Outputs, - Outcomes = outcomes, - Exception = record.Exception, - Status = record.Status - }; - - await SendOkAsync(response, cancellationToken); - } -} - -public class Request -{ - public WorkflowDefinitionHandle WorkflowDefinitionHandle { get; set; } = null!; - public ActivityHandle ActivityHandle { get; set; } = null!; -} - -public class Response -{ - public IDictionary? Outputs { get; set; } - public ICollection? Outcomes { get; set; } - public ExceptionState? Exception { get; set; } - public ActivityStatus Status { get; set; } -} \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/Tests/Activities/Endpoint.cs b/src/modules/Elsa.Workflows.Api/Endpoints/Tests/Activities/Endpoint.cs index 12311231f..49494c043 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/Tests/Activities/Endpoint.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/Tests/Activities/Endpoint.cs @@ -51,7 +51,7 @@ internal class Endpoint( } var activityExecutionContext = await activityTestRunner.RunAsync(workflowGraph, activity, cancellationToken); - var record = activityExecutionMapper.Map(activityExecutionContext); + var record = await activityExecutionMapper.MapAsync(activityExecutionContext); var activityState = record.ActivityState ?? new Dictionary(); var response = new Response