Přeskočit na obsah

Porty a propojení

Rozumět portům znamená rozumět tomu, kdy se blok spustí. Tato stránka je referencí celého modelu.

Má je každý blok, aniž by se objevily v jeho konfiguraci:

PortSměrTokRole
inVstupSignálSpouštěč. Přijímá více vstupních propojení
errorVýstupHodnota + signálTrasa selhání
doneVýstupSignálVysí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.

TokMyšlenkový symbolChování
HodnotaDataPřenáší hodnotu; slouží zároveň jako spouštěč
SignálImpulzNepř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.

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ů.

Tři pravidla, v tomto pořadí:

  1. Kořeny startují. Každý blok bez vstupního propojení se při spuštění scénáře nastartuje. Žádný blok „start“ neexistuje.
  2. Č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.
  3. Port in tvoří 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).

To je v praxi nejužitečnější rozlišení:

  • hodnotový výstup vysílá, jakmile blok vytvořil svůj výsledek;
  • done naví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.

Nejsou zvláštním mechanismem: jsou to výstupní porty nesoucí roli, která řídí jejich barvu.

BlokVýstupy
Ifthen / else
While, Do…Whilethen (tělo)
Assertthen (úspěch) / else (selhání)
Retryattempt / exhausted
Validace schématuvalid / invalid / errors
Switchjeden port na každý případ, plus default
Připojení Socket.IOjeden port na každou deklarovanou událost, plus others

Propojení může nést selektor: cestu uplatněnou na procházející hodnotu.

data.items[0].id
body['user-id']
headers["content-type"]
status

Př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.