using qdr.fnd.core.pqueue.Enums;
using Quadarax.Foundation.Core.Data;
namespace qdr.fnd.core.pqueue
{
///
/// Interface for the queue item.
///
public interface IPsQueueItem : IPsQueueItemDescriptor
{
#region *** Properties ***
///
/// Unique identifier of the queue item.
///
string Id { get; }
///
/// Date and time when the queue item was created.
///
DateTime Created { get; }
///
/// Date and time when the queue item was started to process (last cycle).
///
DateTime? Started { get; }
///
/// Date and time when the queue item was finished to process (last cycle).
///
DateTime? Finished { get; }
///
/// Process item current status. Changes are logged in .
///
PsStatusEnum Status { get; }
///
/// Defines if is transient state (going to status change, but status is already changed). Changes are logged in .
/// NOTE: Transient is flag that set to True directly when status is changed. (means that first change Status, then transient)
///
bool IsStatusTransient { get; }
///
/// Defines current number of attempts left to process the queue item.
///
int AttemptsLeft { get; }
///
/// Collection of messages, errors, warnings logged during the process.
///
IEnumerable Log { get; }
///
/// Collection of status changes of the queue item. When or is changed, the status change is logged.
/// NOTE: To this collection contains current state also.
///
IEnumerable StatusJournal { get;}
#endregion
}
}