⫸ Parallel
Divide l'esecuzione del workflow in più rami nominati che vengono eseguiti simultaneamente. Tutti i rami
devono completarsi prima che l'esecuzione prosegua oltre il punto di unione.
Categoria: Controllo di Flusso · Identificatore tipo: parallel
Panoramica
Alcuni workflow devono raccogliere dati da diverse fonti prima di poter fare qualcosa di utile
con essi. Senza il nodo Parallel, quelle richieste verrebbero eseguite una dopo l'altra, con ogni
step in attesa del completamento del precedente. Il nodo Parallel elimina questa attesa — tutti
i rami partono contemporaneamente e vengono eseguiti in modo concorrente. Il workflow poi attende
automaticamente al punto di unione fino a quando ogni ramo è completato prima di proseguire.
Questo è particolarmente utile per i pattern di fan-out API: recuperare il profilo
di un utente, i suoi ordini recenti e le sue preferenze di notifica tutti in un singolo step, per poi
combinare i risultati in una singola email o documento.
Ogni ramo è identificato da un nome a tua scelta. Dopo che tutti i rami sono completati, i loro output
sono disponibili come proprietà dell'oggetto di output del nodo Parallel, indicizzati per nome del ramo.
Tutto o niente. Se un singolo ramo fallisce, l'intero nodo Parallel fallisce
e gli step successivi non vengono eseguiti. Assicurati che ogni ramo gestisca gli errori in modo appropriato, oppure usa un
Logic Gate dopo l'unione parallela per verificare la presenza di dati mancanti.
Configurazione
| Campo |
Stato |
Descrizione |
| Rami |
Obbligatorio |
Un array di nomi di rami. Ogni nome crea una porta di output (in modalità grafo) o una corsia di esecuzione etichettata (in modalità lineare). Usa nomi brevi e descrittivi come fetch_users, fetch_orders, fetch_products. |
Dati di Output
Dopo che tutti i rami sono completati, il nodo Parallel produce un singolo oggetto di output. Ogni chiave
in quell'oggetto corrisponde al nome di un ramo, e il suo valore è l'output dell'ultimo step in
quel ramo.
{{ parallel_step.output.fetch_users }}
{{ parallel_step.output.fetch_orders }}
{{ parallel_step.output.fetch_products }}
{{ parallel_step.output.fetch_users.name }}
{{ parallel_step.output.fetch_orders.total }}
Esempio di Utilizzo
Fan out verso tre API, poi unisci in una singola email
-
Aggiungi un nodo Parallel con tre rami:
fetch_profile, fetch_orders, fetch_preferences.
-
In modalità grafo, disegna archi da ogni porta di output del ramo al primo
nodo in quel ramo:
- fetch_profile → HTTP Request a
/api/users/{{ trigger.output.user_id }}
- fetch_orders → HTTP Request a
/api/orders?user_id={{ trigger.output.user_id }}
- fetch_preferences → HTTP Request a
/api/preferences/{{ trigger.output.user_id }}
-
Dopo il punto di unione, aggiungi un nodo Send Email. Fai riferimento a tutti e tre
i rami nel corpo dell'email:
Ciao {{ parallel_step.output.fetch_profile.first_name }},
Hai {{ parallel_step.output.fetch_orders.count }} ordini recenti.
La tua impostazione di notifica è: {{ parallel_step.output.fetch_preferences.email_frequency }}.
Suggerimenti e Note
-
Usa nomi di rami significativi. I nomi dei rami diventano le chiavi nell'oggetto
di output. Nomi chiari come
fetch_user_details rendono i tuoi template più facili da
leggere rispetto a nomi generici come branch_1.
-
Ogni ramo può contenere più step. Un ramo non è limitato a un
singolo nodo. In modalità grafo, puoi concatenare diversi nodi all'interno di un ramo — l'output
dell'ultimo nodo nel ramo è quello che viene raccolto al punto di unione.
-
Parallel vs Loop. Usa Parallel quando conosci i rami in anticipo e
ogni ramo fa qualcosa di diverso. Usa Loop quando hai un
elenco dinamico di elementi e ogni elemento necessita degli stessi step applicati.
-
Limiti di frequenza. Eseguire più richieste HTTP simultaneamente può attivare
limiti di frequenza sulle API esterne. Se questo è un problema, usa un Loop
con un nodo Wait invece per distanziare le richieste.
Nodi Correlati
- Loop — itera su un array dinamico in modo sequenziale.
- Switch — instrada verso esattamente un ramo in base a un valore (mutuamente esclusivo, non concorrente).
- Logic Gate — verifica condizioni sui risultati uniti dopo il completamento di tutti i rami.