# Class ApprovalPlugin OptimaJet.Workflow.Plugins.ApprovalPlugin Namespace: [OptimaJet.Workflow.Plugins](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins/) ```csharp public class ApprovalPlugin : WorkflowPlugin, ICustomMixProvider, ICustomWorkflowActionProvider, IWorkflowActionProvider, IDisableProvider, ICustomDesignerParameterFormatProvider, IDesignerParameterFormatProvider, ICustomActivityProvider, ICustomConditionProvider, IWorkflowPlugin ``` ## Type Hierarchy - [WorkflowActionProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/WorkflowActionProvider-TEnumActions-TEnumActionsAsync-TEnumConditions-TEnumConditionsAsync/) - [WorkflowActionAndDesignerParameterFormatProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/WorkflowActionAndDesignerParameterFormatProvider-TEnumActions-TEnumActionsAsync-TEnumConditions-TEnumConditionsAsync/) - [CustomMixProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/CustomMixProvider-EnumActions-EnumActionsAsync-EnumConditions-EnumConditionsAsync/) - [WorkflowPlugin](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/WorkflowPlugin-TEnumActions-TEnumActionsAsync-TEnumConditions-TEnumConditionsAsync/) - ApprovalPlugin Current type - Implemented interfaces - [ICustomMixProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/ICustomMixProvider/) - [ICustomActivityProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/ICustomActivityProvider/) - [ICustomConditionProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/ICustomConditionProvider/) - [ICustomDesignerParameterFormatProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/ICustomDesignerParameterFormatProvider/) - [IDesignerParameterFormatProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/IDesignerParameterFormatProvider/) - [ICustomWorkflowActionProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/ICustomWorkflowActionProvider/) - [IDisableProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/IDisableProvider/) - [IWorkflowActionProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/IWorkflowActionProvider/) - [IWorkflowPlugin](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins/IWorkflowPlugin/) ## Constructors `public ApprovalPlugin()` ## Properties `public Func AllowedActorsFilter { get; set; }` The filter for allowed actors. When applied, only actors that meet the specified criteria will be included. Restricted actors remain unaffected by this filter. `public bool DisableApprovalHistory { get; set; }` Disables Approval History, preventing the creation of records in the approval history table. `public bool DisableInbox { get; set; }` Disables the inbox, preventing access to the list of users and available commands for the current approval stage. `public bool UseLocalizedNamesInApprovalHistory { get; set; }` When enabled, localized state and command names are written to approval history. `public override string Name { get; protected set; }` The plugin name. ## Methods `protected virtual void InitialActions()` `protected virtual void InitialActionsAsync()` `public virtual Task ActionGetApprovalHistoryAsync(ProcessInstance processInstance, WorkflowRuntime runtime, Dictionary parameters, CancellationToken token)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `processInstance` | `ProcessInstance` | | | `runtime` | `WorkflowRuntime` | | | `parameters` | `Dictionary` | | | `token` | `CancellationToken` | | ### Returns | Type | Description | | --- | --- | | `Task` | | `public virtual Task ActionGetInboxAsync(ProcessInstance processInstance, WorkflowRuntime runtime, Dictionary parameters, CancellationToken token)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `processInstance` | `ProcessInstance` | | | `runtime` | `WorkflowRuntime` | | | `parameters` | `Dictionary` | | | `token` | `CancellationToken` | | ### Returns | Type | Description | | --- | --- | | `Task` | | `public virtual Task ActionGetOutboxAsync(ProcessInstance processInstance, WorkflowRuntime runtime, Dictionary parameters, CancellationToken token)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `processInstance` | `ProcessInstance` | | | `runtime` | `WorkflowRuntime` | | | `parameters` | `Dictionary` | | | `token` | `CancellationToken` | | ### Returns | Type | Description | | --- | --- | | `Task` | | `public virtual Task ActionFillApprovalHistoryAsync(ProcessInstance processInstance, WorkflowRuntime runtime, Dictionary parameters, CancellationToken token)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `processInstance` | `ProcessInstance` | | | `runtime` | `WorkflowRuntime` | | | `parameters` | `Dictionary` | | | `token` | `CancellationToken` | | ### Returns | Type | Description | | --- | --- | | `Task` | | `protected virtual void InitialExclude()` `public override void OnPluginAdd(WorkflowRuntime runtime, List schemes = null)` Called when a plugin is added to a runtime. ### Parameters | Name | Type | Description | | --- | --- | --- | | `runtime` | `WorkflowRuntime` | The instance of the runtime. | | `schemes` | `List` | The list of schemes for which the plugin is being added. | `public Task OnPluginRemoveAsync(WorkflowRuntime runtime)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `runtime` | `WorkflowRuntime` | | ### Returns | Type | Description | | --- | --- | | `Task` | | `protected virtual Task OnProcessActivityChangedAsync(WorkflowRuntime runtime, ProcessInstance processInstance, CancellationToken token)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `runtime` | `WorkflowRuntime` | | | `processInstance` | `ProcessInstance` | | | `token` | `CancellationToken` | | ### Returns | Type | Description | | --- | --- | | `Task` | | `protected virtual Task GetNextOrderForApprovalHistoryAsync(ProcessInstance processInstance, WorkflowRuntime runtime = null)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `processInstance` | `ProcessInstance` | | | `runtime` | `WorkflowRuntime` | | ### Returns | Type | Description | | --- | --- | | `Task` | | `protected virtual void InitialConditions()` `protected virtual void InitialConditionsAsync()` `protected virtual void InitialActionsDescriptions()` `protected virtual void InitialActionsAsyncDescriptions()` `protected virtual void InitialConditionsDescriptions()` `protected virtual void InitialConditionsAsyncDescriptions()` `protected virtual void InitialFormatsActions()` `protected virtual void InitialFormatsActionsAsync()` `protected virtual void InitialFormatsConditions()` `protected virtual void InitialFormatsConditionsAsync()` `public virtual List FormatFillApprovalHistory()` ### Returns | Type | Description | | --- | --- | | `List` | | `public virtual List FormatGetApprovalHistory()` ### Returns | Type | Description | | --- | --- | | `List` | | `public virtual List FormatGetInbox()` ### Returns | Type | Description | | --- | --- | | `List` | | `public virtual List FormatGetOutbox()` ### Returns | Type | Description | | --- | --- | | `List` | | ## Fields `public Func, List> GetUserNamesByIds` `public bool InboxActorsWithOnlyRejectCommands` `public bool InboxCheckConditions` When this setting is enabled, transition conditions will be checked during inbox filling, and only transitions for which the conditions are met will be included in the inbox. `public bool AutoApprovalHistory` `public string NameParameterForComment` [Previous OneOfBase](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Utils.OneOf/OneOfBase-T0-T1/) [Next ApproversInStageAsyncDelegate](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins/ApproversInStageAsyncDelegate/)