diff --git a/src/core/Elsa.Core/Elsa.Core.csproj b/src/core/Elsa.Core/Elsa.Core.csproj index 3f1137c00..4f1da0b64 100644 --- a/src/core/Elsa.Core/Elsa.Core.csproj +++ b/src/core/Elsa.Core/Elsa.Core.csproj @@ -17,6 +17,7 @@ GitHub elsa, workflows, orchard icon.png + enable diff --git a/src/core/Elsa.Core/Results/GoBackResult.cs b/src/core/Elsa.Core/Results/GoBackResult.cs new file mode 100644 index 000000000..c71e460de --- /dev/null +++ b/src/core/Elsa.Core/Results/GoBackResult.cs @@ -0,0 +1,29 @@ +using System.Linq; +using Elsa.Services; +using Elsa.Services.Extensions; +using Elsa.Services.Models; + +namespace Elsa.Results +{ + public class GoBackResult : ActivityExecutionResult + { + private readonly int steps; + + public GoBackResult(int steps = 1) + { + this.steps = steps; + } + + protected override void Execute(IWorkflowInvoker invoker, WorkflowExecutionContext workflowContext) + { + var previousEntry = workflowContext.Workflow.ExecutionLog.Skip(steps).FirstOrDefault(); + + if (previousEntry == null) + return; + + var activityId = previousEntry.ActivityId; + var activity = workflowContext.Workflow.GetActivity(activityId); + workflowContext.ScheduleActivity(activity); + } + } +} \ No newline at end of file