# Class ParameterDefinition OptimaJet.Workflow.Core.Model.ParameterDefinition Defines a process parameter declared in [ProcessDefinition.Parameters](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/). Namespace: [OptimaJet.Workflow.Core.Model](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/) ```csharp public class ParameterDefinition : BaseDefinition ``` ## Type Hierarchy - [BaseDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/BaseDefinition/) - ParameterDefinition Current type - [ParameterDefinitionWithValue](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinitionWithValue/) ## Properties `[JsonConverter(typeof(NewtonsoftStringTypeConverter))] [JsonConverter(typeof(SystemTextStringTypeConverter))] public virtual Type Type { get; set; }` Gets or sets the CLR [Type](https://learn.microsoft.com/dotnet/api/system.type) used for process parameter values. `[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(SystemStringEnumConverter))] public virtual ParameterPurpose Purpose { get; set; }` Gets or sets the [ParameterPurpose](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterPurpose/) that controls how Workflow Engine manages and stores the process parameter. `public virtual string InitialValue { get; set; }` Gets or sets the stored representation of the process parameter's initial value. Workflow Engine uses this value when initializing a parameter whose [ParameterDefinition.Purpose](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) is [ParameterPurpose.Persistence](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterPurpose/). ## Methods `public static ParameterDefinition Create(string name, Type type, ParameterPurpose purpose, string initialValue = null)` Creates a [ParameterDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) with the specified settings. ### Parameters | Name | Type | Description | | --- | --- | --- | | `name` | `String` | The process parameter name. | | `type` | `Type` | The CLR [Type](https://learn.microsoft.com/dotnet/api/system.type) to assign to [ParameterDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/). | | `purpose` | `ParameterPurpose` | The [ParameterPurpose](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterPurpose/) to assign to [ParameterDefinition.Purpose](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/). | | `initialValue` | `String` | The stored representation to assign to [ParameterDefinition.InitialValue](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/), or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) if no initial value is specified. | ### Returns | Type | Description | | --- | --- | | `ParameterDefinition` | A new [ParameterDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) initialized with the specified settings. | `public static ParameterDefinitionWithValue Create(ParameterDefinition parameterDefinition, object value)` Creates a [ParameterDefinitionWithValue](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinitionWithValue/) by associating a value with a parameter definition. ### Parameters | Name | Type | Description | | --- | --- | --- | | `parameterDefinition` | `ParameterDefinition` | The [ParameterDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) that describes the parameter. | | `value` | `Object` | The current value to associate with `parameterDefinition`. | ### Returns | Type | Description | | --- | --- | | `ParameterDefinitionWithValue` | A [ParameterDefinitionWithValue](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinitionWithValue/) containing the parameter definition and the resulting value. | ### Exceptions | Type | Description | | --- | --- | | `InvalidParameterValueException` | `value` is not assignable to [ParameterDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) and cannot be converted to that type by [Convert.ChangeType(object, Type)](https://learn.microsoft.com/dotnet/api/system.convert.changetype#system-convert-changetype\(system-object-system-type\)). | ### Remarks Unless [ParameterDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) is [UnknownParameterType](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/UnknownParameterType/), the method passes a non-[null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) `value` that is not assignable to the declared type to [Convert.ChangeType(object, Type)](https://learn.microsoft.com/dotnet/api/system.convert.changetype#system-convert-changetype\(system-object-system-type\)). When [ParameterDefinition.Purpose](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) is [ParameterPurpose.System](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterPurpose/), the returned object reuses `parameterDefinition`; otherwise, it contains the result of [ParameterDefinition.Clone()](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/). `public static ParameterDefinitionWithValue CreateFromPersistence(ParameterDefinition parameterDefinition, object value)` Creates a [ParameterDefinitionWithValue](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinitionWithValue/) for a value loaded from persistence. The returned parameter is marked as unmodified and as already existing in the persistence store. ### Parameters | Name | Type | Description | | --- | --- | --- | | `parameterDefinition` | `ParameterDefinition` | The [ParameterDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) that describes the persisted parameter. | | `value` | `Object` | The value loaded from the persistence store. | ### Returns | Type | Description | | --- | --- | | `ParameterDefinitionWithValue` | A [ParameterDefinitionWithValue](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinitionWithValue/) containing the persisted value and its definition. | ### Exceptions | Type | Description | | --- | --- | | `InvalidParameterValueException` | `value` is not assignable to [ParameterDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) and cannot be converted to that type by [Convert.ChangeType(object, Type)](https://learn.microsoft.com/dotnet/api/system.convert.changetype#system-convert-changetype\(system-object-system-type\)). | `public ParameterDefinition Clone()` Creates a copy of the current [ParameterDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/). ### Returns | Type | Description | | --- | --- | | `ParameterDefinition` | A copy of the current [ParameterDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/). | ### Exceptions | Type | Description | | --- | --- | | `NullReferenceException` | [BaseDefinition.DesignerSettings](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/BaseDefinition/) is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). | ### Remarks The operation uses [BaseDefinition.Clone()](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/BaseDefinition/) and therefore performs a shallow copy except for [BaseDefinition.DesignerSettings](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/BaseDefinition/). ## Remarks The system parameter definitions exposed through [DefaultDefinitions.DefaultParameters](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/DefaultDefinitions/) ignore assignments to [ParameterDefinition.Type](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/), [ParameterDefinition.Purpose](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/), and [ParameterDefinition.InitialValue](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) after they are initialized. [Previous PagedResponse](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/PagedResponse-T/) [Next ParameterDefinitionReference](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinitionReference/)