Hoppa till innehåll

Kontrollflöde

Fem boxar styr körningsflödet i ett scenario.

Påminnelse: varje box har också de implicita portarna in, error och done — se Portar och kopplingar.

Deklarerar scenariots parametrar.

Ingångaringa
Utgångarvalue — ett enda objekt { namn: värde, … }
Konfigurationname (parameterns namn), valueType (dess typ och dess standardvärde)

Värdena anges vid start, med --param namn=värde på kommandoraden, eller efterfrågas interaktivt om körningen når boxen utan att något värde finns tillgängligt.

Ingång ”baseUrl” (sträng) ──► begärans env-port

Exponerar ett resultat för den som anropar scenariot.

Ingångarvalue
Utgångaringa — det är en sänka: varken error eller done
Konfigurationname

Ett scenario som anropas av en åtgärd Kör scenario gör var och en av sina utgångar tillgänglig på anroparens port output:<namn>.

Förgrening med två vägar.

Ingångarleft, right
Utgångarthen, else
Konfigurationoperator: lt, lte, eq, gte, gt, ne, contains — plus left och right som literala värden

Tips: om ingen operand är kopplad eller ifylld testar boxen helt enkelt om signalen som togs emot på in är sann. Det är ”om vi har kommit ända hit” utan något uttalat villkor.

Förgrening med N vägar.

Ingångaron
Utgångaren port case-<id> per deklarerat fall, plus default
Konfigurationcases: en lista av { id, value }

Att föredra framför en kaskad av If så snart det finns fler än två utfall: varje fall är en egen tråd, visuellt läsbar.

Gräns för återhämtning vid fel.

IngångarmaxAttempts, delay
Utgångarattempt (varje försök), exhausted (försöken är förbrukade)
Konfigurationse nedan
FältStandardRoll
maxAttempts3Högsta antal försök
backofffixedfixed, linear eller exponential
delay + delayUnitGrundfördröjning (ms, s, min)
factor2Tillväxtfaktor i exponentiellt läge
maxDelay + maxDelayUnitTak för fördröjningen
retryOnErrortrueFörsök igen vid ett fel
retryOnFailurefalseFörsök igen vid ett verksamhetsmässigt misslyckande
retryOnStatusLista av HTTP-statusar, till exempel [429, 503]

Delgrafen som är kopplad till attempt utgör det omfång som görs om. Vid lyckat resultat sker utgången via done. Den här boxen har ingen error-port: den är själv gränsen.

Retry (3, exponentiell, [429,503])
├─ attempt ──► HTTP-begäran ──► Assert
└─ exhausted ──► Throw ”tjänsten är inte tillgänglig”