Quando utilizzare Iterator
| Scenario | Esempio |
|---|---|
| Elaborare i risultati della ricerca | Invia un’email a ciascuna persona trovata |
| Gestire array di webhook | Crea record per ciascun elemento nell’ordine |
| Aggiornamenti massivi | Aggiorna più record con valori calcolati |
| Notifiche | Avvisa più persone riguardo a un evento |
Comprendere Iterator
Iterator si aspetta un array come input. Quindi:- Prende il primo elemento dall’array
- Esegue tutte le azioni all’interno di Iterator con quell’elemento
- Passa all’elemento successivo
- Ripete finché tutti gli elementi non sono stati elaborati
Configurazione di base
Esempio: inviare un’email a tutti nei risultati della ricerca
Obiettivo: Trovare tutti i contatti in un’azienda specifica e inviare a ciascuno un’email personalizzata.Passaggio 1: Cerca i record
- Aggiungi un’azione Search Records
- Oggetto: Persone
- Filtro: Azienda uguale a “Acme Inc”
- Questo restituisce un array di persone
Passaggio 2: Verifica che i risultati esistano
- Aggiungi l’azione Filter
- Condizione:
{{searchRecords.length}}è maggiore di 0 - Questo evita errori di Iterator su risultati vuoti
Passaggio 3: Aggiungi un Iterator
- Aggiungi un’azione Iterator
- Input dell’array: Seleziona
{{searchRecords}} - Questo crea un ciclo
Passaggio 4: Aggiungi azioni all’interno di Iterator
Le azioni posizionate sotto Iterator vengono eseguite per ciascun elemento:- Aggiungi un’azione Send Email (all’interno di Iterator)
- A:
{{iterator.currentItem.email}} - Oggetto: Ciao
{{iterator.currentItem.firstName}}! - Corpo: Messaggio personalizzato utilizzando i campi dell’elemento corrente
Risultato
Se Search Records restituisce 5 persone, Iterator:- Invia un’email alla persona 1
- Invia un’email alla persona 2
- … continua per tutte e cinque
Accedere ai dati dell’elemento corrente
All’interno di Iterator, usa{{iterator.currentItem}} per accedere al record corrente:
| Variabile | Descrizione |
|---|---|
{{iterator.currentItem}} | L’intero oggetto del record corrente |
{{iterator.currentItem.id}} | ID del record |
{{iterator.currentItem.email}} | Campo email |
{{iterator.currentItem.company.name}} | Nome dell’azienda correlata |
{{iterator.index}} | Posizione corrente nell’array (indice a partire da 0) |
Modelli comuni
Aggiornare più record
Obiettivo: Contrassegnare tutte le attività in ritardo come “Late”Creare record da un array
Obiettivo: Il webhook riceve un ordine con più elementi e crea un record per ciascunoElaborazione condizionale all’interno del ciclo
Obiettivo: Inviare email solo ai contatti con indirizzi email validiRisoluzione dei problemi
”Iterator expects an array”
Causa: Hai passato un singolo record invece di un array. Soluzione: Assicurati di passare il risultato di Search Records o un campo di tipo array, non un singolo record.Iterator non viene eseguito
Causa: L’array è vuoto. Soluzione: Aggiungi un’azione Filter prima di Iterator per verificare la lunghezza dell’array:Le azioni vengono eseguite troppe volte
Causa: Search Records ha restituito più record del previsto. Soluzione:- Aggiungi filtri più specifici a Search Records
- Imposta un limite su Search Records (massimo 200)
- Aggiungi Filter all’interno di Iterator per condizioni aggiuntive
Considerazioni sulle prestazioni
- Utilizzo dei crediti: ogni iterazione consuma crediti per le sue azioni
- Tempo: gli array di grandi dimensioni richiedono più tempo per essere elaborati
- Limiti: prendi in considerazione l’esecuzione in batch di operazioni molto grandi
- Limiti di frequenza: le chiamate API esterne potrebbero raggiungere i limiti di frequenza con molte iterazioni
Migliori Pratiche
- Controlla sempre la lunghezza dell’array prima di Iterator per evitare errori
- Aggiungi filtri all’interno dei cicli quando non è necessario elaborare tutti gli elementi
- Rinomina il passaggio di Iterator per descrivere ciò su cui sta scorrendo
- Esegui test con array piccoli prima di elaborare set di dati di grandi dimensioni
- Monitora le esecuzioni dei flussi di lavoro per assicurarti che le iterazioni si completino come previsto