# Class ExpressionsUtils OptimaJet.Workflow.Core.CodeActions.ExpressionsUtils Resolves the compiled expression invokers and on-demand expression cache used by a process scheme. Namespace: [OptimaJet.Workflow.Core.CodeActions](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.CodeActions/) ```csharp public static class ExpressionsUtils ``` ## Methods `public static Task GetExpressionInvokerAsync(WorkflowRuntime runtime, ProcessDefinition processDefinition)` Gets the [ExpressionsInvoker](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.CodeActions/ExpressionsInvoker/) that evaluates the compiled [ConditionType.Expression](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ConditionType/) conditions for transitions in the specified process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `runtime` | `WorkflowRuntime` | The runtime whose [WorkflowRuntime.Builder](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/WorkflowRuntime/) loads the root process scheme when `processDefinition` is a subprocess scheme. | | `processDefinition` | `ProcessDefinition` | The current process scheme for which to resolve the invoker. | ### Returns | Type | Description | | --- | --- | | `Task` | [ProcessDefinition.ExpressionsInvoker](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) from `processDefinition`, or from its root process scheme when it is a subprocess scheme. | `public static Task GeSubprocessNameGetterInvokerAsync(WorkflowRuntime runtime, ProcessDefinition processDefinition)` Gets the [SubprocessNameGetterInvoker](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.CodeActions/SubprocessNameGetterInvoker/) that evaluates compiled [TransitionDefinition.SubprocessName](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/TransitionDefinition/) values for transitions in the specified process scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `runtime` | `WorkflowRuntime` | The runtime whose [WorkflowRuntime.Builder](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/WorkflowRuntime/) loads the root process scheme when `processDefinition` is a subprocess scheme. | | `processDefinition` | `ProcessDefinition` | The current process scheme for which to resolve the invoker. | ### Returns | Type | Description | | --- | --- | | `Task` | [ProcessDefinition.SubprocessNameGetterInvoker](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) from `processDefinition`, or from its root process scheme when it is a subprocess scheme. | `public static Task GetExpressionManagerAsync(WorkflowRuntime runtime, ProcessDefinition processDefinition)` Gets the [ExpressionManager](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.CodeActions/ExpressionManager/) that compiles, caches, and evaluates expressions requested while a process is running. ### Parameters | Name | Type | Description | | --- | --- | --- | | `runtime` | `WorkflowRuntime` | The runtime whose [WorkflowRuntime.Builder](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/WorkflowRuntime/) loads the root process scheme when `processDefinition` is a subprocess scheme. | | `processDefinition` | `ProcessDefinition` | The current process scheme for which to resolve the manager. | ### Returns | Type | Description | | --- | --- | | `Task` | [ProcessDefinition.ExpressionManager](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) from `processDefinition`, or from its root process scheme when it is a subprocess scheme. | ## Remarks These expression-related services are created for non-subprocess schemes. When [ProcessDefinition.IsSubprocessScheme](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) is [true](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool), these methods load the root process scheme identified by [ProcessDefinition.RootSchemeId](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ProcessDefinition/) and return its services. [Previous ExpressionsInvoker](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.CodeActions/ExpressionsInvoker/) [Next FunctionInvoker](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.CodeActions/FunctionInvoker-TReturn/)