Control
Cinci cutii controlează fluxul de execuție al unui scenariu.
Reamintire: orice cutie are și porturile implicite in, error și done —
vedeți Porturi și legături.
Input / Param (intrare / parametru)
Section titled “Input / Param (intrare / parametru)”Declară parametrii scenariului.
| Intrări | niciuna |
| Ieșiri | value — un obiect unic { name: value, … } |
| Configurare | name (numele parametrului), valueType (tipul său și valoarea sa implicită) |
Valorile sunt furnizate la lansare, prin --param name=value în linia de
comandă, sau cerute interactiv, dacă execuția ajunge la cutie fără o valoare
disponibilă.
Intrare „baseUrl” (șir) ──► portul env al cereriiOutput / Return (ieșire / retur)
Section titled “Output / Return (ieșire / retur)”Expune un rezultat apelantului scenariului.
| Intrări | value |
| Ieșiri | niciuna — este un puț: nici error, nici done |
| Configurare | name |
Un scenariu apelat de o acțiune Rulează scenariul face fiecare dintre ieșirile
sale disponibilă pe portul output:<name> al apelantului.
If (dacă)
Section titled “If (dacă)”Ramificare cu două căi.
| Intrări | left, right |
| Ieșiri | then, else |
| Configurare | operator: lt, lte, eq, gte, gt, ne, contains — plus left și right ca valori literale |
Sfat: dacă niciun operand nu este cablat sau completat, cutia testează pur și
simplu veridicitatea semnalului primit pe in. Este acel „dacă am ajuns până
aici”, fără o condiție explicită.
Switch (comutare)
Section titled “Switch (comutare)”Ramificare cu N căi.
| Intrări | on |
| Ieșiri | câte un port case-<id> pentru fiecare caz declarat, plus default |
| Configurare | cases: o listă de { id, value } |
De preferat unei cascade de If de îndată ce există mai mult de două ieșiri: fiecare caz este un fir distinct, lizibil vizual.
Retry (reîncercare)
Section titled “Retry (reîncercare)”Frontieră de reluare în caz de eroare.
| Intrări | maxAttempts, delay |
| Ieșiri | attempt (fiecare încercare), exhausted (încercări epuizate) |
| Configurare | vedeți mai jos |
| Câmp | Implicit | Rol |
|---|---|---|
maxAttempts | 3 | Numărul maxim de încercări |
backoff | fixed | fixed, linear sau exponential |
delay + delayUnit | — | Intervalul de bază (ms, s, min) |
factor | 2 | Factorul de creștere în mod exponențial |
maxDelay + maxDelayUnit | — | Plafonul intervalului |
retryOnError | true | Reîncercare la o eroare |
retryOnFailure | false | Reîncercare la un eșec de business |
retryOnStatus | — | Listă de stări HTTP, de exemplu [429, 503] |
Subgraful conectat la attempt constituie domeniul reîncercat. În caz de succes,
ieșirea se face prin done. Această cutie nu are port error: ea este
frontiera.
Reîncercare (3, exponențial, [429,503]) ├─ attempt ──► Cerere HTTP ──► Assert └─ exhausted ──► Throw „serviciu indisponibil”