Использование переменных

Основные понятия

Как и переменные в языке программирования, переменные в рабочем процессе — важный инструмент для связывания и организации процессов.

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

  • Контекстные данные триггера: например, при триггерах событий действия или событиях коллекции объект данных одной строки может использоваться всеми узлами как переменная. Конкретика зависит от реализации каждого триггера.
  • Данные вышестоящего узла: когда выполнение доходит до любого узла — это данные результата ранее завершённых узлов.
  • Локальные переменные: когда узел находится внутри особых ветвящихся конструкций, он может использовать локальные переменные этой ветки. Например, в цикле можно использовать объект данных каждой итерации.
  • Системные переменные: встроенные параметры системы, например текущее время.

Мы уже неоднократно использовали переменные в разделе Быстрый старт. Например, в узле «Вычисление» можно ссылаться на контекстные данные триггера при вычислениях:

Узел вычисления с функциями и переменными

В узле «Обновить запись» контекст триггера можно использовать как переменную в условии фильтрации, а результат узла «Вычисление» — как переменную для значения обновляемого поля:

Переменные в узле обновления записи

Структура данных

Внутренне переменная задаётся как структура JSON, и обычно можно использовать конкретный фрагмент данных по его JSON-пути. Так как многие переменные основаны на структуре коллекций NocoBase, данные связей выстраиваются по уровням как свойства объектов и образуют древовидную структуру. Например, можно выбрать значение конкретного поля из данных связи в результате запроса. Кроме того, если связь ведёт к множеству связанных записей, переменная может быть массивом.

При выборе переменной чаще всего нужен атрибут значения на последнем уровне — обычно это простой тип данных (число или строка). Если же на каком-то уровне иерархии есть массив, последний уровень тоже отображается как массив. Такие данные можно корректно обработать только если узел поддерживает массивы. Например, в узле «Вычисление» часть вычислительных движков имеет функции для работы с массивами. Другой пример — узел «Цикл»: объект цикла тоже может быть массивом.

Например, когда узел «Выбрать записи» возвращает несколько записей, результат узла будет массивом нескольких однотипных строк данных:

[
  {
    "id": 1,
    "title": "Title 1"
  },
  {
    "id": 2,
    "title": "Title 2"
  }
]

Если этот результат в последующих узлах используется как переменная и выбран путь вида Данные узла / Выбрать записи / Заголовок, получится массив значений соответствующего поля по всем строкам:

["Title 1", "Title 2"]

Если это многомерный массив (например, поле связи «многие-ко-многим»), после развёртывания получится одномерный массив значений этого поля.

Встроенные системные переменные

Системное время

Возвращает системное время в момент выполнения узла. Часовой пояс соответствует настройке на сервере.

Параметры диапазона дат

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

Параметры диапазон�а дат