Salta ai contenuti

Cicli

Quattro riquadri. Tutti emettono il proprio corpo su un’uscita dedicata e segnalano la fine del lavoro tramite la porta done.

Itera su un elenco.

Inputitems (json)
Outputeach — un’emissione per elemento
Configurazioneparallelism: { enabled, count }

Senza parallelismo, le iterazioni si susseguono in modo sequenziale. Con il parallelismo, se ne eseguono fino a count contemporaneamente (minimo 2).

La porta done emette solo quando tutti i sottografi di iterazione sono terminati: è lì che si collega il riepilogo o la pulizia.

Richiesta HTTP ──response[body.ids]──► ForEach (parallelismo 4)
├─ each ──► Richiesta HTTP «dettaglio»
└─ done ──► Log «terminato»

Ciclo numerico.

Inputfrom, to, step (numeri)
Outputeach — denominata index
Configurazionefrom, to, operator (< per impostazione predefinita, oppure , =, , >, ), step (0 viene trattato come 1), parallelism

Ciclo con test preliminare.

Inputleft, right
Outputthen — denominata corpo, segnale puro
Configurazioneoperator, left, right

Il corpo è un segnale: non trasporta alcun valore. Occorre ricollegare la fine del corpo alla porta in del riquadro While per rivalutare la condizione.

Conviene usare una variabile di run come contatore o come condizione di arresto.

Identico al precedente, ma il corpo si esegue almeno una volta: il test avviene dopo. L’uscita è denominata ciclo.

SituazioneRiquadro
Ho un elencoForEach
Conosco il numero di iterazioniFor
La condizione di arresto dipende da un risultato, verificata primaWhile
Idem, ma serve almeno un giroDo…While
Voglio riprovare in caso di fallimentoRetry

Il parallelismo di ForEach e For invia vere chiamate di rete in parallelo. Su un ambiente di collaudo conviene aumentarlo progressivamente — e tenere presente il riquadro Attendi per distribuire la cadenza.