# Class WorkflowPlugin OptimaJet.Workflow.Plugins.CustomWorkflowProviders.WorkflowPlugin Namespace: [OptimaJet.Workflow.Plugins.CustomWorkflowProviders](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/) ```csharp public abstract class WorkflowPlugin : CustomMixProvider, ICustomMixProvider, ICustomWorkflowActionProvider, IWorkflowActionProvider, IDisableProvider, ICustomDesignerParameterFormatProvider, IDesignerParameterFormatProvider, ICustomActivityProvider, ICustomConditionProvider, IWorkflowPlugin where TEnumActions : struct where TEnumActionsAsync : struct where TEnumConditions : struct where TEnumConditionsAsync : struct ``` ## 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 Current type - [ApprovalPlugin](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins/ApprovalPlugin/) - [LoopPlugin](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins/LoopPlugin/) - [WorkflowPluginWithRuleProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/WorkflowPluginWithRuleProvider-EnumActions-EnumActionsAsync-EnumConditions-EnumConditionsAsync-EnumRules-EnumRulesAsync/) - [BasicPlugin](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins/BasicPlugin/) - 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/) ## Properties `public override bool Disabled { get; set; }` `protected Dictionary DefaultValues { get; set; }` `public abstract string Name { get; protected set; }` The plugin name. `public bool ShowSettingsParameters { get; set; }` `public Dictionary PluginSettings { get; protected set; }` The plugin settings. ## Methods `public abstract 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 virtual Task OnRuntimeStartAsync(WorkflowRuntime runtime)` Called when the runtime is started. ### Parameters | Name | Type | Description | | --- | --- | --- | | `runtime` | `WorkflowRuntime` | The instance of the runtime. | ### Returns | Type | Description | | --- | --- | | `Task` | A task that represents the asynchronous operation. | `protected string GetParameterOrFromSettingsOrDefault(Dictionary parameters, TParameter parameterName, string defaultValue, bool canBeNullOrEmpty = true) where TParameter : struct` ### Parameters | Name | Type | Description | | --- | --- | --- | | `parameters` | `Dictionary` | | | `parameterName` | `{TParameter}` | | | `defaultValue` | `String` | | | `canBeNullOrEmpty` | `Boolean` | | ### Returns | Type | Description | | --- | --- | | `String` | | `protected void IfSettingNotSetOrShowSettingsParameters(Action action, Enum parameter)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `action` | `Action` | | | `parameter` | `Enum` | | `public virtual void SetSettingDefaultValue(Enum parameter, string value)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `parameter` | `Enum` | | | `value` | `String` | | `public virtual string SettingValue(Enum parameter, string defaultValue = null)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `parameter` | `Enum` | | | `defaultValue` | `String` | | ### Returns | Type | Description | | --- | --- | | `String` | | `public virtual void SetSettingNewValue(Enum parameter, string value)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `parameter` | `Enum` | | | `value` | `String` | | [Previous WorkflowActionProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/WorkflowActionProvider-TEnumActions-TEnumActionsAsync-TEnumConditions-TEnumConditionsAsync/) [Next WorkflowPluginWithRuleProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/WorkflowPluginWithRuleProvider-EnumActions-EnumActionsAsync-EnumConditions-EnumConditionsAsync-EnumRules-EnumRulesAsync/)