Выполнить подпроект | Execute Project

Execute Project запускает другой проект из текущего пайплайна. Например, головной проект может последовательно запустить загрузку справочников, затем документов, затем расчёт витрины.

Основные настройки

Настройка

Что означает

Целевой проект

Проект, который нужно запустить

Ожидать выполнение (wait_for_completion)

Продолжить текущую цепочку только после успешного завершения подпроекта

Время ожидания (timeout_sec)

Сколько секунд ждать завершения подпроекта; без ограничения ожидание продолжается до его завершения

Отмена по таймауту (cancel_on_timeout)

Запросить отмену подпроекта, если время ожидания истекло

Если ожидание выключено, нода завершает работу после постановки подпроекта в очередь. Следующая нода может начать работу до завершения подпроекта. Такой режим не гарантирует последовательную обработку данных между проектами.

Если ожидание включено, ошибка или отмена подпроекта приводит к ошибке ожидающей ноды. Её можно обработать через выход signal_error.

EXEC-01

Ожидание подпроекта включено; таймаут 3600 секунд, отмена по таймауту включена.

Последовательный запуск

  1. Добавьте Execute Project и выберите первый подпроект.

  2. Включите «Ожидать выполнение».

  3. Добавьте вторую Execute Project и выберите следующий подпроект.

  4. Соедините выход успешного выполнения первой ноды со входом управляющего сигнала второй.

  5. Включите ожидание у второй ноды, если следующие действия зависят от её результата.

Для запуска с ожиданием в DVT должны быть доступны минимум два работающих воркера: один занят родительским проектом, второй выполняет подпроект. Если свободной ёмкости для безопасного ожидания недостаточно, DVT отклоняет такой запуск с ошибкой. При этой ошибке обратитесь к администратору, чтобы проверить доступность воркеров.

Не выбирайте текущий проект в качестве подпроекта с включённым ожиданием: ожидать собственное завершение нельзя.

Таймаут и отмена

Таймаут ограничивает ожидание, а не длительность любого запуска подпроекта. При его истечении ожидающая нода завершается с ошибкой.

  • Если отмена по таймауту выключена, подпроект может продолжить работу.

  • Если она включена, DVT запрашивает отмену подпроекта. Завершение отмены может занять время.

Передача переменных

Подключите выход переменных предыдущей ноды ко входу переменных Execute Project. Переданные значения используются как переменные запуска дочернего проекта; его сохранённые настройки не нужно менять для каждого запуска.

Для неразрешённых переменных можно выбрать «Остановить с ошибкой» или «Пропустить переменную». Для системных переменных доступны передача, пропуск или остановка с ошибкой.

Пример: передайте organization_id, а в SQL дочернего проекта используйте {{ project_variables.organization_id }}. Подробнее о синтаксисе — в инструкции по переменным.

Запуск по строкам датафрейма

Подключите датафрейм ко входу variables_df и включите ожидание. Нода запускает подпроект последовательно для каждой строки: имена колонок становятся именами переменных, значения строки — их значениями.

organization_id

date_from

10

2026-01-01

20

2026-02-01

Для этого примера подпроект сначала выполнится для организации 10, затем для организации 20. Настройте подходящие типы колонок, если дата должна передаваться именно как дата, а не как строка.

Значения строки заменяют одноимённые переменные, поступившие на вход Execute Project. Имена колонок должны быть непустыми и уникальными. Пустой датафрейм не создаёт запусков. Если очередной подпроект завершится ошибкой, дальнейшие строки в этом вызове ноды не обрабатываются.

EXEC-02

Выход датафрейма соединён с variables_df ноды Execute Project.

Две строки параметров

Каждая строка запускает подпроект: организация 10 с датой 2026-01-01, затем организация 20 с датой 2026-02-01.

Обработка ошибки подпроекта

У ожидающей Execute Project соедините signal_error с нодой обработки ошибки. Текст ошибки доступен через __dvt_error_text, если передать также переменные. Выход успешного выполнения используйте для продолжения основной цепочки.

Conditional Signal Router выбирает ветку по логическому условию и сам по себе не перехватывает ошибки подпроекта. Готовый пример: обработка ошибок прямо в пайплайне.