Документация Corta
-
Аутентификация
-
Аутентификация внешних приложений
-
Аутентификация с использованием Corta
-
Модель безопасности
-
Управление приложениями
-
Настройка No Code
-
Макеты страниц
-
Версионность изменений
-
Настройка хранения записей
-
Открытие записей во всплывающих окнах
-
Импорт и экспорт приложений
-
Обнаружение дубликатов
-
Справочник типов полей
-
Справочник по блокам страницы
-
Доступ к системе Corta
-
Подключения к базам данных (DAL)
-
Управление подключениями
-
Конфиденциальность данных
-
Автоматизация
-
Детали выполнения автоматизации
-
Бизнес-процессы
-
Подпроцессы
-
Жизненный цикл выполнения
-
Руководство по стилю бизнес-процессов
-
Область видимости бизнес‑процесса: подробно
-
Обработка выбора записей
-
Работа с электронной почтой
-
Тестирование и отладка бизнес-процессов
-
Шлюз интеграции
-
Профайлер маршрутов интеграционного шлюза
-
Поисковый сервис
-
Отчётность
-
Предфильтры в Corta
-
Настройка интеграции данных в Corta
-
Обработка ошибки устаревших данных
Область видимости бизнес‑процесса: подробно
Область видимости (scope) определяет, к каким данным текущий шаг процесса Corta может получить доступ и какие данные он может изменять.
В большинстве стандартных сценариев это не принципиально, но при проектировании больших и сложных бизнес‑процессов понимание механизма области видимости становится особенно важным.
Составные типы данных передаются между шагами процесса по указателю. Это означает, что любое изменение такого объекта в одной области видимости автоматически отразится на всех остальных областях, где этот объект присутствует.
Пример:
Один и тот же пользователь есть в двух разных областях видимости. Если в одной из них изменить имя пользователя, эти изменения будут видны и в другой области.
Схематично: оба шага работают с одним и тем же пользователем:

Шлюзы
Когда выполнение бизнес‑процесса доходит до шага шлюза (gateway), для каждой ветки (соединителя) создаётся новая область видимости на основе родительской (обычно — глобальной).
Когда ветки объединяются, области видимости этих ветвей сливаются обратно в родительскую область в том порядке, в котором изначально были определены соединители (все изменения и созданные в ветках переменные переносятся в родительскую область).
Порядок слияния соответствуют тому, как были изначально добавлены соединители. Визуальное изменение порядка соединителей не влияет на логику слияния.

Главные действия на приведённой схеме:
- Установка переменной
global_v1 = 1
в глобальной области. - В первой ветке (
branch 1
) создаётся переменнаяlocal_v1 = 1
. - Во второй ветке (
branch 2
) создаётся переменнаяlocal_v2 = 1
. - Логируются переменные текущей области.
Ниже показана трассировка стека выполнения с аннотированными областями (тёмные блоки с номерами):

В данном примере используется "разветвляющий" шлюз.
- При старте процесса глобальная область содержит переменную
global_v1 = 1
. - При входе в шлюз для каждой ветки создаётся новая область: "branch 1 scope" и "branch 2 scope".
- При выполнении первой ветки создаётся/меняется только локальная переменная области этой ветки (
local_v1 = 1
), глобальная область не изменяется. - Аналогично, во второй ветке (
local_v2 = 1
), глобальная область не затрагивается. - После завершения обеих ветвей, на этапе объединения ("join"), области всех ветвей сливаются обратно в глобальную область в исходном порядке. Если первой объединяется ветка 1, её данные берут приоритет.
Итераторы
Когда выполнение доходит до шага итератора, создаётся новая область видимости на основе родительской (обычно глобальной).
По окончании работы итератора (когда перебрали все элементы или цикл был прерван), область итератора сливается обратно в область-родитель (все изменения и новые переменные переносятся в родительский scope).

Основные шаги примера:
- Инициализация переменной
global_v1 = 1
в глобальной области. - Итератор 1 выполняется 1 раз.
- Внутри него: увеличивается
global_v1
на 1, создаётсяlocal_v1 = 1
.
- Внутри него: увеличивается
- Итератор 2 выполняется 1 раз.
- Внутри него: снова увеличивается
global_v1
на 1, создаётсяlocal_v2 = 1
.
- Внутри него: снова увеличивается
- Логируется состояние переменных.
Трассировка выполнения с отмеченными областями — на изображении ниже:

Подробно по шагам:
- При старте процесса в глобальном scope:
global_v1 = 1
. - При входе в первый итератор формируется новая область на основе глобальной.
- При увеличении
global_v1
и добавленииlocal_v1
, меняется только область текущего итератора (глобальный scope вне итератора остаётся без изменений). - При входе во второй итератор формируется вторичная область на основе предыдущей области итератора 1.
- Аналогично: увеличение
global_v1
и созданиеlocal_v2
меняют только scope текущего итератора (предыдущий итератор не затрагивается). - После завершения второго итератора области сливаются: области второго и первого итератора объединяются, состояние итератора 1 обновляется.
- После завершения первого итератора его область объединяется с глобальной. Глобальный scope обновлён с учётом всех изменений.