Siirry sisältöön

Portit ja kytkennät

Porttien ymmärtäminen on sen ymmärtämistä, milloin lohko suoritetaan. Tämä sivu on mallin viite.

Jokaisella lohkolla on ne, vaikka ne eivät näy sen kokoonpanossa:

PorttiSuuntaVirtaTarkoitus
inTuloSignaaliLaukaisin. Useita saapuvia kytkentöjä hyväksytään
errorLähtöArvo + signaaliEpäonnistumisen reitti
doneLähtöSignaaliLähetetään, kun lohko ja koko sen alavirran aligraafi ovat valmiit

Kolmella lohkolla ei ole error-porttia: Output, Nyt ja Retry (viimeksi mainittu on itse virheraja). Kahdella ei ole done-porttia: Output ja Throw.

VirtaMielikuvaToiminta
ArvoYksi tietoalkioKuljettaa arvon; toimii myös laukaisimena
SignaaliYksi pulssiEi kuljeta mitään, ainoastaan laukaisee
MolemmatKuljettaa arvon ja laukaisee

Ainoa kielletty yhdistelmä: puhtaan signaalin lähtö puhtaan arvon tuloon. Arvoon ei olisi mitään pantavaa.

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

Tyypitys palvelee ennen kaikkea visuaalista mukavuutta, yhdellä tiukalla poikkeuksella: luettelotyyppinen tulo (toimintojen Lisää luetteloon ja Poista luettelosta portti list) hylkää lähteen, joka ei ole luetteloyhteensopiva. json ja list ovat keskenään yhteensopivia; pelkkä object ei ole.

  • Tuloportti hyväksyy vain yhden kytkennän. Juuri se tekee graafista luettavan: yksi arvo, yksi alkuperä.
  • Paitsi in, joka hyväksyy niin monta kytkentää kuin halutaan.
  • Lähtö voi syöttää niin montaa tuloa kuin halutaan.

Kolme sääntöä, tässä järjestyksessä:

  1. Juuret käynnistyvät. Jokainen lohko, jolla ei ole saapuvaa kytkentää, käynnistetään skenaarion käynnistyessä. ”Aloitus”-lohkoa ei ole.
  2. Vain kytketyt tulot ovat odotettuja. Lohko suoritetaan, kun jokainen sen tosiasiallisesti kytketty tuloportti on saanut arvon. Kytkemätöntä porttia ei koskaan odoteta. Arvot jäävät muistiin: tulo säilyttää viimeksi saamansa arvon.
  3. Portti in toimii esteenä. Kun sitä syöttää useampi kytkentä, se odottaa kaikkien saapumista ja laukaisee sitten kerran. Tämä on mallin ”odota, että nämä kolme haaraa ovat valmiita”.

Poikkeus: suoritus jokaisella tapahtumalla

Section titled “Poikkeus: suoritus jokaisella tapahtumalla”

Valinta ”Suorita jokaisella vastaanotetulla tapahtumalla” (lohkon kontekstivalikko) muuttaa kaikki kytketyt tulot estottomiksi ”tai”-porteiksi: lohko laukeaa uudelleen jokaisesta vastaanotetusta arvosta, missä tahansa portissa.

Kaksi käyttötapaa: virran käsittely viesti kerrallaan ja valmistumissyklin avaaminen (graafi, joka silmukoi itseensä).

Tämä on käytännössä hyödyllisin ero:

  • arvolähtö lähettää heti kun lohko on tuottanut tuloksensa;
  • done odottaa lisäksi, että kaikki tämän tuloksen kuluttajat ovat valmiita.

Vaiheistukseen — ”tee kaikki tämä ja siivoa sitten” — kytke portista done. Datan välittämiseen kytke arvolähdöstä.

Ne eivät ole erillinen mekanismi: ne ovat lähtöportteja, joilla on rooli, ja rooli ohjaa niiden väriä.

LohkoLähdöt
Ifthen / else
While, Do…Whilethen (silmukan runko)
Assertthen (onnistuminen) / else (epäonnistuminen)
Retryattempt / exhausted
Schema validatevalid / invalid / errors
Switchyksi portti tapausta kohti sekä default
Socket.IO-yhteysyksi portti kutakin ilmoitettua tapahtumaa kohti sekä others

Kytkentä voi kantaa valitsinta: polkua, joka sovelletaan matkalla olevaan arvoon.

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

Muodot a.b, a[0], a['key'] ja a["key"] hyväksytään. JSONia sisältävä segmentti jäsennetään lennossa; polku, joka ei vastaa mitään, tuottaa arvon undefined.

Restorm päättelee joskus valitsimen itse kytkentähetkellä, kun lähteellä on staattinen esikatselu, joka supistuu yhdeksi yksinkertaiseksi arvoksi. Voit aina korvata sen tai tyhjentää sen.