Керування
П’ять блоків керують потоком виконання сценарію.
Нагадування: кожен блок має ще й неявні порти in, error та done — див.
Порти та зв’язки.
Input / Param (вхід / параметр)
Section titled “Input / Param (вхід / параметр)”Оголошує параметри сценарію.
| Входи | немає |
| Виходи | value — єдиний об’єкт { ім'я: значення, … } |
| Конфігурація | name (назва параметра), valueType (його тип і значення за замовчуванням) |
Значення надаються під час запуску, через --param ім'я=значення в командному
рядку або запитуються інтерактивно, якщо виконання дійшло до блоку без
доступного значення.
Вхід «baseUrl» (рядок) ──► порт env запитуOutput / Return (вихід / повернення)
Section titled “Output / Return (вихід / повернення)”Віддає результат тому, хто викликав сценарій.
| Входи | value |
| Виходи | немає — це стік: ні error, ні done |
| Конфігурація | name |
Сценарій, викликаний дією Запустити сценарій, робить кожен свій вихід
доступним на порту output:<ім'я> того, хто його викликав.
If (якщо)
Section titled “If (якщо)”Розгалуження на два шляхи.
| Входи | left, right |
| Виходи | then, else |
| Конфігурація | operator: lt, lte, eq, gte, gt, ne, contains — а також left і right як буквальні значення |
Порада: якщо жодного операнда не під’єднано й не заповнено, блок просто
перевіряє істинність сигналу, отриманого на in. Це «якщо ми дійшли аж сюди»
без явної умови.
Switch (перемикач)
Section titled “Switch (перемикач)”Розгалуження на N шляхів.
| Входи | on |
| Виходи | по порту case-<id> на кожен оголошений випадок плюс default |
| Конфігурація | cases: перелік { id, value } |
Кращий за каскад If, щойно результатів більше двох: кожен випадок — це окремий провід, візуально читабельний.
Retry (повторити)
Section titled “Retry (повторити)”Межа відновлення після помилки.
| Входи | maxAttempts, delay |
| Виходи | attempt (кожна спроба), exhausted (спроби вичерпано) |
| Конфігурація | див. нижче |
| Поле | Типово | Роль |
|---|---|---|
maxAttempts | 3 | Максимальна кількість спроб |
backoff | fixed | fixed, linear або exponential |
delay + delayUnit | — | Базова затримка (ms, s, min) |
factor | 2 | Коефіцієнт зростання в експоненційному режимі |
maxDelay + maxDelayUnit | — | Межа затримки |
retryOnError | true | Повторювати в разі помилки |
retryOnFailure | false | Повторювати в разі предметної невдачі |
retryOnStatus | — | Перелік статусів HTTP, наприклад [429, 503] |
Підграф, під’єднаний до attempt, і становить ту область, яку повторюють. У
разі успіху вихід відбувається через done. Цей блок не має порту error:
саме він і є межею.
Повторити (3, експоненційно, [429,503]) ├─ attempt ──► Запит HTTP ──► Assert └─ exhausted ──► Throw «служба недоступна»