Перейти к содержанию

Модель данных

Данные пайплайна — один фрейм vars, текущий вдоль пути исполнения. Фрейм иммутабелен: каждая запись порождает новый, поэтому ветки parallel расходятся независимо и один объект безопасно отдать нескольким конкурентным потребителям. Единственная граница видимости — subpipeline: дочерний пайплайн стартует со свежим фреймом, получая данные через inputs.

arguments узла делится на бакеты: vars — ссылки на переменные фрейма, const — литералы. Бакеты смешиваются в одном узле; при совпадении имён ссылка на переменную перекрывает литерал. Отдельного поля настроек у узла stage нет: литеральная настройка — это const-аргумент.

{
  "id": "auth",
  "type": "stage",
  "stage": "AuthStage",
  "arguments": { "vars": { "creds": "creds" }, "const": { "timeout_s": 30 } },
  "outputs":   { "token": "token" },
  "consume": ["creds"],
  "next": "fetch"
}

В outputs ключ — имя поля результата стадии, значение — переменная, куда его записать. Поле, которого стадия не возвращает, отвергается Pipeline.validate() по спецификации стадии. Если стадия не объявила выходов, контракт считается необъявленным и проверка не применяется.

Выходы узла применяются как одновременное присваивание: значения вычисляются против фрейма на входе в узел и только потом записываются, поэтому порядок ключей на результат не влияет.

На карточке это две половины: над разделителем то, что узел читает, под ним — то, что пишет.

Карточка стадии на холсте

Панель справа — тот же узел в виде формы, собранной по спецификации стадии:

Тот же узел в инспекторе