Логіка
Ноди секції Логіка керують розгалуженням сценарію та вибором наступної гілки виконання.
1. Condition (Умова)
Condition перевіряє JavaScript boolean expression і залежно від результату направляє сценарій у True або False гілку.
Використовуйте Condition, коли потрібно:
- перевірити значення змінної;
- порівняти результат HTTP-запиту;
- розгалузити сценарій за статусом, числом або текстовим значенням;
- перевірити кілька умов в одному expression;
- вибрати різний наступний крок залежно від результату.
Налаштування
| Поле | Значення |
|---|---|
Expression |
JavaScript boolean expression або вираз у форматі {{ expression }} |
TrueAction |
Перехід, якщо результат дорівнює true |
FalseAction |
Перехід, якщо результат дорівнює false |
NextAction |
Внутрішній fallback, якщо вибрана гілка порожня |
Основний DTO Condition не показує NextAction, тому в редакторі краще явно підключати обидві видимі гілки: True і False.
Connections
- Вхід: один стандартний connector.
- Виходи:
TrueіFalse. TrueActionвиконується, якщо expression повернув truthy boolean result.FalseActionвиконується, якщо expression повернув false.- Якщо вибрана гілка порожня, backend може використати внутрішній
NextActionfallback. - Якщо немає ані вибраної гілки, ані fallback, execution не має куди продовжитися.
Вирази
Condition.Expression приймає raw JavaScript expression:
#node.12.http.statusCode == 200 && #node.12.http.isSuccess
або вираз в одній зовнішній парі {{ ... }}:
{{ #node.12.http.statusCode == 200 && #node.12.http.isSuccess }}
Також можна використовувати helper-функції:
parseJson(#node.12.http.rawBody).items.length > 0
Як визначається результат
Результат expression приводиться до boolean.
До false приводяться:
""
0
false
no
null
undefined
NaN
До true приводяться:
ненульове число
true
yes
інший непорожній рядок
Object або array напряму до boolean не приводяться. Для них потрібно перевіряти конкретну властивість або довжину.
Вихідні змінні
Після виконання Condition створює:
#node.{id}.condition.result
#node.{id}.condition.action
Якщо під час обчислення сталася помилка, також може бути створена:
#node.{id}.condition.error
condition.result містить True або False, а condition.action — action вибраної гілки.
Приклад
HTTP Request
-> Condition "#node.12.http.isSuccess"
| True -> Screen "Успішно"
| False -> Screen "Сталася помилка"
Приклад із даними JSON response:
parseJson(#node.10.http.rawBody).order.status === "paid"
Важливі особливості
- Відсутня
#varперетворюється наnullі зазвичай даєfalse. - Порожній expression, невалідний JavaScript syntax або runtime exception створює execution error і зупиняє сценарій.
- Помилка в
Conditionне означає автоматичний перехід уFalseгілку. - Expression із
;відхиляється як недозволені statements. - Object або array не можна використовувати як прямий boolean result — перевіряйте конкретне поле або
.length. - HTML entities усередині expression декодуються, тому збережене редактором
>виконується як>. - На один expression встановлено timeout
100 ms, максимум50statements і recursion depth5. Conditionможна використовувати в синхронному AI tool.
2. Switch
Switch (SwitchNode) маршрутизує сценарій за точними значеннями одного виразу. Використовуйте його замість ланцюжка Condition, коли одна змінна або результат шаблону має вести в кілька можливих гілок.
Налаштування
| Поле | Значення |
|---|---|
ValueTemplate |
Значення для порівняння; підтримує #var і {{ JS }} |
Cases[] |
Список case: статичний текст Value плюс перехід Action |
NextAction |
Default-гілка, якщо жоден case не збігся |
Connections
- Вхід: один стандартний connector.
- Виходи: по одному виходу для кожного case, плюс
NextActionяк default-гілка. - Порівняння точне й case-sensitive.
- Спрацьовує перший case, який збігся; duplicate values дозволені.
- Case, який збігся, але має порожній action, переходить у
NextAction. - Якщо жоден case не збігся і
NextActionпорожній, execution не має куди продовжитися й завершується помилкою.
Вихідні змінні
Після виконання Switch створює:
#node.{id}.switch.result
#node.{id}.switch.action
switch.result містить True, коли case збігся, і False, коли використано default-гілку. switch.action містить вибраний action.
Приклад
Switch "#node.7.city"
| "Kyiv" -> Screen "Kyiv branch"
| "Lviv" -> Screen "Lviv branch"
| default -> Screen "Other regions"
Важливі особливості
- Редагування cases замінює весь список повністю.
Valuecase є статичним текстом і не проходить через template renderer.Switchне використовується в синхронному AI tool.