Când să folosiți Iterator
| Scenariu | Exemplu |
|---|---|
| Procesați rezultatele căutării | Trimiteți e-mail fiecărei persoane găsite |
| Gestionați array-urile de webhook | Creați înregistrări pentru fiecare element, în ordine |
| Actualizări în masă | Actualizați mai multe înregistrări cu valori calculate |
| Notificări | Alertați mai multe persoane despre un eveniment |
Înțelegerea Iteratorului
Iterator așteaptă un array ca intrare. Apoi:- Preia primul element din array
- Rulează toate acțiunile din interiorul Iteratorului cu acel element
- Trece la următorul element
- Repetă până când toate elementele sunt procesate
Configurare de bază
Exemplu: Trimiteți e-mail tuturor din rezultatele căutării
Obiectiv: Găsiți toate contactele dintr-o companie specifică și trimiteți fiecăruia un e-mail personalizat.Pasul 1: Căutați înregistrări
- Adăugați acțiunea Search Records
- Obiect: Persoane
- Filtru: Compania este egală cu “Acme Inc”
- Aceasta returnează un array de persoane
Pasul 2: Verificați dacă există rezultate
- Adăugați acțiunea Filter
- Condiție:
{{searchRecords.length}}este mai mare decât 0 - Aceasta previne erorile Iteratorului când rezultatele sunt goale
Pasul 3: Adăugați un Iterator
- Adăugați acțiunea Iterator
- Intrare pentru array: selectați
{{searchRecords}} - Aceasta creează o buclă
Pasul 4: Adăugați acțiuni în interiorul Iteratorului
Acțiunile plasate după Iterator rulează pentru fiecare element:- Adăugați acțiunea Send Email (în interiorul Iteratorului)
- Către:
{{iterator.currentItem.email}} - Subiect: Salut
{{iterator.currentItem.firstName}}! - Conținut: Mesaj personalizat folosind câmpurile elementului curent
Rezultat
Dacă Search Records returnează 5 persoane, Iteratorul:- Trimite e-mail persoanei 1
- Trimite e-mail persoanei 2
- … continuă pentru toate cele 5
Accesarea datelor elementului curent
În interiorul Iteratorului, folosiți{{iterator.currentItem}} pentru a accesa înregistrarea curentă:
| Variabilă | Descriere |
|---|---|
{{iterator.currentItem}} | Întregul obiect al înregistrării curente |
{{iterator.currentItem.id}} | ID-ul înregistrării |
{{iterator.currentItem.email}} | Câmp de e-mail |
{{iterator.currentItem.company.name}} | Numele companiei asociate |
{{iterator.index}} | Poziția curentă în array (indexare de la 0) |
Tipare comune
Actualizați mai multe înregistrări
Obiectiv: Marcați toate sarcinile întârziate ca “Late”Creați înregistrări dintr-un array
Obiectiv: Webhook-ul primește o comandă cu mai multe articole, creați o înregistrare pentru fiecareProcesare condițională în interiorul buclei
Obiectiv: Trimiteți e-mail doar contactelor cu adrese valideDepanare
”Iterator expects an array”
Cauză: Ați transmis o singură înregistrare în loc de un array. Remediere: Asigurați-vă că transmiteți rezultatul acțiunii Search Records sau un câmp de tip array, nu o singură înregistrare.Iteratorul nu rulează
Cauză: Array-ul este gol. Remediere: Adăugați un Filter înainte de Iterator pentru a verifica lungimea array-ului:Acțiunile rulează de prea multe ori
Cauză: Search Records a returnat mai multe înregistrări decât era de așteptat. Remediere:- Adăugați filtre mai specifice în Search Records
- Setați o limită în Search Records (maxim 200)
- Adăugați un Filter în interiorul Iteratorului pentru condiții suplimentare
Considerații de performanță
- Utilizarea creditelor: Fiecare iterație consumă credite pentru acțiunile sale
- Timp: Array-urile mari necesită mai mult timp pentru a fi procesate
- Limite: Luați în considerare procesarea în loturi a operațiunilor foarte mari
- Limite de rată: Apelurile către API-uri externe pot atinge limitele de rată la multe iterații
Cele mai bune practici
- Verificați întotdeauna lungimea array-ului înainte de Iterator pentru a evita erorile
- Adăugați filtre în interiorul buclelor când nu toate elementele trebuie procesate
- Redenumiți pasul Iterator pentru a descrie prin ce iterează
- Testați cu array-uri mici înainte de a procesa seturi mari de date
- Monitorizați rulările fluxurilor de lucru pentru a vă asigura că iterațiile se finalizează conform așteptărilor