Переменные
Одно значение на весь процесс: как завести переменную, как сослаться на неё в SQL, какие переменные платформа подставляет сама.
Переменная — значение, заданное один раз на весь процесс и подставляемое в настройки шагов. Она избавляет от дублирования: идентификатор организации, имя справочной таблицы, порог отсечения перестают быть разбросанными по десятку запросов.
Панель Переменные открывается в редакторе процесса.
Как завести
У переменной четыре поля:
- Имя — латиницей, с буквы или подчёркивания, дальше буквы, цифры и подчёркивания;
- Тип — строка или число;
- Значение по умолчанию — то, что подставится, если значение не передали снаружи;
- Параметр — флажок, открывающий переменную для внешнего вызова.
Порядок переменных в списке можно менять: он определяет порядок аргументов при вызове процесса через API.
Как сослаться
В настройках шага имя переменной пишется после собачки:
SELECT * FROM events WHERE tenant_id = @tenantId AND amount > @minAmountПодстановка параметризованная: платформа заменяет ссылку на параметр запроса и передаёт значение отдельно от текста SQL. Кавычки расставлять не нужно, экранировать тоже — значение с апострофом или точкой с запятой не сломает запрос и не превратится в его часть.
Если переменной с таким именем нет, ссылка остаётся в запросе как есть, а в журнал выполнения попадает предупреждение. Ошибки при этом не будет — запрос уйдёт в базу с @varName внутри и упадёт уже там, поэтому опечатку в имени ищите в журнале, а не в тексте ошибки базы.
Системные переменные
Семь имён платформа заполняет сама. Их нельзя переопределить своей переменной: системное значение всегда побеждает.
| Переменная | Что содержит |
|---|---|
@SYS_API_URL | Базовый адрес API той площадки, где идёт выполнение |
@SYS_WORKFLOW_ID | Идентификатор процесса |
@SYS_EXECUTION_ID | Идентификатор текущего запуска |
@SYS_USER_ID | Идентификатор пользователя, от имени которого идёт запуск |
@SYS_ACCOUNT_ID | Идентификатор организации |
@SYS_TRIGGER_TYPE | Чем запущен процесс: вручную, по расписанию, вебхуком |
@SYS_NOW | Момент запуска в формате ISO 8601 |
Главное применение — переносимость. Процесс, собирающий ссылку через @SYS_API_URL, одинаково работает на рабочей площадке и на тестовой: адрес подставит та, на которой он выполняется, и править SQL при переносе не придётся.
@SYS_EXECUTION_ID удобно класть в сохраняемые данные: по нему потом видно, какой именно запуск оставил эти строки.
Префикс SYS_ зарезервирован — не заводите свои переменные с ним.
Передача значения снаружи
Переменная, отмеченная флажком Параметр, становится аргументом процесса: её значение можно передать в момент вызова, не меняя сам процесс. Остальные переменные всегда берут значение по умолчанию.
Так один процесс обслуживает много случаев: отчёт с параметром «период» вызывается то за день, то за месяц, а цепочка узлов остаётся одна.
Подробности вызова — в разделе Запуск workflow через API.