# Class XmlWorkflowParser OptimaJet.Workflow.Core.Parser.XmlWorkflowParser Parses Scheme XML represented by [XElement](https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement) instances into [ProcessDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) instances and serializes process definitions back to XML. Namespace: [OptimaJet.Workflow.Core.Parser](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Parser/) ```csharp public class XmlWorkflowParser : WorkflowParser, IWorkflowParser ``` ## Type Hierarchy - [WorkflowParser](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Parser/WorkflowParser-TSchemeMedium/) - XmlWorkflowParser Current type - Implemented interfaces - [IWorkflowParser](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Parser/IWorkflowParser-TSchemeMedium/) ## Methods `public override List ParseTimers(XElement schemeMedium)` Parses the [TimerDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/TimerDefinition/) instances from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | ### Returns | Type | Description | | --- | --- | | `List` | The parsed [TimerDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/TimerDefinition/) instances. | ### Exceptions | Type | Description | | --- | --- | | `ArgumentNullException` | `schemeMedium` is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). | `public override List ParseActors(XElement schemeMedium)` Parses the [ActorDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActorDefinition/) instances from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | ### Returns | Type | Description | | --- | --- | | `List` | The parsed [ActorDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActorDefinition/) instances. | ### Exceptions | Type | Description | | --- | --- | | `ArgumentNullException` | `schemeMedium` is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). | | `ArgumentException` | The Scheme XML declares duplicate actor names. | `public override List ParseLocalization(XElement schemeMedium)` Parses the [Translation](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/Translation/) entries from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | ### Returns | Type | Description | | --- | --- | | `List` | The parsed [Translation](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/Translation/) entries. | ### Exceptions | Type | Description | | --- | --- | | `ArgumentNullException` | `schemeMedium` is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). | `public override List ParseParameters(XElement schemeMedium, SchemeParsingType schemeParsingType = SchemeParsingType.Strict)` Parses the [ParameterDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) instances from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | | `schemeParsingType` | `SchemeParsingType` | The [SchemeParsingType](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Builder/SchemeParsingType/) mode. [SchemeParsingType.Strict](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Builder/SchemeParsingType/) rejects unresolved parameter types, while [SchemeParsingType.Soft](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Builder/SchemeParsingType/) permits them when parsing an uploaded scheme for correction. | ### Returns | Type | Description | | --- | --- | | `List` | The parsed [ParameterDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) instances. | ### Exceptions | Type | Description | | --- | --- | | `ArgumentNullException` | `schemeMedium` is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). | ### Remarks The returned collection also includes [DefaultDefinitions.DefaultParameters](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/DefaultDefinitions/). `public override List ParseCommands(XElement schemeMedium, List parameterDefinitions)` Parses the [CommandDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/CommandDefinition/) instances from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | | `parameterDefinitions` | `List` | The parsed [ParameterDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ParameterDefinition/) instances used to resolve command input parameters. | ### Returns | Type | Description | | --- | --- | | `List` | The parsed [CommandDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/CommandDefinition/) instances. | ### Exceptions | Type | Description | | --- | --- | | `ArgumentNullException` | `schemeMedium` or `parameterDefinitions` is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). | | `SchemeNotValidException` | A command input references a Parameter that is absent from `parameterDefinitions`. | `public override List ParseComments(XElement schemeMedium)` Parses the [CommentDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/CommentDefinition/) instances placed on the process scheme canvas. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | ### Returns | Type | Description | | --- | --- | | `List` | The parsed [CommentDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/CommentDefinition/) instances. | ### Exceptions | Type | Description | | --- | --- | | `ArgumentNullException` | `schemeMedium` is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). | `public override string GetCalendarName(XElement schemeMedium)` Reads the scheme-level work calendar name stored in [ProcessDefinition.CalendarName](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/). ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | ### Returns | Type | Description | | --- | --- | | `String` | The scheme-level work calendar name. | ### Remarks Returns [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when no work calendar is specified. `public override List ParseActivities(XElement schemeMedium)` Parses the [ActivityDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActivityDefinition/) instances from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | ### Returns | Type | Description | | --- | --- | | `List` | The parsed [ActivityDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActivityDefinition/) instances. | ### Exceptions | Type | Description | | --- | --- | | `ArgumentNullException` | `schemeMedium` is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null), or the Scheme XML does not contain an `Activities` element. | `public override ActivityTimeout GetExecutionTimeout(XElement schemeMedium)` Parses the [ActivityDefinition.ExecutionTimeout](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActivityDefinition/) configuration for an activity. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed activity representation. | ### Returns | Type | Description | | --- | --- | | `ActivityTimeout` | The parsed [ActivityTimeout](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActivityTimeout/) configuration. | ### Remarks Returns [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when no execution timeout is specified. `public override ActivityTimeout GetIdleTimeout(XElement schemeMedium)` Parses the [ActivityDefinition.IdleTimeout](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActivityDefinition/) configuration for an activity. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed activity representation. | ### Returns | Type | Description | | --- | --- | | `ActivityTimeout` | The parsed [ActivityTimeout](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActivityTimeout/) configuration. | ### Remarks Returns [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when no idle timeout is specified. `public override List GetExceptionsHandlers(XElement schemeMedium)` Parses the handlers stored in [ActivityDefinition.ExceptionsHandlers](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActivityDefinition/) for an activity. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed activity representation. | ### Returns | Type | Description | | --- | --- | | `List` | The parsed [ActivityExceptionsHandler](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActivityExceptionsHandler/) instances. | `public override List ParseCodeActions(XElement schemeMedium)` Parses the [CodeActionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/CodeActionDefinition/) instances from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | ### Returns | Type | Description | | --- | --- | | `List` | The parsed [CodeActionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/CodeActionDefinition/) instances. | ### Exceptions | Type | Description | | --- | --- | | `ArgumentNullException` | `schemeMedium` is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). | `public override List ParseTransitions(XElement schemeMedium, List actorDefinitions, List commandDefinitions, List activityDefinitions, List timerDefinitions)` Parses the [TransitionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/TransitionDefinition/) instances from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | | `actorDefinitions` | `List` | The parsed [ActorDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActorDefinition/) instances used to resolve transition restrictions. | | `commandDefinitions` | `List` | The parsed [CommandDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/CommandDefinition/) instances used to resolve command triggers. | | `activityDefinitions` | `List` | The parsed [ActivityDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActivityDefinition/) instances used to resolve transition endpoints. | | `timerDefinitions` | `List` | The parsed [TimerDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/TimerDefinition/) instances used to resolve timer triggers. | ### Returns | Type | Description | | --- | --- | | `List` | The parsed [TransitionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/TransitionDefinition/) instances. | ### Exceptions | Type | Description | | --- | --- | | `ArgumentNullException` | `schemeMedium`, `commandDefinitions`, or `activityDefinitions` is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). | | `SchemeNotValidException` | A Transition restriction references an Actor that is absent from `actorDefinitions`. | `public override string GetSchemeCode(XElement schemeMedium)` Reads the process scheme code from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | ### Returns | Type | Description | | --- | --- | | `String` | The process scheme code. | `public override bool GetCanBeInlined(XElement schemeMedium)` Reads the value for [ProcessDefinition.CanBeInlined](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | ### Returns | Type | Description | | --- | --- | | `Boolean` | [true](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) if the process scheme can be inlined into another process scheme; otherwise, [false](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool). | `public override bool GetLogEnabled(XElement schemeMedium)` Reads the value for [ProcessDefinition.LogEnabled](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | ### Returns | Type | Description | | --- | --- | | `Boolean` | [true](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) if logging is enabled by default for [ProcessInstance](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessInstance/) instances created from the scheme; otherwise, [false](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool). | `public override DesignerSettings GetDesignerSettings(XElement schemeMedium)` Parses the [DesignerSettings](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/DesignerSettings/) from an unparsed representation. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed representation containing the settings. | ### Returns | Type | Description | | --- | --- | | `DesignerSettings` | The parsed [DesignerSettings](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/DesignerSettings/). | ### Remarks Returns [DesignerSettings.Empty](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/DesignerSettings/) when the XML contains neither a `Designer` nor an `InlineDesigner` element. `public static bool GetConditionInversion(XElement element)` Reads the value for [ConditionDefinition.ConditionInversion](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionDefinition/) from a condition XML element. ### Parameters | Name | Type | Description | | --- | --- | --- | | `element` | `XElement` | The [XElement](https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement) containing the condition XML. | ### Returns | Type | Description | | --- | --- | | `Boolean` | The parsed inversion value, or [false](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) when the attribute is absent or invalid. | `public override ProcessDefinition Parse(WorkflowRuntime workflowRuntime, string scheme, SchemeParsingType schemeParsingType = SchemeParsingType.Strict)` Parses scheme text into a [ProcessDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/). ### Parameters | Name | Type | Description | | --- | --- | --- | | `workflowRuntime` | `WorkflowRuntime` | The [WorkflowRuntime](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/WorkflowRuntime/) whose configuration is available during parsing. | | `scheme` | `String` | The scheme text to parse. | | `schemeParsingType` | `SchemeParsingType` | The parsing mode. Use [SchemeParsingType.Soft](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Builder/SchemeParsingType/) only for an uploaded scheme that may contain an unresolved parameter CLR type. | ### Returns | Type | Description | | --- | --- | | `ProcessDefinition` | The parsed [ProcessDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/). | ### Exceptions | Type | Description | | --- | --- | | `ArgumentNullException` | `scheme` is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). | | `XmlException` | `scheme` is not well-formed XML. | `public override XElement SerializeToSchemeMedium(ProcessDefinition processDefinition)` Serializes a [ProcessDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) to the unparsed scheme representation. ### Parameters | Name | Type | Description | | --- | --- | --- | | `processDefinition` | `ProcessDefinition` | The [ProcessDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) to serialize. | ### Returns | Type | Description | | --- | --- | | `XElement` | The serialized scheme represented by [XElement](https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement). | ### Remarks The returned [XElement](https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement) has a `Process` root element. `public override List GetSchemeTags(XElement schemeMedium)` Reads the tags stored in [ProcessDefinition.Tags](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeMedium` | `XElement` | The unparsed process scheme representation. | ### Returns | Type | Description | | --- | --- | | `List` | The tags associated with the process scheme. | ### Remarks Returns an empty collection when no tags are specified. `public override string GetCommonUsings(XElement element)` Reads the namespace imports stored in [ProcessDefinition.CodeActionsCommonUsings](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) from an unparsed process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `element` | `XElement` | | ### Returns | Type | Description | | --- | --- | | `String` | The semicolon-delimited namespace imports shared when [CodeActionDefinition](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/CodeActionDefinition/) instances are compiled. | ### Remarks Returns [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when no shared namespace imports are specified. [Previous WorkflowParser](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Parser/WorkflowParser-TSchemeMedium/) [Next ApprovalHistoryItem](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Persistence/ApprovalHistoryItem/)