Zum Inhalt springen

Steuerung

Fünf Bausteine steuern den Ausführungsfluss eines Szenarios.

Zur Erinnerung: Jeder Baustein besitzt außerdem die impliziten Ports in, error und done — siehe Ports und Verbindungen.

Deklariert die Parameter des Szenarios.

Eingängekeine
Ausgängevalue — ein einzelnes Objekt { name: value, … }
Konfigurationname (der Name des Parameters), valueType (sein Typ und sein Standardwert)

Die Werte werden beim Start übergeben, per --param name=value auf der Befehlszeile, oder interaktiv abgefragt, falls die Ausführung den Baustein ohne verfügbaren Wert erreicht.

Eingang „baseUrl“ (Zeichenkette) ──► env-Port der Anfrage

Stellt dem Aufrufer des Szenarios ein Ergebnis zur Verfügung.

Eingängevalue
Ausgängekeine — es ist eine Senke: weder error noch done
Konfigurationname

Ein von einer Aktion Szenario ausführen aufgerufenes Szenario stellt jeden seiner Ausgänge auf dem Port output:<name> des Aufrufers zur Verfügung.

Zweiweg-Verzweigung.

Eingängeleft, right
Ausgängethen, else
Konfigurationoperator: lt, lte, eq, gte, gt, ne, contains — sowie left und right als Literalwerte

Tipp: Ist kein Operand verdrahtet oder gesetzt, prüft der Baustein einfach den Wahrheitswert des auf in empfangenen Signals. Das ist das „wenn wir bis hierhin gekommen sind“ ohne explizite Bedingung.

N-Weg-Verzweigung.

Eingängeon
Ausgängeein Port case-<id> pro deklariertem Fall, sowie default
Konfigurationcases: eine Liste aus { id, value }

Einer Kaskade von If-Bausteinen vorzuziehen, sobald es mehr als zwei Ausgänge gibt: Jeder Fall ist eine eigene, visuell übersichtliche Verbindung.

Grenze für die Fehlerbehandlung.

EingängemaxAttempts, delay
Ausgängeattempt (jeder Versuch), exhausted (Versuche erschöpft)
Konfigurationsiehe unten
FeldStandardRolle
maxAttempts3Maximale Anzahl an Versuchen
backofffixedfixed, linear oder exponential
delay + delayUnitBasisverzögerung (ms, s, min)
factor2Wachstumsfaktor im exponentiellen Modus
maxDelay + maxDelayUnitObergrenze der Verzögerung
retryOnErrortrueBei einem Fehler wiederholen
retryOnFailurefalseBei einem fachlichen Fehlschlag wiederholen
retryOnStatusListe von HTTP-Statuscodes, zum Beispiel [429, 503]

Der an attempt angeschlossene Teilgraph bildet den wiederholten Bereich. Bei Erfolg erfolgt der Ausgang über done. Dieser Baustein hat keinen error-Port: Er selbst ist die Grenze.

Retry (3, exponentiell, [429,503])
├─ attempt ──► HTTP-Anfrage ──► Assert
└─ exhausted ──► Throw „Dienst nicht verfügbar“