Passa al contenuto principale

Nodo Join - Sincronizza Rami Paralleli in ConvyAI Agentic Flow

Overview​

Il nodo Join sincronizza l'esecuzione di rami paralleli in un Agentic Flow, riunendoli in un unico percorso sequenziale. Quando un flusso si dirama in più rami eseguiti in parallelo, il nodo Join attende che un numero configurato di rami converga su di esso prima di proseguire l'esecuzione verso i nodi successivi.

Posizionamento​

Il nodo Join ha più ingressi e un'uscita. È disponibile nella categoria Logic & Control del designer e può essere trascinato sul canvas come qualsiasi altro nodo. L'hint mostrato sul nodo recita: "Sincronizza rami paralleli e prosegue su un percorso sequenziale."

Configurazione​

CampoDescrizione
Numero di ramiNumero di rami in ingresso che il nodo deve ricevere prima di completare la propria esecuzione.

Il nodo Join non prevede configurazioni di timeout, policy di esito o gestione errori locali: queste logiche sono gestite dalle regole centrali di gestione errori del flusso.

Comportamento in esecuzione​

Ciascun ramo in ingresso resta in attesa presso il nodo con un comportamento equivalente a quello del nodo Wait for Event, fino al raggiungimento del numero di rami configurato. Al raggiungimento di tale numero, il nodo emette un raggruppamento e l'esecuzione prosegue verso i nodi a valle, che ricevono come input lo stato sincronizzato.

Dopo l'emissione di un raggruppamento, il contatore del nodo si azzera e il nodo torna in ascolto: i rami che arrivano successivamente non vengono ignorati, ma concorrono a formare il raggruppamento successivo. Di conseguenza, il nodo produce un numero di raggruppamenti (e delle rispettive esecuzioni a valle) pari al numero totale di rami in ingresso diviso il numero configurato.

L'accoppiamento dei rami in ciascun raggruppamento avviene in ordine cronologico di arrivo: i primi rami che arrivano formano il primo raggruppamento, e così via.

warning

Se il numero totale di rami in ingresso non è un multiplo esatto del numero configurato, i rami in eccesso restano in attesa indefinita senza completare un raggruppamento. I raggruppamenti già completati proseguono regolarmente, ma il flusso nel suo complesso resta in stato di attesa. Questo è un sintomo di una configurazione non coerente tra il numero impostato sul nodo e il numero di rami effettivamente prodotti dal flusso - mantenere coerenti i due valori è responsabilità del designer.

Visualizzazione in debug e replay​

In fase di debug live o replay, un nodo Join risulta eseguito un numero di volte pari al numero di rami che, a runtime, sono confluiti su di esso. Aprendo il pannello di dettaglio del nodo è disponibile un selettore che consente di scegliere quale Execution Path visualizzare tra quelli che hanno interessato il nodo.

Selezionando un percorso, la lista dei nodi precedenti nel pannello sinistro si aggiorna mostrando i nodi percorsi da quel ramo specifico. Di default viene mostrato l'ultimo Execution Path eseguito, coerentemente con il resto del canvas.

Per un nodo successivo a un Join, la lista dei nodi precedenti mostra un badge con gli Execution Path gestiti dal Join, in modo analogo a quanto già previsto per i nodi con più esecuzioni. Cambiando l'Execution Path selezionato sul Join, la lista dei nodi a valle si aggiorna di conseguenza; il comportamento funziona correttamente anche con nodi Join annidati tra loro.

Smart Completion e variabili a valle​

Quando un nodo successivo a un Join referenzia una variabile tramite $, la Smart Completion espone le variabili prodotte da tutti i rami sincronizzati dal Join, non solo quelle dell'ultimo ramo eseguito. Questo garantisce la piena configurabilità dei nodi a valle, anche se il pannello di debug mostra un solo Execution Path per volta.

Concetti chiave​

TermineDefinizione
RaggruppamentoL'unità di sincronizzazione prodotta dal nodo Join ogni volta che il numero configurato di rami converge su di esso.
Execution PathUno dei percorsi di ramo che ha raggiunto un nodo Join a runtime; selezionabile nel pannello di dettaglio debug/replay per ispezionare i rispettivi nodi a monte e a valle.