Aller au contenu

Portovi i veze

Razumeti portove znači razumeti kada se kutija izvršava. Ova stranica je referenca modela.

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

PortSmerTokUloga
inUlazSignalOkidač. Prihvata se više dolaznih veza
errorIzlazVrednost + signalRuta neuspeha
doneIzlazSignalEmituje se po dovršetku kutije i celog njenog nizvodnog podgrafa

Tri kutije nemaju port error: Izlaz, Sada i Retry (pri čemu je ova poslednja i sama granica greške). Dve nemaju done: Izlaz i Throw.

TokMisaona slikaPonašanje
VrednostPodatakPrenosi vrednost; služi i kao okidač
SignalOtkucajNe prenosi ništa, samo aktivira
ObojePrenosi vrednost i aktivira

Jedina zabranjena kombinacija: izlaz čistog signala ka ulazu čiste vrednosti. Ne bi bilo čime popuniti vrednost.

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

Tipizacija služi pre svega vizuelnoj udobnosti, uz jedan strog izuzetak: ulaz tipa lista (port list akcija Dodaj u listu i Ukloni iz liste) odbija izvor koji nije kompatibilan sa listom. json i list međusobno su kompatibilni; običan object nije.

  • Ulazni port prihvata samo jednu vezu. To je ono što čini graf čitljivim: jedna vrednost, jedno poreklo.
  • Osim in, koji prihvata koliko god veza želite.
  • Izlaz može da napaja koliko god ulaza želite.

Tri pravila, ovim redosledom:

  1. Korenske kutije se pokreću. Svaka kutija bez dolazne veze pokreće se pri pokretanju scenarija. Ne postoji kutija „start”.
  2. Čekaju se samo povezani ulazi. Kutija se izvršava kada je svaki njen stvarno povezan ulazni port primio vrednost. Nepovezani port nikada se ne čeka. Vrednosti ostaju zapamćene: ulaz čuva poslednju primljenu vrednost.
  3. Port in služi kao barijera. Kada ga napaja više veza, čeka da sve stignu, pa se aktivira jednom. To je „sačekaj da se ove tri grane završe” iz modela.

Izuzetak: ponovno odigravanje pri svakom događaju

Section titled “Izuzetak: ponovno odigravanje pri svakom događaju”

Opcija „Odigraj ponovo pri svakom primljenom događaju” (kontekstni meni kutije) pretvara sve povezane ulaze u neblokirajuća „ili” vrata: kutija se ponovo aktivira pri svakoj primljenoj vrednosti, na bilo kom portu.

Dve upotrebe: obrada toka poruku po poruku i odblokiranje ciklusa dovršavanja (grafa koji se vraća na samog sebe).

To je najkorisnija razlika u praksi:

  • izlaz vrednosti emituje čim kutija proizvede svoj rezultat;
  • done dodatno čeka da se završi sve što taj rezultat troši.

Za sekvenciranje — „uradi sve ovo, pa počisti” — povežite od done. Za prosleđivanje podatka, povežite od izlaza vrednosti.

To nije poseban mehanizam: to su izlazni portovi koji nose ulogu, a ona određuje njihovu boju.

KutijaIzlazi
Ifthen / else
While, Do…Whilethen (telo)
Assertthen (uspeh) / else (neuspeh)
Retryattempt / exhausted
Validacija šemevalid / invalid / errors
Switchpo jedan port za svaki slučaj, plus default
Socket.IO konekcijapo jedan port za svaki deklarisani događaj, plus others

Veza može da nosi selektor: putanju primenjenu na vrednost u prolazu.

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

Prihvataju se oblici a.b, a[0], a['ključ'] i a["ključ"]. Segment koji sadrži JSON analizira se u letu; putanja koja se ni sa čim ne poklapa daje undefined.

Restorm ponekad sam izvede selektor u trenutku povezivanja, kada izvor ima statički pregled koji se svodi na jednu jedinu primitivnu vrednost. Uvek ga možete zameniti ili isprazniti.