Processes are an automation mechanism for complex business scenarios that lets you build visual execution diagrams for actions, with support for conditional logic, parallel execution, and error handling.
Key concepts
Process elements
A process consists of various types of elements:
- “Start” — the process entry point.
- “Task” — runs a specific action.
- “Exclusive gateway” — conditional branching.
- “Parallel gateway” — merges several process branches into one.
- “Loop” — repeats part of the process a fixed number of times, or iterates over a JSON array from the store.
- “Template” — evaluates a Go template and writes the result to the process store.
- “Timer” — pauses until a specified point in time.
- “Note” — a text block.
- “Error” — immediately stops the process with the
Failedstatus. - “End” — completes the process.
Creating a process
Basic information
To create a process, go to “Self-service” → “Processes” and click “Create”.
Fill in the following fields:
- “Name” — the process name.
- “Description” — a detailed description of the process’s purpose.
- “Resource” — one or more resources for which the process can be run.
- “Owner” — the user responsible for the process.
- “Owner team” — the team responsible for the process.
- “Tags” — tags used to categorize the process.
- “Icon” — the icon displayed in the interface.
Process configuration
The process is configured in the visual editor, on the “Configuration” tab.
To configure a process, you must first fill in the basic fields and create it. After that, the “Configuration” and “Parameters” tabs become available.
Adding elements
To add elements to the diagram:
- Add an element by selecting its type in the editor panel.
- Configure the element’s parameters in the side panel (action, conditions, etc.).
- Connect the elements to each other.
Element types
Task
Each task runs a specific action previously created in “Self-service” → “Actions”.
Exclusive gateway
An exclusive gateway lets you configure process branching based on conditions. By default, the status of the previous task is checked, and depending on it, execution follows the “success” or “failure” branch.
As conditions for an exclusive gateway, you can set either a check of the previous task’s status, or a comparison of values from templates:
- To check the status of the previous task, use the construct
{{ .prev_task.status }}. - To check a value from the store, use
{{ .store.<path> }}, including nested keys:{{ .store.notification.status }}. - Inside a loop — fields of the current item:
{{ .store._loop.item.scan_type }}, and the flags{{ .store._loop.first }}and{{ .store._loop.last }}.
You can check multiple conditions and combine their results using the AND or OR operator.
If the condition check passes, the process follows the “True” branch (green); if not, it follows the “False” branch (red). The “True” and “False” ports can be placed on any side of the gateway; a connection can be moved to a different port.
Parallel gateway
Used to merge several branches into one, based on specified conditions.
In the parallel gateway’s configuration, you can set the following waiting parameters:
- Wait for all incoming elements to complete before continuing execution.
- Wait for at least one incoming element to complete before continuing execution.
You can also configure what exactly counts as “completion”:
- Only successful completion of the tasks feeding into the gateway.
- Any final status of the incoming tasks (
Failed,Skipped, etc.).
A parallel gateway can also be used to split branches, if connected after “Exclusive gateway” or “Loop” elements, or as a helper element to improve the readability of the process diagram.
Loop
The “Loop” element repeats a branch of the process either a fixed number of times, or once for each element of a JSON array from the store. Once all iterations are complete, the element connected to the loop’s exit is activated.
Loop mode
Two modes are available:
- “Fixed number” — the “Number of iterations” field, from 1 to 10000. On each iteration,
{{ .store._loop.item }}holds the iteration number (1, 2, 3…). - “By collection” — the “Collection template” field: a Go template that, when entering the loop, must produce a JSON array. Typically, this is a path to an array written by a previous task:
{{ .store.notification.engagements }}. Each array element is one iteration; the current element is available as{{ .store._loop.item }}.
If the array is empty or the key is missing, the loop body is not executed, and the process immediately follows the “Loop exit” connection.
For more information, see Process store.
Outgoing connections
Exactly two connections to different elements must originate from the “Loop” element:
- “Loop body” — the branch built from this port is executed on each iteration.
- “Loop exit” — execution continues along this branch after the last iteration.
The “Loop body” and “Loop exit” ports can be placed on any side of the element; a connection can be moved to a different port.
Usage
Typical scenarios:
- repeatedly checking the status of an external system with a fixed number of attempts;
- iterating over a list of objects from an API response: a task writes the array to the store, and a loop in “By collection” mode processes each element;
- nested loops — the parent context is available via
{{ .store._loop.parent }}.
Template
The “Template” element evaluates a Go template without calling an additional action, and writes the result to the store as a string.
Configure:
- “Template body” — text with placeholders
{{ .store.* }},{{ .process.* }}, and, inside a loop,{{ .store._loop.* }}; - “Store key” — the destination dot-path, e.g.
rendered_message; - “Format hint” — how to display the value when viewing the run (
text,markdown,html,json); does not affect the store’s content.
For examples and limitations, see Process store.
Timer
The “Timer” element pauses process execution until a specified point in time, after which the next element is activated.
While the process is only waiting for the timer to fire (no other active tasks), the run is placed in the “Wait” status. The run visualization panel shows a banner with the estimated resumption time.
Outgoing connections
Exactly one connection to the next element must originate from the “Timer” element. Connection is only possible through the left (input) and right (output) ports.
If the timer is passed through again within the same run (for example, via a loop), the trigger time is recalculated.
Schedule modes
In the timer’s configuration, select a “Schedule”:
- “Delay after entering the element” — a fixed pause from the moment the process reaches the timer. Set the “Delay (seconds)” from 1 to 1,209,600 (14 days).
- “Custom schedule” — triggers at a specified calendar time in the selected time zone (IANA, e.g.
Europe/Moscow).
For “Custom schedule” mode, specify a “Pattern”:
- “Specific day of the week” — “Day of the week”, “Time of day” (hour and minute), “Time zone”.
- “Specific day of each month” — “Day of month” (1–31), “Time of day”, “Time zone”. If the month does not have that day, the last day of the month is used.
- “Every N days” — “Every N days” (1–365), “Time of day”, “Time zone”. The first trigger is no earlier than N calendar days from the day the process reached the timer; upon re-entering the element, the calculation is redone.
“Time of day” is set in the selected time zone (the “Time zone” field), if it differs from the browser’s time zone.
Usage
Typical scenarios: a pause before re-checking the status of an external system, a delayed start of the next step, waiting for a maintenance window, or a regular calendar slot.
Note
The “Note” element is intended for text annotations on the process diagram: it is not executed at runtime and is not connected to other elements.
In the note’s configuration, you can set:
- “Text” — content with Markdown support.
- “Background color” — the fill color.
- “Text color” — the text color.
A note is always positioned behind other elements and can be used to visually highlight parts of the process. It is also the only element whose size can be changed.
Error
The “Error” element forcibly transitions a running process to the Failed status: when this element is reached, execution of all process actions is interrupted.
No connections to subsequent elements should originate from this element.
Process parameters
The “Parameters” tab is used to configure process parameters that can be used in all actions within the process.
The configuration and use of process parameters are described in Templating.
Process store
The process store is a JSON object used to pass data between steps of a single run: identifiers, arrays, intermediate results, and text produced by the “Template” element.
For a full description of write rules, operations, loop context, and example scenarios, see Process store.
In brief:
- One store per run — each process instance has its own store; it can be viewed on the “Store” tab when visualizing a run.
- Nested paths — keys are specified with dots:
notification.module_name,ctx.job.id; array indices are supported:items[0].status. - Rule-based writes — data is written to the store after an action completes successfully (see Process store update), or when the “Template” element runs. Available operations include writing strings and JSON, appending, merging, and deleting, plus a condition for each rule.
- Reading — Go templates
{{ .store.<path> }}in action configuration and gateway conditions (see Process store).
If a key is not present in the store, the template {{ .store.<path> }} will cause the step to fail with an error.
Running a process
Manual run
To run a process manually:
- Go to the entity for which the process needs to be run.
- In the entity’s menu, select “Run process”.
- Choose the desired process from the list.
- Fill in the process parameters.
- Click “Run”.
Launch parameters
The following are available when launching a process:
- “Common process parameters” — parameters defined in the process configuration.
- “Action parameters” — parameters for each action in the process.
- “Environment variables” — additional variables for execution.
Execution management
Process statuses
A process can be in one of the following statuses:
- “Created” — the process has been created but not run.
- “Running” — the process is currently running.
- “Paused” — process execution has been paused.
- “Completed” — the process completed successfully.
- “Failed” — the process finished with an error.
- “Cancelled” — process execution was cancelled.
Management operations
The following operations are available for active processes:
- “Pause” — temporarily stop execution.
- “Resume” — continue execution after pausing.
- “Stop” — completely stop execution.
- “Force restart” — restart the process from the beginning.
State tracking
In the “Process runs” section, you can view:
- A list of all process runs for the entity.
- Detailed information about each run.
- Action execution logs.
- The status of each process element.
- The process execution timeline.
- The contents of the process store on the “Store” tab.
Timeline
The run visualization panel has a “Timeline” tab that shows the process execution history: for each element that participated in the current run, the start and end times, duration, and status are shown.
Process log
A detailed execution log is available for each process run: a panel on the run diagram, a separate window, or a dock at the bottom of the screen. The log and the store’s JSON can be downloaded from the process run dialog panel.
Usage examples
Creating a configured project
Typical process diagram:
- “Start” — starts the process.
- “Task” — creates a project in GitLab.
- “Exclusive gateway” — checks whether creation succeeded.
- “Task” (on success) — configures the project’s variables.
- “Task” (on failure) — sends an error notification.
- “End” — completes the process.
Deploying an application
Typical process diagram:
- “Start” — starts the deployment process.
- “Parallel gateway” — splits into branches.
- “Task” (branch 1) — creates a namespace in Kubernetes.
- “Task” (branch 2) — creates secrets in Vault.
- “Parallel gateway” — waits for both branches to complete.
- “Task” — deploys the application.
- “End” — completes the process.
Limitations
The following limitations apply to processes:
- Processes cannot contain more than 100 elements.
- The maximum process execution time is 24 hours.
- The number of concurrent process runs is limited by system settings.
- Some actions may not be available for use in processes.