Θύρες και σύνδεσμοι
Το να κατανοήσετε τις θύρες σημαίνει να κατανοήσετε πότε εκτελείται ένα κουτί. Αυτή η σελίδα είναι η αναφορά του μοντέλου.
Οι τρεις σιωπηρές θύρες
Section titled “Οι τρεις σιωπηρές θύρες”Κάθε κουτί τις διαθέτει, χωρίς να εμφανίζονται στη διαμόρφωσή του:
| Θύρα | Κατεύθυνση | Ροή | Ρόλος |
|---|---|---|---|
in | Είσοδος | Σήμα | Πυροδότης. Γίνονται δεκτοί πολλοί εισερχόμενοι σύνδεσμοι |
error | Έξοδος | Τιμή + σήμα | Διαδρομή αποτυχίας |
done | Έξοδος | Σήμα | Εκπέμπεται μετά την ολοκλήρωση του κουτιού και ολόκληρου του κατάντη υπογραφήματός του |
Τρία κουτιά δεν έχουν θύρα error: Έξοδος, Τώρα και Retry (το
τελευταίο αποτελεί το ίδιο σύνορο σφάλματος). Δύο δεν έχουν done: Έξοδος
και Throw.
Τύποι ροής
Section titled “Τύποι ροής”| Ροή | Νοητικό σύμβολο | Συμπεριφορά |
|---|---|---|
| Τιμή | Ένα δεδομένο | Μεταφέρει μια τιμή· χρησιμεύει και ως πυροδότης |
| Σήμα | Ένας παλμός | Δεν μεταφέρει τίποτα, μόνο πυροδοτεί |
| Και τα δύο | Μεταφέρει μια τιμή και πυροδοτεί |
Ο μοναδικός απαγορευμένος συνδυασμός: μια έξοδος καθαρού σήματος προς μια είσοδο καθαρής τιμής. Δεν θα υπήρχε τίποτα να μπει στην τιμή.
Τύποι δεδομένων
Section titled “Τύποι δεδομένων”any · json · number · string · boolean · duration · response ·
status · list · object.
Ο καθορισμός τύπων χρησιμεύει κυρίως στην οπτική άνεση, με μία αυστηρή
εξαίρεση: μια είσοδος τύπου λίστας (η θύρα list των ενεργειών Προσθήκη
στη λίστα και Αφαίρεση από τη λίστα) απορρίπτει μια πηγή που δεν είναι
συμβατή με λίστα. Τα json και list είναι συμβατά μεταξύ τους· ένα απλό
object δεν είναι.
Πληθυκότητα
Section titled “Πληθυκότητα”- Μια θύρα εισόδου δέχεται έναν μόνο σύνδεσμο. Αυτό κάνει τον γράφο ευανάγνωστο: μια τιμή, μια προέλευση.
- Εκτός από τη
in, που δέχεται όσους συνδέσμους θέλετε. - Μια έξοδος μπορεί να τροφοδοτήσει όσες εισόδους θέλετε.
Πότε εκτελείται ένα κουτί
Section titled “Πότε εκτελείται ένα κουτί”Τρεις κανόνες, με τη σειρά:
- Οι ρίζες ξεκινούν. Κάθε κουτί χωρίς εισερχόμενο σύνδεσμο εκκινείται κατά την έναρξη του σεναρίου. Δεν υπάρχει κουτί «αφετηρία».
- Αναμένονται μόνο οι καλωδιωμένες είσοδοι. Ένα κουτί εκτελείται όταν καθεμία από τις θύρες εισόδου του που είναι πραγματικά συνδεδεμένες έχει λάβει μια τιμή. Μια μη καλωδιωμένη θύρα δεν αναμένεται ποτέ. Οι τιμές παραμένουν αποθηκευμένες: μια είσοδος διατηρεί την τελευταία τιμή που έλαβε.
- Η θύρα
inλειτουργεί ως φράγμα. Όταν τροφοδοτείται από πολλούς συνδέσμους, περιμένει να έχουν φτάσει όλοι, και έπειτα πυροδοτεί μία φορά. Είναι το «περίμενε να τελειώσουν αυτοί οι τρεις κλάδοι» του μοντέλου.
Η εξαίρεση: επανάληψη σε κάθε συμβάν
Section titled “Η εξαίρεση: επανάληψη σε κάθε συμβάν”Η επιλογή «Επανάληψη σε κάθε συμβάν που λαμβάνεται» (μενού συμφραζομένων του κουτιού) μετατρέπει όλες τις καλωδιωμένες εισόδους σε μη μπλοκαριστικές πύλες «ή»: το κουτί πυροδοτείται ξανά σε κάθε τιμή που λαμβάνεται, σε οποιαδήποτε θύρα.
Δύο χρήσεις: η επεξεργασία μιας ροής μήνυμα προς μήνυμα, και το ξεμπλοκάρισμα ενός κύκλου ολοκλήρωσης (ενός γράφου που ανακυκλώνεται στον εαυτό του).
Το done έναντι μιας εξόδου τιμής
Section titled “Το done έναντι μιας εξόδου τιμής”Είναι η πιο χρήσιμη διάκριση στην πράξη:
- μια έξοδος τιμής εκπέμπει μόλις το κουτί παραγάγει το αποτέλεσμά του·
- το
doneπεριμένει επιπλέον να έχει τελειώσει καθετί που καταναλώνει αυτό το αποτέλεσμα.
Για να ορίσετε ακολουθία — «κάνε όλα αυτά, έπειτα καθάρισε» — καλωδιώστε από το
done. Για να περάσετε ένα δεδομένο, καλωδιώστε από την έξοδο τιμής.
Οι υπό συνθήκη κλάδοι
Section titled “Οι υπό συνθήκη κλάδοι”Δεν είναι ξεχωριστός μηχανισμός: είναι θύρες εξόδου που φέρουν έναν ρόλο, ο οποίος καθορίζει και το χρώμα τους.
| Κουτί | Έξοδοι |
|---|---|
| If | then / else |
| While, Do…While | then (το σώμα) |
| Assert | then (επιτυχία) / else (αποτυχία) |
| Retry | attempt / exhausted |
| Επικύρωση σχήματος | valid / invalid / errors |
| Switch | μία θύρα ανά περίπτωση, συν default |
| Σύνδεση Socket.IO | μία θύρα ανά δηλωμένο συμβάν, συν others |
Επιλογείς συνδέσμου
Section titled “Επιλογείς συνδέσμου”Ένας σύνδεσμος μπορεί να φέρει έναν επιλογέα: μια διαδρομή που εφαρμόζεται στην τιμή εν κινήσει.
data.items[0].idbody['user-id']headers["content-type"]statusΓίνονται δεκτές οι μορφές a.b, a[0], a['clé'] και a["clé"]. Ένα τμήμα
που περιέχει JSON αναλύεται εν κινήσει· μια διαδρομή που δεν αντιστοιχεί σε
τίποτα δίνει undefined.
Το Restorm συνάγει μερικές φορές έναν επιλογέα μόνο του τη στιγμή της καλωδίωσης, όταν η πηγή έχει μια στατική προεπισκόπηση που ανάγεται σε μία μόνο πρωτογενή τιμή. Μπορείτε πάντα να τον αντικαταστήσετε ή να τον αδειάσετε.