Aller au contenu

Portovi i veze

Razumjeti portove znači razumjeti kada se kutija izvodi. Ova je stranica referenca modela.

Ima ih svaka kutija, a da se ne pojavljuju u njezinoj konfiguraciji:

PortSmjerTokUloga
inUlazSignalOkidač. Prihvaća više dolaznih veza
errorIzlazVrijednost + signalRuta neuspjeha
doneIzlazSignalEmitira 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.

TokMisaoni simbolPonašanje
VrijednostPodatakPrenosi vrijednost; služi i kao okidač
SignalImpulsNe prenosi ništa, samo okida
ObojePrenosi vrijednost i okida

Jedina zabranjena kombinacija: izlaz čistog signala prema ulazu čiste vrijednosti. Ne bi bilo čega staviti u vrijednost.

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.

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

Tri pravila, ovim redom:

  1. Korijeni kreću. Svaka kutija bez dolazne veze pokreće se pri pokretanju scenarija. Nema kutije „početak”.
  2. Č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.
  3. Port in služ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.

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

To je u praksi najkorisnija razlika:

  • izlaz vrijednosti emitira čim je kutija proizvela svoj rezultat;
  • done uz 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.

To nije zaseban mehanizam: riječ je o izlaznim portovima koji nose ulogu, a ta uloga upravlja njihovom bojom.

KutijaIzlazi
Ifthen / else
While, Do…Whilethen (tijelo)
Assertthen (uspjeh) / else (neuspjeh)
Retryattempt / exhausted
Validacija shemevalid / invalid / errors
Switchpo jedan port za svaki slučaj, plus default
Socket.IO vezapo jedan port za svaki deklarirani događaj, plus others

Veza može nositi selektor: putanju primijenjenu na vrijednost u prolazu.

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

Prihvać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.