Backend/e-suite.Workflow.Core/Interfaces/ITask.cs
Colin Dawson 800f10f9fb Moved the duration to ITask, so it's common to everything.
More work on the ApprovalTask, IOutcome<T> should now be working.
2026-02-23 23:13:55 +00:00

55 lines
1.8 KiB
C#

using e_suite.Workflow.Core.Attributes;
namespace e_suite.Workflow.Core.Interfaces;
[TaskCapability]
public interface ITask
{
/// <summary>
/// The guid identifying this task.
/// </summary>
Guid Guid { get; set; }
/// <summary>
/// ID of the parent of this task. It could be either a Task or a Workflow.
/// </summary>
ITask Parent { get; set; }
/// <summary>
/// Name of the task as seen by users, must be unique in the workflow.
/// </summary>
string Name { get; set; }
/// <summary>
/// Description of the task
/// </summary>
string Description { get; set; }
/// <summary>
/// alloted duration of this item.
/// </summary>
public TimeSpan Duration { get; set; }
/// <summary>
/// List of tasks that need to be completed before this on can start. (If empty, will start when the workflow starts)
/// </summary>
List<ITask> Predecessors { get; set; }
//Todo can only be on a run-time instance
///// <summary>
///// Called when the task status has been progressed from Pending to Active.
/////
///// Note: You can use this method to set the TaskStatus to ReadyToComplete if there is no manual processing needed for this task.
///// After this method is completed, the TaskStatus must be either Active or ReadyToComplete.
///// </summary>
///// <returns></returns>
//Task OnActivateAsync();
///// <summary>
///// Called when the task status has been progressed from ReadyToComplete to Completed
///// </summary>
///// <returns>True when the task completes successfully, false when it is considered failed.</returns>
//Task<bool> OnCompleteAsync();
//Todo add support for events (soap, rest, sftp, e-mail)
}