diff --git a/src/bundles/Elsa.WorkflowServer.Web/Program.cs b/src/bundles/Elsa.WorkflowServer.Web/Program.cs index 4495d1a08..830b1d970 100644 --- a/src/bundles/Elsa.WorkflowServer.Web/Program.cs +++ b/src/bundles/Elsa.WorkflowServer.Web/Program.cs @@ -3,7 +3,6 @@ using Elsa.EntityFrameworkCore.Modules.Management; using Elsa.EntityFrameworkCore.Modules.Runtime; using Elsa.Extensions; using Elsa.Http.Handlers; -using Elsa.JavaScript.Options; using Elsa.MongoDb.Extensions; using Elsa.MongoDb.Modules.Identity; using Elsa.MongoDb.Modules.Management; @@ -108,6 +107,7 @@ services }); services.AddHealthChecks(); +services.AddControllers(); services.AddCors(cors => cors.AddDefaultPolicy(policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().WithExposedHeaders("*"))); // Configure middleware pipeline. diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowStateStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowStateStore.cs index 290402aa9..a15ff1cc3 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowStateStore.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowStateStore.cs @@ -55,7 +55,7 @@ public class EFCoreWorkflowStateStore : IWorkflowStateStore private async ValueTask OnSaveAsync(RuntimeElsaDbContext dbContext, WorkflowState entity, CancellationToken cancellationToken) { - var state = new WorkflowStateState(entity.Bookmarks, entity.CompletionCallbacks, entity.ActivityExecutionContexts, entity.Output, entity.Properties); + var state = new WorkflowStateState(entity.Bookmarks, entity.CompletionCallbacks, entity.ActivityExecutionContexts, entity.Output, entity.Properties, entity.Fault); var json = await _workflowStateSerializer.SerializeAsync(state, cancellationToken); var now = _systemClock.UtcNow; var entry = dbContext.Entry(entity); @@ -80,6 +80,7 @@ public class EFCoreWorkflowStateStore : IWorkflowStateStore entity.ActivityExecutionContexts = data.ActivityExecutionContexts; entity.Output = data.Output; entity.Properties = data.Properties; + entity.Fault = data.Fault; } private class WorkflowStateState @@ -89,19 +90,19 @@ public class EFCoreWorkflowStateStore : IWorkflowStateStore { } - public WorkflowStateState( - ICollection bookmarks, + public WorkflowStateState(ICollection bookmarks, ICollection completionCallbacks, ICollection activityExecutionContexts, IDictionary output, - IDictionary properties - ) + IDictionary properties, + WorkflowFaultState? fault) { Bookmarks = bookmarks; CompletionCallbacks = completionCallbacks; ActivityExecutionContexts = activityExecutionContexts; Output = output; Properties = properties; + Fault = fault; } public ICollection Bookmarks { get; set; } = new List(); @@ -109,5 +110,6 @@ public class EFCoreWorkflowStateStore : IWorkflowStateStore public ICollection ActivityExecutionContexts { get; set; } = new List(); public IDictionary Output { get; set; } = new Dictionary(); public IDictionary Properties { get; set; } = new Dictionary(); + public WorkflowFaultState? Fault { get; set; } } } \ No newline at end of file diff --git a/src/modules/Elsa.Http/Handlers/DefaultHttpEndpointWorkflowFaultHandler.cs b/src/modules/Elsa.Http/Handlers/DefaultHttpEndpointWorkflowFaultHandler.cs index 6b6febefe..a3331967b 100644 --- a/src/modules/Elsa.Http/Handlers/DefaultHttpEndpointWorkflowFaultHandler.cs +++ b/src/modules/Elsa.Http/Handlers/DefaultHttpEndpointWorkflowFaultHandler.cs @@ -27,14 +27,14 @@ public class DefaultHttpEndpointWorkflowFaultHandler : IHttpEndpointWorkflowFaul { var httpContext = context.HttpContext; var workflowState = context.WorkflowState; - var fault = workflowState.Fault!; + var fault = workflowState.Fault; httpContext.Response.ContentType = MediaTypeNames.Application.Json; httpContext.Response.StatusCode = StatusCodes.Status500InternalServerError; var faultedResponse = _apiSerializer.Serialize(new { - errorMessage = $"Workflow faulted with error: {fault.Message}", + errorMessage = fault != null ? $"Workflow faulted with error: {fault.Message}" : "Workflow faulted", workflowState = workflowState });