Flow Control Activities
Flow Control activities define the execution path of a workflow — branching on conditions, iterating over collections, handling errors, composing sub-workflows, and pausing execution. They are the backbone of every automation.
BreakBreak
Exit the current loop immediately. Works inside ForEach and While loops.
This activity takes no parameters.
CommentComment
Add a comment or note to the workflow. Does not affect execution.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Text | String | No | — | The comment text (displayed in the workflow designer and logged during execution) |
ContinueContinue
Skip to the next iteration of the current loop. Works inside ForEach and While loops.
This activity takes no parameters.
DelayDelay
Pauses workflow execution for a specified duration.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Duration | String | Yes | 00:00:01 | Duration to delay in format hh:mm:ss (e.g., 00:00:05 for 5 seconds, 00:01:30 for 1 minute 30 seconds). Also accepts seconds as a number. Supports variable references. |
Do WhileDo While
Executes actions first, then repeats while a condition remains true (body runs at least once).
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Condition | String | Yes | — | Boolean expression checked AFTER each iteration (e.g., '${i} < 10'). Loop continues while true. |
Counter | String | No | doWhileCounter | Variable to store the current iteration count (0-based) |
MaxIterations | Int32 | No | — | Maximum number of iterations (safety limit, default 10000) |
BodyActions | List<Object> | No | — | Actions to execute in each iteration |
Else IfElse If
Evaluates condition only if no previous If/Else If in the chain matched. Place directly after an If or another Else If.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Condition | String | Yes | — | Boolean expression to evaluate (e.g., '${Score} >= 90' or '${Status} == "Pending"') |
ThenActions | List<Object> | No | — | Actions to execute if condition is true |
ElseActions | List<Object> | No | — | Actions to execute if condition is false |
For EachFor Each
Iterates over a collection and executes actions for each item.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
In | Object | Yes | — | Collection of items to iterate (List, Array, DataTable, etc.) |
ItemName | String | No | currentItem | Name of the variable that will hold the current item during each iteration |
ArgumentType | String | No | Object | The type of each item in the collection Allowed: Boolean, Int32, String, Object, DataTable, File, Array |
Condition | String | No | — | Optional condition to filter items (VB expression) |
MaxIterations | Int32 | No | — | Maximum number of iterations (leave blank for no limit) |
Index | Int32 | No | currentIndex | Variable to store the current iteration index (0-based) |
BodyActions | List<Object> | No | — | Actions to execute for each item |
If ConditionIf
Executes one sequence of actions if a condition is true, otherwise executes an alternative sequence.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Condition | String | Yes | — | Boolean expression to evaluate (e.g., '${Count} > 10' or '${Status} == "Active"') |
ThenActions | List<Object> | No | — | Actions to execute if condition is true |
ElseActions | List<Object> | No | — | Actions to execute if condition is false |
Invoke WorkflowInvoke Workflow
Call another workflow as a sub-process, passing arguments and capturing outputs.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Workflow | String | Yes | — | Workflow file to invoke (relative path within the project). |
Arguments | String | No | — | JSON array of ArgumentMapping — maps parent variables to/from child workflow parameters. Direction is auto-detected. |
ParallelParallel
Execute child activities in parallel. All branches run simultaneously.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
CompletionCondition | String | No | All | When to complete: 'All' waits for all branches, 'Any' completes when first branch finishes Allowed: All, Any |
RethrowRethrow
Re-throw the current exception from a Catch block. Use inside TryCatch Catch blocks to propagate errors.
This activity takes no parameters.
RetryRetry
Retry failed activities with configurable attempts, exponential backoff, and exception type filtering.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
MaxAttempts | Int32 | No | 3 | Maximum number of retry attempts (including the first attempt) |
RetryInterval | Int32 | No | 1000 | Delay between retries in milliseconds |
ExponentialBackoff | Boolean | No | True | Use exponential backoff (1s, 2s, 4s, 8s...) instead of fixed interval |
RetryOnExceptions | String | No | — | Comma-separated exception types to retry on (e.g. 'TimeoutException,IOException'). Leave empty to retry on all exceptions. |
SequenceSequence
Executes a set of child activities according to a single, defined order.
This activity takes no parameters.
SwitchSwitch
Multi-branch conditional. Evaluates an expression and executes the matching case branch.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Expression | String | Yes | — | The expression to evaluate. The result is matched against case values. |
ThrowThrow
Throw a custom exception with a message. Use inside Try Catch blocks for error signaling.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Message | String | Yes | — | The exception message to throw |
ExceptionType | String | No | Exception | The type of exception to throw Allowed: Exception, ArgumentException, InvalidOperationException, NotSupportedException, TimeoutException, FormatException, IOException, ApplicationException |
Try CatchTry Catch
Execute activities with error handling. Catch exceptions and optionally run cleanup logic in a Finally block.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Rethrow | Boolean | No | False | Re-throw the caught exception after executing the Catch block |
While LoopWhile
Repeatedly executes actions while a condition remains true.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Condition | String | Yes | — | Boolean expression to evaluate (e.g., '${i} < 10' or 'i < 10') |
Counter | String | No | whileCounter | Variable to store the current iteration count (0-based) |
MaxIterations | Int32 | No | — | Maximum number of iterations (leave blank for default 10000 safety limit) |
BodyActions | List<Object> | No | — | Actions to execute in each iteration |