Tovább a tartalomhoz

Portok és társítások

A portok megértése egyben annak megértése, hogy egy blokk mikor fut le. Ez az oldal a modell referenciája.

Minden blokk rendelkezik velük, anélkül hogy megjelennének a beállításai között:

PortIrányFolyamSzerep
inBemenetJelKiváltó. Több bejövő társítás is elfogadott
errorKimenetÉrték + jelHibaútvonal
doneKimenetJelA blokk és a teljes alatta lévő részgráf befejeződése után lép ki

Három blokknak nincs error portja: az Output, a Most és a Retry (ez utóbbi maga is hibahatár). Kettőnek nincs done portja: az Output és a Throw.

FolyamKépi megfelelőViselkedés
ÉrtékEgy adatÉrtéket szállít; kiváltóként is működik
JelEgy ütemSemmit nem szállít, csak kiváltja a futást
MindkettőÉrtéket szállít és kiváltja a futást

Az egyetlen tiltott kombináció: tisztán jel típusú kimenet tisztán érték típusú bemenetre. Nem lenne mit betenni az értékbe.

any · json · number · string · boolean · duration · response · status · list · object.

A típusozás elsősorban a vizuális kényelmet szolgálja, egyetlen szigorú kivétellel: a lista típusú bemenet (a Hozzáadás a listához és az Eltávolítás a listából művelet list portja) elutasítja azt a forrást, amely nem listakompatibilis. A json és a list kompatibilis egymással; egy egyszerű object nem az.

  • Egy bemeneti port csak egyetlen társítást fogad el. Ez teszi olvashatóvá a gráfot: egy érték, egy származási hely.
  • Kivéve az in-t, amely bármennyi társítást elfogad.
  • Egy kimenet bármennyi bemenetet táplálhat.

Három szabály, sorrendben:

  1. A gyökerek indulnak. Minden bejövő társítás nélküli blokk elindul a forgatókönyv indításakor. Nincs „start” blokk.
  2. Csak a bekötött bemenetekre vár a motor. Egy blokk akkor fut le, amikor minden tényleg összekötött bemeneti portja kapott egy értéket. A be nem kötött portra soha nem vár. Az értékek megmaradnak: egy bemenet megőrzi a legutóbb kapott értéket.
  3. Az in port sorompóként működik. Ha több társítás táplálja, megvárja, hogy mindegyik megérkezzen, majd egyszer vált ki futást. Ez a modell „várni, amíg ez a három ág befejeződik” eleme.

A kivétel: újrafuttatás minden eseménynél

Section titled “A kivétel: újrafuttatás minden eseménynél”

Az „Újrafuttatás minden beérkező eseménynél” lehetőség (a blokk helyi menüjében) minden bekötött bemenetet nem blokkoló „vagy” kapuvá alakít: a blokk minden beérkező értéknél újra elindul, bármelyik porton.

Két felhasználási mód: egy folyam üzenetenkénti feldolgozása, illetve egy befejezési kör feloldása (olyan gráf, amely önmagára visszacsatol).

Ez a gyakorlatban a leghasznosabb megkülönböztetés:

  • az értékkimenet azonnal küld, amint a blokk előállította az eredményét;
  • a done ezen túl megvárja, hogy minden befejeződjön, ami ezt az eredményt felhasználja.

Sorrendbe állításhoz — „először mindez, aztán a takarítás” — a done portról kell bekötni. Adat átadásához az értékkimenetről.

Nem külön mechanizmus: olyan kimeneti portok, amelyek egy szerepet hordoznak, és ez a szerep határozza meg a színüket.

BlokkKimenetek
Ifthen / else
While, Do…Whilethen (a törzs)
Assertthen (siker) / else (hiba)
Retryattempt / exhausted
Schema validatevalid / invalid / errors
Switchegy port minden esethez, plusz default
Socket.IO-kapcsolategy port minden deklarált eseményhez, plusz others

Egy társítás választót is hordozhat: egy útvonalat, amely az áthaladó értékre vonatkozik.

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

Az a.b, a[0], a['clé'] és a["clé"] alakok elfogadottak. A JSON-t tartalmazó szegmens menet közben feldolgozásra kerül; az olyan útvonal, amelynek semmi nem felel meg, undefined értéket ad.

A Restorm néha magától kikövetkeztet egy választót a bekötés pillanatában, amikor a forrásnak van olyan statikus előnézete, amely egyetlen primitív értékre egyszerűsödik. Ez mindig lecserélhető vagy kiüríthető.