Introduzione a PipeLoop

Tim Fan immagine frontale
9 lettura minima
Riassumere questo con l'AI

Tutti noi apprezziamo lo Snap Pipeline Execute, che semplifica notevolmente una pipeline complessa estraendo sezioni in una sottopipeline. Tuttavia, talvolta sarebbe utile poter eseguire una pipeline più volte per eseguire alcune operazioni, come il polling da un endpoint o l'esecuzione di chiamate LLM Tool. In questo articolo presenteremo PipeLoop Snap , che aggiunge l'iterazione al modello di programmazione SnapLogic. Con PipeLoop, possiamo creare nuovi flussi di lavoro che prima erano difficili da gestire o addirittura impossibili. 

Cos'è PipeLoop

PipeLoop è un nuovo Snap per l'esecuzione iterativa su una pipeline. Per chi ha familiarità con le iterazioni nei linguaggi di programmazione, PipeLoop è essenzialmente un ciclo do-while per le pipeline. L'utente deve specificare un limite di iterazioni come limite massimo per evitare l'esaurimento delle risorse o un ciclo infinito, e una condizione di arresto opzionale per controllare l'esecuzione.

Proprio come possiamo passare documenti di input a PipeExec, possiamo anche passare documenti di input a PipeLoop. La differenza tra i due è che il documento di output della pipeline eseguita con PipeLoop verrà utilizzato come input successivo per continuare l'esecuzione fino a quando non viene soddisfatta la condizione di arresto o viene raggiunto il limite. A causa di questo meccanismo unico, la pipeline eseguita da PipeLoop deve avere un input non collegato e un output non collegato per funzionare correttamente. In parole povere, PipeLoop può essere considerato come una concatenazione di una serie di Snap PipeExec con la stessa pipeline con lunghezza variabile e una condizione per uscire anticipatamente. 

tfan_0-1730388809432.png
Flusso di esecuzione di PipeLoop

1.I documentiinseritiin PipeLoop vengono trasmessi alla pipeline secondaria per l'esecuzione. 2. La pipeline secondaria viene eseguita. 3. L'output secondario viene raccolto. 4. Valutare la condizione di arresto in base all'output del documento. Se vera, uscire e passare il documento di output a PipeLoop, altrimenti continuare. 5. Verificare se è stato raggiunto il limite di iterazioni. Se vero, uscire e passare il documento di output a PipeLoop, altrimenti continuare. 6. Utilizzare il documento di output come input per il round successivo e continuare (1.).

Procedura dettagliata per l'esecuzione di PipeLoop

Cominciamo con un esempio molto semplice. Creeremo un flusso di lavoro utilizzando PipeLoop che incrementa un numero da 1 a 3. Per semplicità, faremo riferimento alla pipeline con PipeLoop come "pipeline padre" e alla pipeline eseguita da PipeLoop come "pipeline figlio".

Configurazione della pipeline principale

tfan_1-1730388910173.png

La pipeline principale è composta da uno Snap JSON Generator con un documento come input e uno Snap PipeLoop che esegue la pipeline "figlia" con la condizione di arresto "$num >= 3". Abiliteremo anche "Debug Iteration output" per vedere l'output di ogni round in questa procedura guidata.

 

Configurazione della pipeline secondaria

tfan_2-1730388910307.png

La pipeline secondaria è costituita da un singolo snap mappatore che incrementa "$num" di 1, soddisfacendo il requisito "una pipeline con un input non collegato e un output non collegato" per una pipeline eseguita da PipeLoop.

Produzione 

L'output di PipeLoop è composto da due sezioni principali quando la modalità Debug è abilitata: i campi di output e i _iteration_documents. Possiamo vedere che l'output finale è "num": 3, il che significa che PipeLoop ha eseguito correttamente l'attività.

tfan_3-1730388910171.png

Caratteristiche di PipeLoop

PipeLoop offre diverse funzionalità che possono essere utili nella creazione di pipeline iterative. Le classificheremo in base alla loro posizione.

Proprietà

tfan_4-1730388910174.png

Ci sono 4 sezioni principali nella proprietà di PipeLoop Snap.

  • Condotte
  • Parametri della conduttura
  • Opzioni di loop
  • Opzioni di esecuzione

Condotte

La pipeline da eseguire.

Parametri della conduttura

Approfondiremo questo argomento nella sezione Parametri della pipeline.

Opzioni di loop

Le opzioni di loop sono impostazioni delle proprietà relative alle iterazioni di questo snap. 

Condizione di arresto

Il campo Condizione di arresto consente all'utente di impostare un'espressione da valutare dopo la prima esecuzione. Se l'espressione viene valutata come vera, l'iterazione verrà interrotta. La condizione di arresto può anche essere impostata su falso se l'utente desidera utilizzarla come un ciclo for tradizionale. 

Ci sono casi in cui l'utente potrebbe inserire un valore non intenzionale nel campo Condizione di arresto. In questo scenario, PipeLoop genera un avviso quando l'utente fornisce una stringa non booleana come condizione di arresto, mentre la condizione di arresto verrà trattata come falsa.

tfan_5-1730388910174.png
Avviso condizione di arresto non booleana
Limite di iterazione

Il campo Limite iterazioni consente all'utente di limitare il numero massimo di iterazioni che potrebbero verificarsi. Questo campo può anche essere utilizzato per limitare il numero totale di esecuzioni se la condizione di arresto è impostata su falso.

Impostare un valore elevato per il limite di iterazioni con la modalità debug attivata potrebbe essere pericoloso. I documenti accumulati potrebbero esaurire rapidamente le risorse della CPU e della RAM. Per evitare ciò, PipeLoop genera un avviso nella scheda Statistiche di convalida della pipeline quando il limite di iterazioni è impostato su un valore maggiore o uguale a 1000 con la modalità debug attivata. 

tfan_6-1730388910183.png
Limite di iterazioni elevato con avviso modalità debug abilitata
Debug degli output di iterazione

Questo campo di attivazione/disattivazione consente di aggiungere l'output delle pipeline secondarie per ogni iterazione e la valutazione della condizione di arresto nell'output finale come campo separato.

Esempio di output con output di iterazione Debug abilitati

Opzioni di esecuzione

Esegui su

Per specificare dove deve avvenire l'esecuzione della pipeline. Attualmente sono supportate solo le esecuzioni locali (snaplex locale, nodo locale).

Etichetta di esecuzione

Approfondiremo questo argomento nella sezione Monitoraggio.

Parametri della conduttura

Gli utenti che hanno familiarità con i parametri di pipeline in PipeExec possono passare alla sezione successiva, poiché le istruzioni sono identiche.

Introduzione ai parametri della pipeline

Prima di esaminare il supporto dei parametri di pipeline nello Snap PipeLoop, facciamo un passo indietro e vediamo cosa sono i parametri di pipeline e come possono essere sfruttati.

I parametri della pipeline sono costanti stringa che possono essere definite nelle impostazioni Modifica configurazione pipeline . Gli utenti possono utilizzare i parametri come costanti in qualsiasi punto della pipeline. Una differenza fondamentale tra i parametri della pipeline e le variabili della pipeline è che i parametri della pipeline sono indicati con un prefisso trattino basso, mentre le variabili della pipeline sono indicate con un prefisso simbolo del dollaro.

Parametri della pipeline in Modifica configurazione pipeline
Accesso ai parametri della pipeline in un campo di espressione

Esempio 

Diamo un'occhiata ai parametri della pipeline in azione con PipeLoop. Il nostro obiettivo qui è stampare "Hello PipeLoop!" n volte, dove n è il valore di "num".

Aggiungeremo due parametri nella pipeline secondaria, param1 e param2. Per dimostrarlo, assegniamo"value1"a param1 e lasciamo vuoto param2. Aggiungeremo quindi un campo messaggio con il valore "Hello PipeLoop!" nel generatore JSON in modo da poter assegnare il valore String a param2. Ora siamo in grado di utilizzare param2 come costante nella pipeline secondaria. PipeLoop dispone anche di suggerimenti per i nomi dei campi integrati nei campi Nome parametro per facilitarne l'uso. 

tfan_10-1730388910308.png
Parametri della pipeline PipeLoop in azione

Per la nostra pipeline child, aggiungeremo una nuova riga nella tabella Mapping per stampare ripetutamente "Hello PipeLoop!" (seguito da un carattere di nuova riga). Una cosa da tenere a mente è che l'ordine della tabella Mapping non influisce sull'output (il numero di "Hello PipeLoop!" stampati in questo caso), poiché i campi di output vengono aggiornati al termine dell'esecuzione dell'iterazione corrente. 

tfan_11-1730388910191.png
Configurazione della pipeline Child per la nostra attività

Ecco il risultato finale: possiamo vedere che "Hello PipeLoop!" viene stampato due volte. Missione completata.

tfan_12-1730388910200.png

Osservazioni

  • I parametri della pipeline sono costanti stringa che possono essere impostate in Modifica configurazione pipeline.
  • Gli utenti possono passare una stringa ai parametri della pipeline definiti nella pipeline secondaria in PipeLoop.
  • I parametri della conduttura in PipeLoop sovrascrivere i valori dei parametri della pipeline precedentemente definiti nella pipeline secondaria se i parametri hanno lo stesso nome.
  • I parametri della pipeline sono costanti, il che significa che i valori non verranno modificati durante le iterazioni anche se gli utenti lo facessero.

Monitoraggio

Quando viene eseguito uno snap in una pipeline, non ci sarà alcun output fino al termine dell'esecuzione. Pertanto, data la natura iterativa dell'esecuzione della pipeline come singolo snap, è leggermente difficile sapere a che punto si trova l'esecuzione o quale esecuzione della pipeline corrisponde a quale documento di input. Per ovviare a questo problema, abbiamo due funzionalità aggiuntive che possono aumentare la visibilità dell'esecuzione di PipeLoop.

Barra di avanzamento delle statistiche sulla pipeline

Durante l'esecuzione di PipeLoop, nella scheda Pipeline Validation Statistics (Statistiche di convalida della pipeline) sarà disponibile una barra di avanzamento, in modo che l'utente possa avere un'idea dell'iterazione in cui si trova attualmente PipeLoop. Si noti che la barra di avanzamento potrebbe non riflettere l'indice di iterazione effettivo se le esecuzioni della pipeline secondaria sono brevi, a causa degli intervalli di polling. 

tfan_13-1730388910191.png
Barra di avanzamento iterazione PipeLoop

Etichetta di esecuzione

Quando viene eseguito un PipeLoop con più documenti di input, l'utente non sarà in grado di distinguere quale esecuzione della pipeline è collegata a quale documento di input nello SnapLogic Monitor. L'etichetta di esecuzione è la risposta a questo problema. L'utente può inserire un valore nel campo Etichetta di esecuzione che consente di differenziare i documenti di input, in modo che ogni documento di input abbia la propria etichetta nello Snaplogic Monitor durante l'esecuzione.

Ecco un esempio di due documenti di input in esecuzione sulla pipeline secondaria. Abbiamo impostato l'etichetta di esecuzione con l'espressione "child_label" + $num, quindi l'esecuzione del primo documento avrà l'etichetta "child_label0" e la seconda esecuzione avrà l'etichetta "child_label1". 

Impostazioni dell'etichetta di esecuzione

 

Visualizzazione SnapLogic Monitor

Sintesi

In questo articolo abbiamo presentato PipeLoop, un nuovo Snap per flussi di lavoro a esecuzione iterativa. La pipeline eseguita da PipeLoop deve avere un input non collegato e un output non collegato.

PipeLoop presenta le seguenti caratteristiche:

  • Supporto dei parametri della pipeline
  • Condizione di arresto per uscire anticipatamente con avvisi
  • Limite di iterazioni per evitare loop infiniti con avvisi
  • Modalità debug
  • Etichetta di esecuzione per differenziare le esecuzioni in Monitor
  • Barra di avanzamento per il monitoraggio dello stato

Buona costruzione!

Tim Fan immagine frontale
Ingegnere software presso SnapLogic
Categoria: Tecnica