Einführung in PipeLoop

Tim Fan Kopfbild
9 min gelesen
Fassen Sie dies mit AI zusammen

Wir alle lieben den Pipeline Execute Snap, der komplexe Pipelines erheblich vereinfacht, indem er Abschnitte in eine Unterpipeline extrahiert. Manchmal wäre es jedoch wünschenswert, eine Pipeline mehrmals ausführen zu können, um bestimmte Vorgänge durchzuführen, wie beispielsweise das Abfragen eines Endpunkts oder das Ausführen von LLM-Tool-Aufrufen. In diesem Artikel stellen wir den PipeLoop Snap vor, der das SnapLogic-Programmiermodell um Iterationen erweitert. Mit PipeLoop können wir neue Workflows erstellen, die zuvor schwer zu verwalten oder sogar unmöglich waren. 

Was ist PipeLoop?

PipeLoop ist ein neues Snap für die iterative Ausführung in einer Pipeline. Für diejenigen, die mit Iterationen in Programmiersprachen vertraut sind: PipeLoop ist im Wesentlichen eine do-while-Schleife für Pipelines. Der Benutzer muss eine Iterationsgrenze als feste Obergrenze angeben, um eine Erschöpfung der Ressourcen oder eine Endlosschleife zu vermeiden, sowie eine optionale Stoppbedingung zur Steuerung der Ausführung.

Genauso wie wir Eingabedokumente an PipeExec übergeben können, können wir auch Eingabedokumente an PipeLoop übergeben. Der Unterschied zwischen den beiden besteht darin, dass das Ausgabedokument der mit PipeLoop ausgeführten Pipeline als nächste Eingabe verwendet wird, um die Ausführung fortzusetzen, bis die Stoppbedingung erfüllt oder das Limit erreicht ist. Aufgrund dieses einzigartigen Mechanismus muss die von PipeLoop ausgeführte Pipeline über eine nicht verknüpfte Eingabe und eine nicht verknüpfte Ausgabe verfügen, um ordnungsgemäß zu funktionieren. Einfach ausgedrückt kann man sich PipeLoop als eine Verkettung mehrerer PipeExec-Snaps mit derselben Pipeline mit variabler Länge und einer Bedingung für den vorzeitigen Abbruch vorstellen. 

tfan_0-1730388809432.png
PipeLoop-Ausführungsablauf

1. Eingabedokumentefür PipeLoop werden zur Ausführung an die untergeordnete Pipeline weitergeleitet. 2. Die untergeordnete Pipeline wird ausgeführt. 3. Die untergeordnete Ausgabe wird gesammelt. 4. Die Stoppbedingung wird anhand der Dokumentausgabe bewertet. Wenn sie zutrifft, wird der Vorgang beendet und das Ausgabedokument an PipeLoop übergeben, andernfalls wird fortgefahren. 5. Überprüfen Sie, ob das Iterationslimit erreicht ist. Wenn ja, beenden Sie den Vorgang und übergeben Sie das Ausgabedokument an PipeLoop, andernfalls fahren Sie fort. 6. Verwenden Sie das Ausgabedokument als Eingabe für die nächste Runde und fahren Sie fort (1.).

Durchführung von PipeLoop Schritt für Schritt

Beginnen wir mit einem sehr einfachen Beispiel. Wir erstellen mit PipeLoop einen Workflow, der eine Zahl von 1 auf 3 erhöht. Der Einfachheit halber bezeichnen wir die Pipeline mit PipeLoop als „übergeordnete Pipeline” und die von PipeLoop ausgeführte Pipeline als „untergeordnete Pipeline”.

Einrichtung der übergeordneten Pipeline

tfan_1-1730388910173.png

Die übergeordnete Pipeline besteht aus einem JSON Generator Snap mit einem Dokument als Eingabe und einem PipeLoop Snap, der die Pipeline„child“mit der Stoppbedingung „$num >= 3“ ausführt. Wir aktivieren außerdem „Debug Iteration output“, um die Ausgabe jeder Runde in dieser Anleitung anzuzeigen.

 

Einrichtung der Child-Pipeline

tfan_2-1730388910307.png

Die Kind-Pipeline besteht aus einem einzelnen Mapper-Snap, der „$num“ um 1 erhöht, wodurch die Anforderung„eine Pipeline mit einer nicht verknüpften Eingabe und einer nicht verknüpften Ausgabe“ für eine von PipeLoop auszuführende Pipeline erfüllt wird.

Ausgabe 

Die Ausgabe von PipeLoop besteht bei aktiviertem Debug-Modus aus zwei Hauptabschnitten: den Ausgabefeldern und den _iteration_documents. Wir sehen, dass die endgültige Ausgabe „num”: 3 lautet, was bedeutet, dass PipeLoop die Aufgabe erfolgreich ausgeführt hat.

tfan_3-1730388910171.png

Funktionen von PipeLoop

PipeLoop bietet mehrere Funktionen, die beim Erstellen iterativer Pipelines hilfreich sein können. Wir werden sie nach ihrem Standort kategorisieren.

Eigenschaften

tfan_4-1730388910174.png

Die Eigenschaften von PipeLoop Snap umfassen vier Hauptabschnitte.

  • Pipeline
  • Pipeline-Parameter
  • Schleifenoptionen
  • Ausführungsoptionen

Pipeline

Die auszuführende Pipeline.

Pipeline-Parameter

Wir werden uns im Abschnitt „Pipeline-Parameter“ näher damit befassen.

Schleifenoptionen

Loop-Optionen sind Eigenschaften, die sich auf die Iterationen dieses Snaps beziehen. 

Stoppbedingung

Im Feld „Stop-Bedingung“ kann der Benutzer einen Ausdruck festlegen, der nach der ersten Ausführung ausgewertet wird. Wenn der Ausdruck als wahr ausgewertet wird, wird die Iteration gestoppt. Die Stop-Bedingung kann auch auf „false“ gesetzt werden, wenn der Benutzer diese als herkömmliche for-Schleife verwenden möchte. 

Es gibt Fälle, in denen der Benutzer möglicherweise einen unbeabsichtigten Wert in das Feld „Stop-Bedingung“ eingibt. In diesem Szenario generiert PipeLoop eine Warnung, wenn der Benutzer eine nicht-boolesche Zeichenfolge als Stop-Bedingung angibt, während die Stop-Bedingung als falsch behandelt wird .

tfan_5-1730388910174.png
Nicht-boolesche Warnung bei Stoppbedingung
Iterationsgrenze

Im Feld „Iterationsgrenze“ kann der Benutzer die maximale Anzahl der Iterationen begrenzen, die möglicherweise auftreten können. Dieses Feld kann auch verwendet werden, um die Gesamtzahl der Ausführungen zu begrenzen, wenn die Stoppbedingung auf „false“ gesetzt ist .

Das Festlegen eines hohen Werts für die Iterationsgrenze bei aktiviertem Debug-Modus kann gefährlich sein. Die angesammelten Dokumente können schnell die CPU- und RAM-Ressourcen erschöpfen. Um dies zu verhindern, generiert PipeLoop eine Warnung auf der Registerkarte „Pipeline-Validierungsstatistik“, wenn die Iterationsgrenze auf einen Wert größer oder gleich 1000 gesetzt und der Debug-Modus aktiviert ist. 

tfan_6-1730388910183.png
Warnung bei aktiviertem Debug-Modus und hoher Iterationsgrenze
Debug-Iterationsausgaben

Dieses Umschaltfeld ermöglicht es, die Ausgabe der untergeordneten Pipelines für jede Iteration und die Bewertung der Stoppbedingung als separates Feld in die endgültige Ausgabe einzufügen.

Ausgabe-Beispiel mit aktivierten Debug-Iterationsausgaben

Ausführungsoptionen

Ausführen auf

Festlegen, wo die Pipeline-Ausführung stattfinden soll. Derzeit werden nur lokale Ausführungen (lokaler Snaplex, lokaler Knoten) unterstützt.

Ausführungslabel

Wir werden uns im Abschnitt „Überwachung“ näher damit befassen.

Pipeline-Parameter

Benutzer, die mit den Pipeline-Parametern in PipeExec vertraut sind, können zum nächsten Abschnitt übergehen, da die Anweisungen identisch sind.

Einführung in Pipeline-Parameter

Bevor wir uns die Unterstützung von Pipeline-Parametern im PipeLoop Snap ansehen, wollen wir einen Schritt zurücktreten und uns ansehen, was Pipeline-Parameter sind und wie sie genutzt werden können.

Pipeline-Parameter sind String-Konstanten, die in den Einstellungen zur Bearbeitung der Pipeline-Konfiguration definiert werden können. Benutzer können die Parameter als Konstante verwenden, die überall in der Pipeline eingesetzt werden kann. Ein wesentlicher Unterschied zwischen Pipeline-Parametern und Pipeline-Variablen besteht darin, dass Pipeline-Parameter mit einem Unterstrich als Präfix bezeichnet werden, während Pipeline-Variablen mit einem Dollarzeichen als Präfix bezeichnet werden.

Pipeline-Parameter in „Pipeline-Konfiguration bearbeiten“
Zugriff auf Pipeline-Parameter in einem Ausdrucksfeld

Beispiel 

Sehen wir uns die Pipeline-Parameter in Aktion mit PipeLoop an. Unser Ziel ist es, „Hello PipeLoop!” n-mal auszugeben, wobei n der Wert von„num” ist.

Wir fügen zwei Parameter in die untergeordnete Pipeline ein: param1 und param2. Zur Veranschaulichung weisen wir param1den Wert „value1“zu und lassen param2 leer. Anschließend fügen wir im JSON-Generator ein Nachrichtenfeld mit dem Wert„Hello PipeLoop!” hinzu, damit wir den String-Wert param2 zuweisen können . Jetzt können wir param2 als Konstante in der untergeordneten Pipeline verwenden. PipeLoop verfügt außerdem über integrierte Vorschläge für Feldnamen in den Parameternamenfeldern, um die Verwendung zu vereinfachen. 

tfan_10-1730388910308.png
PipeLoop-Pipeline-Parameter in Aktion

Für unsere Child-Pipeline fügen wir eine neue Zeile in die Mapping-Tabelle ein, um „Hello PipeLoop!” wiederholt auszugeben (gefolgt von einem Zeilenumbruchzeichen). Beachten Sie, dass die Reihenfolge der Mapping-Tabelle keinen Einfluss auf die Ausgabe hat (in diesem Fall die Anzahl der ausgegebenen „Hello PipeLoop!”-Zeichen), da die Ausgabefelder nach Abschluss der aktuellen Iteration aktualisiert werden. 

tfan_11-1730388910191.png
Konfiguration der Child-Pipeline für unsere Aufgabe

Hier ist das Endergebnis: Wir sehen, dass „Hello PipeLoop!“ zweimal ausgegeben wird. Mission erfüllt.

tfan_12-1730388910200.png

Anmerkungen

  • Pipeline-Parameter sind String-Konstanten, die unter „Pipeline-Konfiguration bearbeiten“ festgelegt werden können .
  • Benutzer können einen String an Pipeline-Parameter übergeben, die in der untergeordneten Pipeline in PipeLoop definiert sind.
  • Die Pipeline-Parameter in PipeLoop werden überschreiben vorherige Pipeline-Parameterwerte, die in der untergeordneten Pipeline definiert wurden, wenn die Parameter denselben Namen haben.
  • Pipeline-Parameter sind Konstanten, was bedeutet, dass die Werte während der Iterationen nicht geändert werden, selbst wenn die Benutzer dies tun würden.

Überwachung

Wenn ein Snap in einer Pipeline ausgeführt wird, gibt es keine Ausgabe, bis die Ausführung abgeschlossen ist. Aufgrund der Natur der iterativen Pipeline-Ausführung als einzelner Snap ist es daher etwas schwierig zu erkennen, wo sich die Ausführung gerade befindet oder welche Pipeline-Ausführung welchem Eingabedokument entspricht. Um dieses Problem zu beheben, bieten wir zwei zusätzliche Funktionen, die die PipeLoop-Ausführung übersichtlicher machen.

Fortschrittsbalken für Pipeline-Statistiken

Während der Ausführung von PipeLoop wird auf der Registerkarte „Pipeline-Validierungsstatistik“ eine Fortschrittsanzeige angezeigt, sodass der Benutzer einen Überblick darüber erhält, bei welcher Iteration sich PipeLoop gerade befindet. Beachten Sie, dass die Fortschrittsanzeige aufgrund von Abfrageintervallen möglicherweise nicht den tatsächlichen Iterationsindex widerspiegelt, wenn die Ausführungen der untergeordneten Pipelines kurz sind. 

tfan_13-1730388910191.png
PipeLoop-Iterationsfortschrittsbalken

Ausführungslabel

Wenn ein PipeLoop mit mehreren Eingabedokumenten ausgeführt wird, kann der Benutzer im SnapLogic Monitor nicht erkennen, welche Pipeline-Ausführung mit welchem Eingabedokument verknüpft ist. Die Antwort auf dieses Problem ist die Ausführungsbezeichnung . Der Benutzer kann im Feld „Ausführungsbezeichnung“ einen Wert eingeben, mit dem sich die Eingabedokumente unterscheiden lassen, sodass jedes Eingabedokument während der Ausführung im SnapLogic Monitor eine eigene Bezeichnung erhält.

Hier ist ein Beispiel für zwei Eingabedokumente, die in der untergeordneten Pipeline ausgeführt werden. Wir legen die Ausführungsbezeichnung mit dem Ausdruck „child_label“ + $num fest, sodass die Ausführung für das erste Dokument die Bezeichnung „child_label0“ und die zweite Ausführung die Bezeichnung „child_label1“ erhält. 

Einstellungen für Ausführungslabel

 

SnapLogic-Monitoransicht

Zusammenfassung

In diesem Artikel haben wir PipeLoop vorgestellt, einen neuen Snap für iterative Ausführungsworkflows. Die von PipeLoop ausgeführte Pipeline muss über einen nicht verknüpften Eingang und einen nicht verknüpften Ausgang verfügen.

PipeLoop verfügt über die folgenden Funktionen:

  • Unterstützung von Pipeline-Parametern
  • Bedingung zum vorzeitigen Beenden mit Warnungen
  • Iterationsgrenze zur Vermeidung einer Endlosschleife mit Warnungen
  • Debug-Modus
  • Ausführungslabel zur Unterscheidung von Läufen im Monitor
  • Fortschrittsbalken zur Statusverfolgung

Viel Spaß beim Bauen!

Tim Fan Kopfbild
Software-Entwickler bei SnapLogic
Kategorie: Technik