Removed the iFailedLoopback and replaced it with a IOutcome<T> allowing users to do more than jump if the task fails.

This commit is contained in:
Colin Dawson 2026-02-22 23:22:29 +00:00
parent 737d3e4d08
commit f4831b93b9
4 changed files with 14 additions and 27 deletions

View File

@ -1,14 +0,0 @@
using e_suite.Workflow.Core.Attributes;
using System.ComponentModel.DataAnnotations;
namespace e_suite.Workflow.Core.Interfaces;
[TaskCapability]
public interface IFailedLoopback
{
/// <summary>
/// ITask OnCompleteAsync returns false, the workflow processor will initiate a loopback to this item.
/// </summary>
[Required]
public Task Loopback { get; set; }
}

View File

@ -1,12 +1,13 @@
using e_suite.Workflow.Core.Attributes; using e_suite.Workflow.Core.Attributes;
using e_suite.Workflow.Core.Enums;
using e_suite.Workflow.Core.Interfaces; using e_suite.Workflow.Core.Interfaces;
namespace e_suite.Workflow.Core.Tasks; namespace e_suite.Workflow.Core.Tasks;
[GeneralTask] [GeneralTask]
public class AdhocApprovalTask : TaskBase, IAssignees<IApprovalTaskAssignee>, IFailedLoopback public class AdhocApprovalTask : TaskBase, IAssignees<IApprovalTaskAssignee>, IOutcome<ApprovalVerdict>
{ {
public required Task Loopback { get; set; }
public IList<IApprovalTaskAssignee> Assignees { get; } = new List<IApprovalTaskAssignee>(); public IList<IApprovalTaskAssignee> Assignees { get; } = new List<IApprovalTaskAssignee>();
public ApprovalVerdict TaskOutcome { get; set; }
public Dictionary<ApprovalVerdict, Guid> OutcomeActions { get; set; }
} }

View File

@ -1,19 +1,13 @@
using e_suite.Workflow.Core.Attributes; using e_suite.Workflow.Core.Attributes;
using e_suite.Workflow.Core.Enums;
using e_suite.Workflow.Core.Interfaces; using e_suite.Workflow.Core.Interfaces;
namespace e_suite.Workflow.Core.Tasks; namespace e_suite.Workflow.Core.Tasks;
[GeneralTask] [GeneralTask]
public class ApprovalTask : TaskBase, IStage<ApprovalTaskAttribute>, IFailedLoopback public class ApprovalTask : TaskBase, IStage<ApprovalTaskAttribute>, IOutcome<ApprovalVerdict>
{ {
public required Task Loopback { get; set; }
public ICollection<ITask> Tasks { get; } = new List<ITask>(); public ICollection<ITask> Tasks { get; } = new List<ITask>();
public ApprovalVerdict TaskOutcome { get; set; }
//Todo can only be on a run-time instance public Dictionary<ApprovalVerdict, Guid> OutcomeActions { get; set; }
//public override Task<bool> OnCompleteAsync()
//{
// return Task.FromResult(true);
//}
} }

View File

@ -163,6 +163,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "e-suite.DependencyInjection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "e-suite.Modules.WorkflowTemplatesManager", "e-suite.Modules.WorkflowTemplatesManager\e-suite.Modules.WorkflowTemplatesManager.csproj", "{ABF3CD19-D1CF-4407-9102-3FC31DAC04AB}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "e-suite.Modules.WorkflowTemplatesManager", "e-suite.Modules.WorkflowTemplatesManager\e-suite.Modules.WorkflowTemplatesManager.csproj", "{ABF3CD19-D1CF-4407-9102-3FC31DAC04AB}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eSuite.Translator", "eSuite.Translator\eSuite.Translator.csproj", "{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -457,6 +459,10 @@ Global
{ABF3CD19-D1CF-4407-9102-3FC31DAC04AB}.Debug|Any CPU.Build.0 = Debug|Any CPU {ABF3CD19-D1CF-4407-9102-3FC31DAC04AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ABF3CD19-D1CF-4407-9102-3FC31DAC04AB}.Release|Any CPU.ActiveCfg = Release|Any CPU {ABF3CD19-D1CF-4407-9102-3FC31DAC04AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ABF3CD19-D1CF-4407-9102-3FC31DAC04AB}.Release|Any CPU.Build.0 = Release|Any CPU {ABF3CD19-D1CF-4407-9102-3FC31DAC04AB}.Release|Any CPU.Build.0 = Release|Any CPU
{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE