Перейти до змісту

Логіка

Ноди секції Логіка керують розгалуженням сценарію та вибором наступної гілки виконання.

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 може використати внутрішній NextAction fallback.
  • Якщо немає ані вибраної гілки, ані 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, максимум 50 statements і recursion depth 5.
  • 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 замінює весь список повністю.
  • Value case є статичним текстом і не проходить через template renderer.
  • Switch не використовується в синхронному AI tool.