using e_suite.Database.Core.Tables.Activity;
using e_suite.Workflow.Core.Attributes;
namespace e_suite.Workflow.Core.Interfaces;
[TaskCapability]
public interface ITask
{
///
/// The guid identifying this task.
///
Guid Guid { get; set; }
///
/// ID of the parent of this task. It could be either a Task or a Workflow.
///
ITask Parent { get; set; }
///
/// Name of the task as seen by users, must be unique in the workflow.
///
string Name { get; set; }
///
/// Description of the task
///
string Description { get; set; }
///
/// alloted duration of this item.
///
public TimeSpan Duration { get; set; }
///
/// 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.
///
///
public Task OnStartedAsync(ActivityTask activityTask);
///
/// Called when the task status has been progressed from ReadyToComplete to Completed
///
/// True when the task completes successfully, false when it is considered failed.
public Task OnCompleteAsync(ActivityTask activityTask);
//Todo add support for events (soap, rest, sftp, e-mail)
}