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

Побудова сценарію

Полотно посередині, палітра додавання та інспектор навколо. Блоки пересуваються мишею, а вигляд можна прокручувати й масштабувати.

Редактор сценаріїв із відкритою палітрою додавання: поширені блоки вгорі, далі категорії «Додати», «Списки», «Loops», «Таймер», «Математика», «Алгоритміка», «Формати даних», «Кодування», «UX»

З палітри, впорядкованої за категоріями: керування, композиція (запити та з’єднання), списки, цикли, час, математика, алгоритміка, формати даних, кодування, інтерфейс, утиліти.

Дія, прив’язана до запиту (Запит HTTP, Запит SOAP, усі дії з’єднання), вимагає вказати запит проєкту, яким вона керує.

Зв’язок «сценарій ↔ запит»

Section titled “Зв’язок «сценарій ↔ запит»”

Вибір запиту в дії створює міцний зв’язок: дія посилається на запит за його ідентифікатором, а не за копією. Звідси випливає:

  • запит залишається спільним — його зміна (URL, заголовки, тіло) змінює те, що виконують усі сценарії, які його використовують, під час їхнього наступного запуску;
  • зв’язок переживає перейменування чи переміщення запиту в дереві: він не спирається ні на назву, ні на шлях;
  • у самому запиті smartbar має кнопку «Використовується у сценаріях» — вона перелічує сценарії, що його викликають, і дає змогу перейти до них. Це рефлекс, який варто мати перед зміною спільного запиту;
  • відсутній запит (видалений або відсутній під час відкриття проєкту) спричиняє помилку перевірки сценарію: кнопка запуску залишається заблокованою, а проблемний блок позначається — жодного тихо зламаного сценарію.

Щоб відтворити той самий запит, не чіпаючи його збереженої версії, не змінюйте його: скористайтеся перевизначеннями (швидкий параметр, перевизначення дії, зв’язок), описаними в розділі Перевизначення запиту.

Кожен блок має свої поля, які заповнюються прямо на блоці або в інспекторі. Поля приймають типізовані значення — рядок, число, булеве, дату, вираз Handlebars, змінну, власний список, секрет… — див. Змінні та середовища.

Ctrl+Space викликає автодоповнення змінних і помічників у полях, які його підтримують.

Тягніть від вихідного порту до вхідного.

Два правила, які варто знати:

  1. Вхідний порт приймає лише один зв’язок — окрім порту in, який приймає скільки завгодно й тоді працює як бар’єр.
  2. Вихід чистого сигналу не може живити вхід чистого значення. Усе інше дозволено: вихід, який несе значення, слугує й тригером.

Подробиці: Порти та зв’язки.

Зв’язок може мати селектор — шлях, застосований до значення в дорозі.

data.items[0].id
body['user-id']
status

Саме це позбавляє потреби вставляти блок перетворення між кожним викликом і його споживачем. Селектор налаштовується під час створення зв’язку або пізніше; якщо його очистити, він зникає.

Дія, прив’язана до запиту, може змінювати його, не чіпаючи самого запиту. Чотири шари, саме в такому порядку:

  1. запит таким, як його збережено;
  2. швидкий параметр (quick config), вказаний на дії, — саме так повторно використовують збережений варіант запиту просто у сценарії, не вводячи його заново;
  3. перевизначення, введені на дії;
  4. значення, що надходить зв’язком на порт перевизначення.

Це охайний спосіб відтворити той самий виклик із трьома наборами даних.

Повторне спрацювання на кожну подію

Section titled “Повторне спрацювання на кожну подію”

Контекстне меню блоку пропонує «Повторювати на кожну отриману подію». Якщо цей параметр увімкнено, усі під’єднані входи перетворюються на неблокувальні логічні «або»: блок спрацьовує заново на кожне значення, отримане будь-яким портом, замість того щоб чекати, поки надійдуть усі.

Це незамінно для обробки потоку (кожне повідомлення MQTT, кожна подія SSE), а ще саме це розблоковує цикл завершення.

  • Блок Input / Param оголошує параметри сценарію. Вони надаються під час запуску, у командному рядку (--param ім'я=значення) або запитуються під час виконання в інтерактивному режимі.
  • Блок Output / Return віддає результат тому, хто викликав, — це корисно, коли сценарій викликається іншим через дію Запустити сценарій.

Restorm уміє автоматично впорядковувати граф (розкладка); блоки й після цього можна пересувати вручну. Ctrl+Z скасовує, Ctrl+Shift+Z повертає.

Кнопка запуску заблокована, доки залишаються помилки перевірки: неправильний зв’язок, відсутній запит, порожнє обов’язкове поле. Проблемні блоки позначаються.