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.
A három implicit port
Section titled “A három implicit port”Minden blokk rendelkezik velük, anélkül hogy megjelennének a beállításai között:
| Port | Irány | Folyam | Szerep |
|---|---|---|---|
in | Bemenet | Jel | Kiváltó. Több bejövő társítás is elfogadott |
error | Kimenet | Érték + jel | Hibaútvonal |
done | Kimenet | Jel | A 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.
Folyamtípusok
Section titled “Folyamtípusok”| Folyam | Képi megfelelő | Viselkedés |
|---|---|---|
| Érték | Egy adat | Értéket szállít; kiváltóként is működik |
| Jel | Egy ütem | Semmit 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.
Adattípusok
Section titled “Adattípusok”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.
Aritás
Section titled “Aritás”- 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.
Mikor fut le egy blokk
Section titled “Mikor fut le egy blokk”Három szabály, sorrendben:
- 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.
- 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.
- Az
inport 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).
A done és az értékkimenet
Section titled “A done és az értékkimenet”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
doneezen 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.
A feltételes elágazások
Section titled “A feltételes elágazások”Nem külön mechanizmus: olyan kimeneti portok, amelyek egy szerepet hordoznak, és ez a szerep határozza meg a színüket.
| Blokk | Kimenetek |
|---|---|
| If | then / else |
| While, Do…While | then (a törzs) |
| Assert | then (siker) / else (hiba) |
| Retry | attempt / exhausted |
| Schema validate | valid / invalid / errors |
| Switch | egy port minden esethez, plusz default |
| Socket.IO-kapcsolat | egy port minden deklarált eseményhez, plusz others |
Élválasztók
Section titled “Élválasztók”Egy társítás választót is hordozhat: egy útvonalat, amely az áthaladó értékre vonatkozik.
data.items[0].idbody['user-id']headers["content-type"]statusAz 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ő.