Portovi i veze
Razumjeti portove znači razumjeti kada se kutija izvodi. Ova je stranica referenca modela.
Tri implicitna porta
Section titled “Tri implicitna porta”Ima ih svaka kutija, a da se ne pojavljuju u njezinoj konfiguraciji:
| Port | Smjer | Tok | Uloga |
|---|---|---|---|
in | Ulaz | Signal | Okidač. Prihvaća više dolaznih veza |
error | Izlaz | Vrijednost + signal | Ruta neuspjeha |
done | Izlaz | Signal | Emitira se nakon dovršetka kutije i cijelog njezina nizvodnog podstabla |
Tri kutije nemaju port error: Izlaz, Sada i Retry (pri čemu je
potonja i sama granica pogreške). Dvije nemaju done: Izlaz i Throw.
Vrste tokova
Section titled “Vrste tokova”| Tok | Misaoni simbol | Ponašanje |
|---|---|---|
| Vrijednost | Podatak | Prenosi vrijednost; služi i kao okidač |
| Signal | Impuls | Ne prenosi ništa, samo okida |
| Oboje | Prenosi vrijednost i okida |
Jedina zabranjena kombinacija: izlaz čistog signala prema ulazu čiste vrijednosti. Ne bi bilo čega staviti u vrijednost.
Tipovi podataka
Section titled “Tipovi podataka”any · json · number · string · boolean · duration · response ·
status · list · object.
Tipiziranje uglavnom služi vizualnoj udobnosti, uz jednu strogu iznimku: ulaz
tipa popis (port list akcija Dodaj na popis i Ukloni s popisa) odbija
izvor koji nije kompatibilan s popisom. json i list međusobno su
kompatibilni; običan object nije.
Arnost
Section titled “Arnost”- Ulazni port prihvaća samo jednu vezu. To graf čini čitljivim: jedna vrijednost, jedno podrijetlo.
- Osim
in, koji prihvaća koliko god veza želite. - Izlaz može napajati koliko god ulaza želite.
Kada se kutija izvodi
Section titled “Kada se kutija izvodi”Tri pravila, ovim redom:
- Korijeni kreću. Svaka kutija bez dolazne veze pokreće se pri pokretanju scenarija. Nema kutije „početak”.
- Čekaju se samo ožičeni ulazi. Kutija se izvodi kada je svaki njezin stvarno povezani ulazni port primio vrijednost. Neožičeni se port nikada ne čeka. Vrijednosti ostaju zapamćene: ulaz čuva posljednju primljenu vrijednost.
- Port
insluži kao barijera. Kada ga napaja više veza, čeka da sve stignu, pa okida jednom. To je „pričekaj da ove tri grane završe” u ovom modelu.
Iznimka: ponavljanje pri svakom događaju
Section titled “Iznimka: ponavljanje pri svakom događaju”Opcija „Ponovi pri svakom primljenom događaju” (kontekstni izbornik kutije) sve ožičene ulaze pretvara u neblokirajuća „ili” vrata: kutija se ponovno okida pri svakoj primljenoj vrijednosti, na bilo kojem portu.
Dvije upotrebe: obrada toka poruku po poruku i odblokiravanje ciklusa dovršavanja (grafa koji se vraća sam na sebe).
done naspram izlaza vrijednosti
Section titled “done naspram izlaza vrijednosti”To je u praksi najkorisnija razlika:
- izlaz vrijednosti emitira čim je kutija proizvela svoj rezultat;
doneuz to čeka da završi sve što taj rezultat troši.
Za slijed — „napravi sve to, pa počisti” — ožičite od done. Za prosljeđivanje
podatka ožičite od izlaza vrijednosti.
Uvjetne grane
Section titled “Uvjetne grane”To nije zaseban mehanizam: riječ je o izlaznim portovima koji nose ulogu, a ta uloga upravlja njihovom bojom.
| Kutija | Izlazi |
|---|---|
| If | then / else |
| While, Do…While | then (tijelo) |
| Assert | then (uspjeh) / else (neuspjeh) |
| Retry | attempt / exhausted |
| Validacija sheme | valid / invalid / errors |
| Switch | po jedan port za svaki slučaj, plus default |
| Socket.IO veza | po jedan port za svaki deklarirani događaj, plus others |
Selektori veze
Section titled “Selektori veze”Veza može nositi selektor: putanju primijenjenu na vrijednost u prolazu.
data.items[0].idbody['user-id']headers["content-type"]statusPrihvaćaju se oblici a.b, a[0], a['ključ'] i a["ključ"]. Segment koji
sadrži JSON analizira se u letu; putanja koja ničemu ne odgovara daje
undefined.
Restorm pri ožičavanju ponekad sam izvodi selektor, kada izvor ima statičan pregled koji se svodi na jednu jedinu primitivnu vrijednost. Uvijek ga možete zamijeniti ili isprazniti.