Class AggregatingActionProvider
OptimaJet.Workflow.Core.Runtime.AggregatingActionProvider
Combines registered IWorkflowActionProvider implementations into one provider and resolves duplicate action and condition names by registration priority.
Namespace: OptimaJet.Workflow.Core.Runtime
public class AggregatingActionProvider : BaseAggregatingProvider<IWorkflowActionProvider>, IWorkflowActionProviderType Hierarchy
- BaseAggregatingProvider<IWorkflowActionProvider>
- AggregatingActionProvider Current type
- Implemented interfaces
- AggregatingActionProvider Current type
Methods
public void ExecuteAction(string name, ProcessInstance processInstance, WorkflowRuntime runtime, string actionParameter) #Parameters
nameStringprocessInstanceProcessInstanceExceptions
NotImplementedExceptionRemarks
processInstance. The call is forwarded to the owning provider only when that provider reports the action as synchronous.public Task ExecuteActionAsync(string name, ProcessInstance processInstance, WorkflowRuntime runtime, string actionParameter, CancellationToken token) #Parameters
nameStringprocessInstanceProcessInstancetokenCancellationTokenReturns
TaskExceptions
NotImplementedExceptionRemarks
processInstance. The call is forwarded to the owning provider only when that provider reports the action as asynchronous.public bool ExecuteCondition(string name, ProcessInstance processInstance, WorkflowRuntime runtime, string actionParameter) #Parameters
nameStringprocessInstanceProcessInstanceactionParameterStringReturns
Exceptions
NotImplementedExceptionRemarks
processInstance. The call is forwarded to the owning provider only when that provider reports the condition as synchronous.public Task<bool> ExecuteConditionAsync(string name, ProcessInstance processInstance, WorkflowRuntime runtime, string actionParameter, CancellationToken token) #Parameters
nameStringprocessInstanceProcessInstanceactionParameterStringtokenCancellationTokenReturns
Exceptions
NotImplementedExceptionRemarks
processInstance. The call is forwarded to the owning provider only when that provider reports the condition as asynchronous.public bool IsActionAsync(string name, string schemeCode) #Parameters
nameStringschemeCodeStringReturns
Exceptions
NotImplementedExceptionRemarks
public bool IsConditionAsync(string name, string schemeCode) #Parameters
nameStringschemeCodeStringReturns
Exceptions
NotImplementedExceptionRemarks
public List<string> GetActions(string schemeCode, NamesSearchType namesSearchType) #Parameters
schemeCodeStringnamesSearchTypeNamesSearchTypeReturns
List<String>Remarks
namesSearchType is passed through unchanged. When a name occurs more than once, its first occurrence is retained.public List<string> GetConditions(string schemeCode, NamesSearchType namesSearchType) #Parameters
schemeCodeStringnamesSearchTypeNamesSearchTypeReturns
List<String>Remarks
namesSearchType is passed through unchanged. When a name occurs more than once, its first occurrence is retained.Remarks
For a scheme, both global providers and providers registered specifically for that scheme are applicable. Providers are searched from the most recently registered to the earliest, regardless of registration scope. The first provider that advertises an action or condition name owns that name.
The owning provider also determines whether the operation is synchronous or asynchronous. Calling the opposite execution method throws NotImplementedException; the aggregator does not fall back to an older provider that advertises the same name in the requested execution mode.
AggregatingActionProvider.GetActions(string, NamesSearchType) and AggregatingActionProvider.GetConditions(string, NamesSearchType) are catalog operations rather than dispatch operations. They combine names from every applicable provider in earliest-to-latest registration order and remove duplicates, so their result order does not represent dispatch priority.