Class BaseTriggerTask
The base task for implementing any type of custom action that runs as a task against a IActionTrigger task
Inheritance
Inherited Members
Namespace: LemonEdge.API.Tasks.Process.Triggers
Assembly: API.dll
Syntax
public abstract class BaseTriggerTask : ITaskProcessor, IProcessor, IDisposable
Properties
Action
A custom action string for matching against a TriggeredActionParameter
Declaration
protected abstract string Action { get; }
Property Value
Type | Description |
---|---|
System.String |
Cache
A local cache for performance
Declaration
public IReadOnlyCache Cache { get; }
Property Value
Type | Description |
---|---|
IReadOnlyCache |
ForID
The list of entitiy ids this action is triggered against
Declaration
protected abstract Guid? ForID { get; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Guid> |
ForTypes
The types of entities this action is triggered against
Declaration
protected abstract Guid[] ForTypes { get; }
Property Value
Type | Description |
---|---|
System.Guid[] |
Param
The trigger action parameters inheriting from BaseTriggerParameter
Declaration
protected ServerTaskParameter Param { get; }
Property Value
Type | Description |
---|---|
ServerTaskParameter |
Reporter
A reporter to provide feedback to a log, or client depending on the context the process is running under
Declaration
public BusyProgressReporter Reporter { get; set; }
Property Value
Type | Description |
---|---|
BusyProgressReporter |
Runner
The host that is running this action trigger task
Declaration
public ITaskRunner Runner { get; }
Property Value
Type | Description |
---|---|
ITaskRunner |
TimeStamp
The timestamp of the changes that occured that triggered this action
Declaration
protected abstract DateTimeOffset? TimeStamp { get; }
Property Value
Type | Description |
---|---|
System.Nullable<System.DateTimeOffset> |
TriggeredContexts
A list of the contexts that triggered this action
Declaration
protected abstract IDictionary<IActionTrigger, List<TriggerContext>> TriggeredContexts { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IDictionary<IActionTrigger, System.Collections.Generic.List<TriggerContext>> |
TriggerID
The IActionTrigger that triggered this action
Declaration
protected abstract Guid? TriggerID { get; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Guid> |
Updater
A context to ensure the process can query, load and modify all LemonEdge data
Declaration
public IEntityUpdater Updater { get; }
Property Value
Type | Description |
---|---|
IEntityUpdater |
User
The current logged in user the process is running under
Declaration
public UserInfo User { get; }
Property Value
Type | Description |
---|---|
UserInfo |
Methods
Dispose()
Declaration
public void Dispose()
Dispose(Boolean)
Declaration
protected virtual void Dispose(bool disposing)
Parameters
Type | Name | Description |
---|---|---|
System.Boolean | disposing |
Init(ITaskRunner, ServerTaskParameter)
Initializes the task processor with the trigger action parameters for processing the task
Declaration
public Task Init(ITaskRunner runner, ServerTaskParameter ProcessTaskParameter)
Parameters
Type | Name | Description |
---|---|---|
ITaskRunner | runner | The context within which the task is being processed |
ServerTaskParameter | ProcessTaskParameter | The trigger action parameters inheriting from BaseTriggerParameter |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task | A task indicating the completion of the operation |
ProcessTask(CancellationToken)
If TriggeredContexts is null then this is the IActionTrigger task that determines which, if any, actions should be triggered.
It then populates TriggeredContexts for every matching action, and creates the appropriate triggered action task to process the action. These tasks inherit from BaseTriggerTask too, and are marked with LemonEdge.API.Tasks.Process.Triggers.TriggerTask
Each triggered action task has its TriggeredContexts set to the contexts that created the action, passes the parameters from TriggeredActionParameter and executes the action.Both then call ProcessTriggers(IDictionary<IActionTrigger, List<TriggerContext>>, CancellationToken) with the TriggeredContexts values (either calculated or passed)
All implementations simply have to implement ProcessTriggers to perform the custom action required now IActionTrigger has triggered themDeclaration
public Task<object> ProcessTask(CancellationToken cancel)
Parameters
Type | Name | Description |
---|---|---|
System.Threading.CancellationToken | cancel |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<System.Object> |
ProcessTriggers(IDictionary<IActionTrigger, List<TriggerContext>>, CancellationToken)
Processes the items that have been triggered by the IActionTrigger
Declaration
protected abstract Task ProcessTriggers(IDictionary<IActionTrigger, List<TriggerContext>> triggeredItem, CancellationToken cancel)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IDictionary<IActionTrigger, System.Collections.Generic.List<TriggerContext>> | triggeredItem | A dictionary of each triggered item and the contexts that triggered it |
System.Threading.CancellationToken | cancel | A cancellation token for cancelling the task process |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task | A task indicating the completion of the operation |