Portar och kopplingar
Att förstå portarna är att förstå när en ruta körs. Den här sidan är modellens referens.
De tre implicita portarna
Section titled “De tre implicita portarna”Varje ruta har dem, utan att de syns i dess konfiguration:
| Port | Riktning | Flöde | Roll |
|---|---|---|---|
in | Ingång | Signal | Utlösare. Flera inkommande kopplingar accepteras |
error | Utgång | Värde + signal | Felväg |
done | Utgång | Signal | Skickas när rutan och hela dess nedströms delgraf är klara |
Tre rutor saknar port error: Output, Nu och Retry (den sista är
själv en felgräns). Två saknar done: Output och Throw.
Flödestyper
Section titled “Flödestyper”| Flöde | Mental symbol | Beteende |
|---|---|---|
| Värde | Ett datum | Bär ett värde; fungerar också som utlösare |
| Signal | En puls | Bär ingenting, utlöser bara |
| Båda | Bär ett värde och utlöser |
Den enda förbjudna kombinationen: en utgång med ren signal till en ingång med rent värde. Det skulle inte finnas något att lägga i värdet.
Datatyper
Section titled “Datatyper”any · json · number · string · boolean · duration · response ·
status · list · object.
Typningen är mest till för det visuella, med ett strikt undantag: en ingång av
typen lista (porten list i åtgärderna Lägg till i listan och
Ta bort från listan) avvisar en källa som inte är listkompatibel. json och
list är kompatibla med varandra; ett enkelt object är det inte.
Aritet
Section titled “Aritet”- En ingångsport accepterar bara en koppling. Det är det som gör grafen läsbar: ett värde, ett ursprung.
- Utom
in, som accepterar hur många kopplingar som helst. - En utgång kan mata hur många ingångar som helst.
När en ruta körs
Section titled “När en ruta körs”Tre regler, i ordning:
- Rötterna startar. Varje ruta utan inkommande koppling startas när scenariot körs igång. Det finns ingen ”start”-ruta.
- Bara inkopplade ingångar väntas in. En ruta körs när var och en av dess faktiskt anslutna ingångsportar har tagit emot ett värde. En port som inte är inkopplad väntas aldrig in. Värdena lagras: en ingång behåller det senast mottagna värdet.
- Porten
inär en barriär. När den matas av flera kopplingar väntar den tills alla har kommit fram, och utlöser sedan en gång. Det är modellens ”vänta tills de här tre grenarna är klara”.
Undantaget: spela upp på varje händelse
Section titled “Undantaget: spela upp på varje händelse”Alternativet ”Spela upp igen vid varje mottagen händelse” (rutans snabbmeny) förvandlar alla inkopplade ingångar till icke-blockerande ”eller”-grindar: rutan utlöses på nytt vid varje mottaget värde, på vilken port som helst.
Två användningsområden: att bearbeta en ström meddelande för meddelande, och att låsa upp en slutföringscykel (en graf som loopar tillbaka till sig själv).
done mot en värdeutgång
Section titled “done mot en värdeutgång”Det är den mest användbara skillnaden i praktiken:
- en värdeutgång skickar så snart rutan har producerat sitt resultat;
doneväntar dessutom tills allt som konsumerar det resultatet är klart.
För att sekvensera — ”gör allt det där, städa sedan upp” — kopplar du från
done. För att skicka vidare ett värde kopplar du från värdeutgången.
De villkorliga grenarna
Section titled “De villkorliga grenarna”De är inte någon separat mekanism: de är utgångsportar som bär en roll, och den rollen styr deras färg.
| Ruta | Utgångar |
|---|---|
| If | then / else |
| While, Do…While | then (kroppen) |
| Assert | then (lyckat) / else (misslyckat) |
| Retry | attempt / exhausted |
| Schema validate | valid / invalid / errors |
| Switch | en port per fall, plus default |
| Socket.IO-anslutning | en port per deklarerad händelse, plus others |
Kopplingsväljare
Section titled “Kopplingsväljare”En koppling kan bära en väljare: en sökväg som tillämpas på värdet under transport.
data.items[0].idbody['user-id']headers["content-type"]statusFormerna a.b, a[0], a['nyckel'] och a["nyckel"] accepteras. Ett segment
som innehåller JSON tolkas i farten; en sökväg som inte matchar något ger
undefined.
Restorm härleder ibland en väljare på egen hand när kopplingen skapas, om källan har en statisk förhandsvisning som reducerar sig till ett enda primitivt värde. Du kan alltid ersätta eller tömma den.