Porty a propojení
Rozumět portům znamená rozumět tomu, kdy se blok spustí. Tato stránka je referencí celého modelu.
Tři implicitní porty
Section titled “Tři implicitní porty”Má je každý blok, aniž by se objevily v jeho konfiguraci:
| Port | Směr | Tok | Role |
|---|---|---|---|
in | Vstup | Signál | Spouštěč. Přijímá více vstupních propojení |
error | Výstup | Hodnota + signál | Trasa selhání |
done | Výstup | Signál | Vysílá se po dokončení bloku a celého jeho navazujícího podgrafu |
Tři bloky nemají port error: Výstup, Nyní a Retry (ten je sám
o sobě chybovou hranicí). Dva nemají done: Výstup a Throw.
Typy toků
Section titled “Typy toků”| Tok | Myšlenkový symbol | Chování |
|---|---|---|
| Hodnota | Data | Přenáší hodnotu; slouží zároveň jako spouštěč |
| Signál | Impulz | Nepřenáší nic, pouze spouští |
| Obojí | Přenáší hodnotu a spouští |
Jediná zakázaná kombinace: výstup s čistým signálem do vstupu s čistou hodnotou. Nebylo by co do hodnoty vložit.
Datové typy
Section titled “Datové typy”any · json · number · string · boolean · duration · response ·
status · list · object.
Typování slouží především vizuálnímu pohodlí, s jedinou striktní výjimkou: vstup
typu seznam (port list akcí Přidat do seznamu a Odebrat ze seznamu)
odmítne zdroj, který se seznamem není kompatibilní. json a list jsou spolu
kompatibilní; prostý object nikoli.
- Vstupní port přijímá jen jediné propojení. Právě to dělá graf čitelným: jedna hodnota, jeden původ.
- Kromě
in, který přijímá libovolný počet propojení. - Výstup může napájet libovolný počet vstupů.
Kdy se blok spustí
Section titled “Kdy se blok spustí”Tři pravidla, v tomto pořadí:
- Kořeny startují. Každý blok bez vstupního propojení se při spuštění scénáře nastartuje. Žádný blok „start“ neexistuje.
- Čeká se jen na zapojené vstupy. Blok se spustí ve chvíli, kdy každý z jeho skutečně zapojených vstupních portů obdržel hodnotu. Na nezapojený port se nikdy nečeká. Hodnoty zůstávají zapamatované: vstup si podrží poslední přijatou hodnotu.
- Port
intvoří bariéru. Je-li napájen několika propojeními, počká, až dorazí všechna, a poté se spustí jednou. To je ono „počkej, až budou tyto tři větve hotové“ z celého modelu.
Výjimka: přehrání při každé události
Section titled “Výjimka: přehrání při každé události”Volba „Spustit při každé přijaté události“ (kontextová nabídka bloku) změní všechny zapojené vstupy na neblokující hradla „nebo“: blok se znovu spustí při každé hodnotě přijaté na kterémkoli portu.
Dvě použití: zpracovat stream zprávu po zprávě a odblokovat cyklus dokončení (graf, který se vrací sám do sebe).
done versus hodnotový výstup
Section titled “done versus hodnotový výstup”To je v praxi nejužitečnější rozlišení:
- hodnotový výstup vysílá, jakmile blok vytvořil svůj výsledek;
donenavíc počká, až skončí vše, co tento výsledek spotřebovává.
Pro sekvencování — „udělej tohle všechno a pak ukliď“ — zapojujte z done. Pro
předání dat zapojujte z hodnotového výstupu.
Podmíněné větve
Section titled “Podmíněné větve”Nejsou zvláštním mechanismem: jsou to výstupní porty nesoucí roli, která řídí jejich barvu.
| Blok | Výstupy |
|---|---|
| If | then / else |
| While, Do…While | then (tělo) |
| Assert | then (úspěch) / else (selhání) |
| Retry | attempt / exhausted |
| Validace schématu | valid / invalid / errors |
| Switch | jeden port na každý případ, plus default |
| Připojení Socket.IO | jeden port na každou deklarovanou událost, plus others |
Selektory propojení
Section titled “Selektory propojení”Propojení může nést selektor: cestu uplatněnou na procházející hodnotu.
data.items[0].idbody['user-id']headers["content-type"]statusPřijímají se tvary a.b, a[0], a['clé'] a a["clé"]. Segment, který
obsahuje JSON, se rozebere za běhu; cesta, jež neodpovídá ničemu, dá
undefined.
Restorm někdy selektor odvodí sám v okamžiku zapojení, pokud má zdroj statický náhled, který se redukuje na jedinou primitivní hodnotu. Vždy ho můžete nahradit nebo vymazat.