Μετάβαση στο περιεχόμενο

Θύρες και σύνδεσμοι

Το να κατανοήσετε τις θύρες σημαίνει να κατανοήσετε πότε εκτελείται ένα κουτί. Αυτή η σελίδα είναι η αναφορά του μοντέλου.

Οι τρεις σιωπηρές θύρες

Section titled “Οι τρεις σιωπηρές θύρες”

Κάθε κουτί τις διαθέτει, χωρίς να εμφανίζονται στη διαμόρφωσή του:

ΘύραΚατεύθυνσηΡοήΡόλος
inΕίσοδοςΣήμαΠυροδότης. Γίνονται δεκτοί πολλοί εισερχόμενοι σύνδεσμοι
errorΈξοδοςΤιμή + σήμαΔιαδρομή αποτυχίας
doneΈξοδοςΣήμαΕκπέμπεται μετά την ολοκλήρωση του κουτιού και ολόκληρου του κατάντη υπογραφήματός του

Τρία κουτιά δεν έχουν θύρα error: Έξοδος, Τώρα και Retry (το τελευταίο αποτελεί το ίδιο σύνορο σφάλματος). Δύο δεν έχουν done: Έξοδος και Throw.

ΡοήΝοητικό σύμβολοΣυμπεριφορά
ΤιμήΈνα δεδομένοΜεταφέρει μια τιμή· χρησιμεύει και ως πυροδότης
ΣήμαΈνας παλμόςΔεν μεταφέρει τίποτα, μόνο πυροδοτεί
Και τα δύοΜεταφέρει μια τιμή και πυροδοτεί

Ο μοναδικός απαγορευμένος συνδυασμός: μια έξοδος καθαρού σήματος προς μια είσοδο καθαρής τιμής. Δεν θα υπήρχε τίποτα να μπει στην τιμή.

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

Ο καθορισμός τύπων χρησιμεύει κυρίως στην οπτική άνεση, με μία αυστηρή εξαίρεση: μια είσοδος τύπου λίστας (η θύρα list των ενεργειών Προσθήκη στη λίστα και Αφαίρεση από τη λίστα) απορρίπτει μια πηγή που δεν είναι συμβατή με λίστα. Τα json και list είναι συμβατά μεταξύ τους· ένα απλό object δεν είναι.

  • Μια θύρα εισόδου δέχεται έναν μόνο σύνδεσμο. Αυτό κάνει τον γράφο ευανάγνωστο: μια τιμή, μια προέλευση.
  • Εκτός από τη in, που δέχεται όσους συνδέσμους θέλετε.
  • Μια έξοδος μπορεί να τροφοδοτήσει όσες εισόδους θέλετε.

Πότε εκτελείται ένα κουτί

Section titled “Πότε εκτελείται ένα κουτί”

Τρεις κανόνες, με τη σειρά:

  1. Οι ρίζες ξεκινούν. Κάθε κουτί χωρίς εισερχόμενο σύνδεσμο εκκινείται κατά την έναρξη του σεναρίου. Δεν υπάρχει κουτί «αφετηρία».
  2. Αναμένονται μόνο οι καλωδιωμένες είσοδοι. Ένα κουτί εκτελείται όταν καθεμία από τις θύρες εισόδου του που είναι πραγματικά συνδεδεμένες έχει λάβει μια τιμή. Μια μη καλωδιωμένη θύρα δεν αναμένεται ποτέ. Οι τιμές παραμένουν αποθηκευμένες: μια είσοδος διατηρεί την τελευταία τιμή που έλαβε.
  3. Η θύρα in λειτουργεί ως φράγμα. Όταν τροφοδοτείται από πολλούς συνδέσμους, περιμένει να έχουν φτάσει όλοι, και έπειτα πυροδοτεί μία φορά. Είναι το «περίμενε να τελειώσουν αυτοί οι τρεις κλάδοι» του μοντέλου.

Η εξαίρεση: επανάληψη σε κάθε συμβάν

Section titled “Η εξαίρεση: επανάληψη σε κάθε συμβάν”

Η επιλογή «Επανάληψη σε κάθε συμβάν που λαμβάνεται» (μενού συμφραζομένων του κουτιού) μετατρέπει όλες τις καλωδιωμένες εισόδους σε μη μπλοκαριστικές πύλες «ή»: το κουτί πυροδοτείται ξανά σε κάθε τιμή που λαμβάνεται, σε οποιαδήποτε θύρα.

Δύο χρήσεις: η επεξεργασία μιας ροής μήνυμα προς μήνυμα, και το ξεμπλοκάρισμα ενός κύκλου ολοκλήρωσης (ενός γράφου που ανακυκλώνεται στον εαυτό του).

Το done έναντι μιας εξόδου τιμής

Section titled “Το done έναντι μιας εξόδου τιμής”

Είναι η πιο χρήσιμη διάκριση στην πράξη:

  • μια έξοδος τιμής εκπέμπει μόλις το κουτί παραγάγει το αποτέλεσμά του·
  • το done περιμένει επιπλέον να έχει τελειώσει καθετί που καταναλώνει αυτό το αποτέλεσμα.

Για να ορίσετε ακολουθία — «κάνε όλα αυτά, έπειτα καθάρισε» — καλωδιώστε από το done. Για να περάσετε ένα δεδομένο, καλωδιώστε από την έξοδο τιμής.

Δεν είναι ξεχωριστός μηχανισμός: είναι θύρες εξόδου που φέρουν έναν ρόλο, ο οποίος καθορίζει και το χρώμα τους.

ΚουτίΈξοδοι
Ifthen / else
While, Do…Whilethen (το σώμα)
Assertthen (επιτυχία) / else (αποτυχία)
Retryattempt / exhausted
Επικύρωση σχήματοςvalid / invalid / errors
Switchμία θύρα ανά περίπτωση, συν default
Σύνδεση Socket.IOμία θύρα ανά δηλωμένο συμβάν, συν others

Ένας σύνδεσμος μπορεί να φέρει έναν επιλογέα: μια διαδρομή που εφαρμόζεται στην τιμή εν κινήσει.

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

Γίνονται δεκτές οι μορφές a.b, a[0], a['clé'] και a["clé"]. Ένα τμήμα που περιέχει JSON αναλύεται εν κινήσει· μια διαδρομή που δεν αντιστοιχεί σε τίποτα δίνει undefined.

Το Restorm συνάγει μερικές φορές έναν επιλογέα μόνο του τη στιγμή της καλωδίωσης, όταν η πηγή έχει μια στατική προεπισκόπηση που ανάγεται σε μία μόνο πρωτογενή τιμή. Μπορείτε πάντα να τον αντικαταστήσετε ή να τον αδειάσετε.