# Class SubprocessUtils OptimaJet.Workflow.Core.Subprocess.SubprocessUtils Algorithms for subprocesses branches Namespace: [OptimaJet.Workflow.Core.Subprocess](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Subprocess/) ```csharp public static class SubprocessUtils ``` ## Methods `public static ProcessDefinition MarkupSubprocesses(this ProcessDefinition processDefinition)` Markups scheme, sets nesting level for each Activity ### Parameters | Name | Type | Description | | --- | --- | --- | | `processDefinition` | `ProcessDefinition` | | ### Returns | Type | Description | | --- | --- | | `ProcessDefinition` | Process definition with marked nesting levels an subprocesses ids | `public static ProcessDefinition GetSubprocessDefinition(this ProcessDefinition processDefinition, TransitionDefinition startingTransition)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `processDefinition` | `ProcessDefinition` | | | `startingTransition` | `TransitionDefinition` | | ### Returns | Type | Description | | --- | --- | | `ProcessDefinition` | | `public static int GetMinDistance(this ProcessDefinition processDefinition, string fromActivityName, string toActivityName, List activitiesToAnalyze, List classifiers)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `processDefinition` | `ProcessDefinition` | | | `fromActivityName` | `String` | | | `toActivityName` | `String` | | | `activitiesToAnalyze` | `List` | | | `classifiers` | `List` | | ### Returns | Type | Description | | --- | --- | | `Int32` | | [Previous ProcessInstancesTree](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Subprocess/ProcessInstancesTree/) [Next TreeSearchFilter](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Subprocess/TreeSearchFilter/)