# Class ConditionDefinition OptimaJet.Workflow.Core.Model.ConditionDefinition Represents a [bool](https://learn.microsoft.com/dotnet/api/system.boolean) guard in [TransitionDefinition.Conditions](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/TransitionDefinition/) that determines whether a transition can be selected. Namespace: [OptimaJet.Workflow.Core.Model](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/) ```csharp public sealed class ConditionDefinition ``` ## Properties `[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(SystemStringEnumConverter))] public ConditionType Type { get; set; }` Gets or sets the [ConditionType](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/) that determines how the condition is evaluated. `public ActionDefinitionReference Action { get; set; }` Gets or sets the [ActionDefinitionReference](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActionDefinitionReference/) that identifies the condition logic evaluated when [ConditionDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) is [ConditionType.Action](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/). `public string Expression { get; set; }` Gets or sets the C# [bool](https://learn.microsoft.com/dotnet/api/system.boolean) expression evaluated when [ConditionDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) is [ConditionType.Expression](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/). `public bool? ResultOnPreExecution { get; set; }` Gets or sets the condition result to use during pre-execution simulation. `public bool ConditionInversion { get; set; }` Gets or sets a value indicating whether to negate the evaluated result of a [ConditionType.Action](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/) or [ConditionType.Expression](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/) condition. `public static ConditionDefinition Always { get; }` Gets a new [ConditionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) whose [ConditionDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) is [ConditionType.Always](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/). `public static ConditionDefinition Otherwise { get; }` Gets a new [ConditionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) whose [ConditionDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) is [ConditionType.Otherwise](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/). ## Methods `public ConditionDefinition Clone()` Creates a copy of this condition and clones its [ConditionDefinition.Action](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) reference when present. ### Returns | Type | Description | | --- | --- | | `ConditionDefinition` | A new [ConditionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) containing the copied condition data. | `public static ConditionDefinition CreateAlwaysCondition()` Creates a condition whose [ConditionDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) is [ConditionType.Always](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/). ### Returns | Type | Description | | --- | --- | | `ConditionDefinition` | A new [ConditionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) that is always satisfied. | `public static ConditionDefinition CreateOtherwiseCondition()` Creates a condition whose [ConditionDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) is [ConditionType.Otherwise](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/). ### Returns | Type | Description | | --- | --- | | `ConditionDefinition` | A new fallback [ConditionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/). | `public static ConditionDefinition CreateActionCondition(ActionDefinitionReference action, bool conditionInversion, bool? resultOnPreExecution)` Creates a [ConditionType.Action](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/) condition that evaluates `action`. ### Parameters | Name | Type | Description | | --- | --- | --- | | `action` | `ActionDefinitionReference` | The [ActionDefinitionReference](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActionDefinitionReference/) to assign to [ConditionDefinition.Action](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/). It identifies the condition logic to evaluate. | | `conditionInversion` | `Boolean` | The value to assign to [ConditionDefinition.ConditionInversion](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/). | | `resultOnPreExecution` | `Nullable` | The value to assign to [ConditionDefinition.ResultOnPreExecution](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/): [true](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) or [false](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) for a fixed result, or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) to evaluate the condition normally. | ### Returns | Type | Description | | --- | --- | | `ConditionDefinition` | A new [ConditionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) whose [ConditionDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) is [ConditionType.Action](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/). | `public static ConditionDefinition CreateExpressionCondition(string expression, bool conditionInversion, bool? resultOnPreExecution)` Creates a [ConditionType.Expression](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/) condition that evaluates `expression`. ### Parameters | Name | Type | Description | | --- | --- | --- | | `expression` | `String` | The C# [bool](https://learn.microsoft.com/dotnet/api/system.boolean) expression to assign to [ConditionDefinition.Expression](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/). | | `conditionInversion` | `Boolean` | The value to assign to [ConditionDefinition.ConditionInversion](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/). | | `resultOnPreExecution` | `Nullable` | The value to assign to [ConditionDefinition.ResultOnPreExecution](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/): [true](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) or [false](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) for a fixed result, or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) to evaluate the expression normally. | ### Returns | Type | Description | | --- | --- | | `ConditionDefinition` | A new [ConditionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) whose [ConditionDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) is [ConditionType.Expression](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/). | [Previous ConcatenationType](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConcatenationType/) [Next ConditionType](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/)