From 3f153c0f131c57be8ca323ad5edd99014577349b Mon Sep 17 00:00:00 2001 From: aburada Date: Fri, 15 May 2020 14:04:09 -0400 Subject: [PATCH] Add Exception property to WorkflowFault (#283) --- src/core/Elsa.Abstractions/Models/WorkflowFault.cs | 5 ++++- .../Services/Models/WorkflowExecutionContext.cs | 5 +++-- .../Elsa.Abstractions/Services/Models/WorkflowFault.cs | 8 ++++++-- src/core/Elsa.Core/Results/FaultWorkflowResult.cs | 6 ++++-- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/core/Elsa.Abstractions/Models/WorkflowFault.cs b/src/core/Elsa.Abstractions/Models/WorkflowFault.cs index 34caf43e0..14b57d05f 100644 --- a/src/core/Elsa.Abstractions/Models/WorkflowFault.cs +++ b/src/core/Elsa.Abstractions/Models/WorkflowFault.cs @@ -1,8 +1,11 @@ -namespace Elsa.Models +using System; + +namespace Elsa.Models { public class WorkflowFault { public string FaultedActivityId { get; set; } public string Message { get; set; } + public Exception Exception { get; set; } } } \ No newline at end of file diff --git a/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs b/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs index 3b850f94b..9106cd592 100644 --- a/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs +++ b/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs @@ -89,14 +89,15 @@ namespace Elsa.Services.Models Workflow.Status = WorkflowStatus.Executing; } - public void Fault(IActivity activity, Exception exception) => Fault(activity, exception.Message); + public void Fault(IActivity activity, Exception exception) => Fault(activity, exception.Message, exception); - public void Fault(IActivity activity, string errorMessage) + public void Fault(IActivity activity, string errorMessage, Exception exception = null) { Workflow.FaultedAt = clock.GetCurrentInstant(); Workflow.Fault = new WorkflowFault { Message = errorMessage, + Exception = exception, FaultedActivity = activity }; Workflow.Status = WorkflowStatus.Faulted; diff --git a/src/core/Elsa.Abstractions/Services/Models/WorkflowFault.cs b/src/core/Elsa.Abstractions/Services/Models/WorkflowFault.cs index a71e79b72..8bef13672 100644 --- a/src/core/Elsa.Abstractions/Services/Models/WorkflowFault.cs +++ b/src/core/Elsa.Abstractions/Services/Models/WorkflowFault.cs @@ -1,16 +1,20 @@ -namespace Elsa.Services.Models +using System; + +namespace Elsa.Services.Models { public class WorkflowFault { public IActivity FaultedActivity { get; set; } public string Message { get; set; } + public Exception Exception { get; set; } public Elsa.Models.WorkflowFault ToInstance() { return new Elsa.Models.WorkflowFault { FaultedActivityId = FaultedActivity?.Id, - Message = Message + Message = Message, + Exception = Exception }; } } diff --git a/src/core/Elsa.Core/Results/FaultWorkflowResult.cs b/src/core/Elsa.Core/Results/FaultWorkflowResult.cs index 2018e6dcd..c5dde3c00 100644 --- a/src/core/Elsa.Core/Results/FaultWorkflowResult.cs +++ b/src/core/Elsa.Core/Results/FaultWorkflowResult.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using System.Threading.Tasks; using Elsa.Extensions; @@ -12,9 +12,11 @@ namespace Elsa.Results public class FaultWorkflowResult : ActivityExecutionResult { private readonly string errorMessage; + private Exception exception; public FaultWorkflowResult(Exception exception) : this(exception.Message) { + this.exception = exception; } public FaultWorkflowResult(string errorMessage) @@ -35,7 +37,7 @@ namespace Elsa.Results x => x.ActivityFaultedAsync(workflowContext, currentActivity, errorMessage, cancellationToken), logger); - workflowContext.Fault(workflowContext.CurrentActivity, errorMessage); + workflowContext.Fault(workflowContext.CurrentActivity, errorMessage, exception); } } } \ No newline at end of file