Diagramm
Allgemeine Übersicht
Das Diagramm ist die Oberfläche in der Virtimo IGUASU-Anwendung, auf dem die Datenflüsse dargestellt werden.
Werden Elemente im Diagramm ausgewählt, können diese im Konfigurationsbereich zusätzlich angepasst werden.
Über einen Rechtsklick der Maus ist ein Kontextmenü mit passenden Aktionen erreichbar.
Es können aber auch Tastaturkürzeln verwendet werden, um die verschiedenen Funktionen zu nutzen.
Header
Im oberen Bereich des Diagramms befindet sich der Header, der eine Navigationsleiste, eine Toolbar und eine Zusammenfassung der Zustände der Processors enthält.
Navigationsleiste
Über die Navigationsleiste kann zwischen den angelegten Process Groups gewechselt werden.
Sind in der aktuell ausgewählten Process Group mehrere Gruppen vorhanden, steht zudem ein Drop-Down Menü zur Verfügung, über das die untergeordneten Process Groups (Subgroups) ausgewählt werden können.
Über das -Icon gelangen Sie umgehend zur Root-Process Group zurück.
Processor-Zustände
Die Zusammenfassung der Zustände von vorhandenen Processor in der aktuellen Process Group.
Weitere Informationen hierzu befinden sich unter Zustände der Processors.
Toolbar
Das Diagramm verfügt über eine eigene Toolbar, in der sich Einstellungsmöglichkeiten zur Anpassung der angelegten Elemente und Ansichten befinden.
Die angezeigten Anpassungsmöglichkeiten für das Diagramm sind abhängig vom eingestellten Modus des Diagramms.
Hierbei wird zwischen dem Ansichtsmodus und dem Editiermodus unterschieden.
Die schwarzen Icons sind sowohl im Ansichtsmodus als auch im Editiermodus verfügbar, während die orangen Icons nur im Editiermodus ausgewählt werden können.
Ansichtsmodus
Im Ansichtsmodus ist die Interaktion im Diagramm grundsätzlich auf das Auswählen der Elemente beschränkt. Einstellungen der ausgewählten Elemente im Konfigurationsbereich oder das Ausführen von Flows ist allerdings weiterhin möglich.
In der folgenden Tabelle sind die Funktionen der Toolbar abgebildet:
Icon | Beschreibung |
---|---|
|
Wechselt zwischen dem Ansichtsmodus und Editiermodus. |
|
Ermöglicht, die Größe der dargestellten Elemente im Diagramm zu verändern. |
|
Blendet die Event-Tabelle ein. |
|
Öffnet ein Fenster mit allen Services. |
|
Öffnet das Fenster der Versionierung der aktuellen Process Group. |
|
Öffnet das Fenster der Flow-Trees auf der linken Seite. Diese kann genutzt werden, um zwischen vorhandenen Process Groups zu wechseln. |
|
Zeigt die Statistik der Verarbeitung für die angelegten Processors und Process Groups. |
|
Öffnet das Fenster der Historie der aktuellen Process Group. |
Event-Tabelle
Events werden von den Processors bei den Ausführungen generiert, um verschiedene Aktionen bezogen auf den Inhalt oder die Attribute anzuzeigen.
Die Event-Tabelle beinhaltet Informationen zur Provenance (vergangene Ausführungen) von ausgewählten Processors. Zum Ein- und Ausblenden der Event-Tabelle kann der entsprechende Button genutzt werden:
Wenn kein Processor ausgewählt wurde oder der ausgewählte Processor keine Events aufweist, ist diese Tabelle zunächst leer. Bei vorhandenem Inhalt werden Informationen bezüglich der Ausführungszeit, der Größe der verarbeiteten Daten sowie die ID des Vorgangs und der Event-Typ dargestellt.
Toolbar der Event-Tabelle
Icon | Beschreibung |
---|---|
|
Kann genutzt werden, um zuvor heruntergeladen Events erneut in die Event-Tabelle zu importieren. Dies kann beispielsweise nötig sein, um bestimmte Ergebnisse zu reproduzieren oder um die Anwendung fortzusetzen, auch wenn externe Systeme nicht mehr verfügbar sein sollten. |
|
Ermöglicht das Herunterladen eines ausgewählten Events in der Event-Tabelle. |
|
Event-Tabelle nach bestimmten Zeiträumen filtern. |
|
Markiert die gesamte Ausführungssequenz des ausgewählten Ereignisses im Diagramm. Der Processor welcher das Event erzeugte, wird blau markiert. |
|
Weitere Filtermöglichkeiten der Events wie z.B. max. Events, Ladezeit, Events pro Komponente oder Kinder |
|
Nicht ausgewählte Ereignisse werden ausgeblendet. |
Einige Funktionen lassen sich an der Tabelle der Events konfigurieren, z.B. die automatische Ermittlung der gesamten Ausführungsstrecke oder auch die dafür verwendete Zeit.
Um diese Einstellungen zu öffnen, kann eine zusätzliche Toolbar innerhalb der Event-Tabelle ein- und ausgeblendet werden:
Evaluation von Events
Selektiert man nun eine der Ausführungen in der Event-Tabelle,
-
wird versucht, die gesamte Ausführungsstrecke für diese Instanz mit allen beteiligten Processors zu ermitteln,
-
wird die komplette Ausführung des Flows im Diagramm farblich hervorgehoben,
-
werden die zu der Ausführung dieses Processors gehörigen Events in der Tabelle hervorgehoben,
-
werden die Daten, die bei diesem Event vom Processor konsumiert bzw. erzeugt wurden, auf der rechten Seite angezeigt.
Innerhalb des Diagramms werden zur besseren Nachvollziehbarkeit Nummern entsprechend der Reihenfolge der Ausführung vergeben. Die jeweilige Event-Nummer ist ebenfalls in der Tabelle unterhalb des Diagramms ersichtlich.
Die Daten, die bei der Auswahl eines Events im Data Panel des Konfigurationsbereichs angezeigt werden, bestehen aus den Attributen, den Eingangs-Daten und den Ausgangs-Daten, wobei nicht immer alle vorhanden sein müssen.
Es kann Situationen mit sehr vielen Events geben, in denen das Ermitteln der kompletten Strecke nicht direkt möglich ist. Dies kann beispielsweise der Fall sein, wenn ein Loop mit sehr vielen Durchläufen existiert. In diesem Fall kann man sich auf Teilstrecken vor oder nach dem Loop konzentrieren oder nur die Daten dieses einen Processors im Data Panel anzeigen.
Services
Über den Services-Button der Toolbar wird der Bereich zum Konfigurieren von Services geöffnet.
Services gelten hierarchisch und können somit innerhalb der Process Group, an der sie angelegt wurden, und in allen sich darunter befindenden Process Groups benutzt werden.
Das Fenster wird dementsprechend die Services nach Process Group gruppieren.
Die aktuelle Process Group wird als erste angezeigt, danach folgt die Parent-Process Group.
Zur Erstellung eines neuen Services kann der -Button in der Services-Übersicht genutzt werden.
Durch die Interaktion wird ähnlich wie bei Processor ein zusätzliches Fenster zur Auswahl geöffnet.
Ein Beispiel für einen Service, der mehreren Processor-Instanzen seine Funktionalität zur Verfügung stellt, wäre etwa ein Datenbank-Pool.
Eine detaillierte Beschreibung von einigen speziellen Services finden Sie unter Ausgewählte Services.
Flow Trees
Über die Toolbar können weitere Fenster im Diagramm zu den dargestellten Process Groups angezeigt werden. Über den Hierarchie-Button kann beispielsweise dadurch das Fenster für die vorhandenen Flow-Trees geöffnet werden, die eine hierarchische Darstellung der vorhandenen Process Groups abbildet.
Dadurch wird auf der linken Seite des Diagramms die Struktur der Process Group dargestellt und kann genutzt werden, um zwischen vorhandenen Process Groups zu wechseln.
Statistik der Verarbeitung
Sie haben die Möglichkeit, zusätzliche Informationen der Processors und Process Groups anzeigen zu lassen. Durch die Interaktion mit dem -Icon kann diese Ansicht ein- und ausgeschaltet werden. Die dargestellte Statistik bezieht sich immer auf die letzten 5 Minuten.
In der ersten Zeile wird angezeigt, wie viele FlowFiles empfangen und weitergegeben wurden bzw. wie groß diese waren.
Der zweiten Zeile kann entnommen werden, welche Datenmengen an den Processor gesendet und welche weitergeleitet wurden (z.B. bei einem HTTP Aufruf eines externen Systems).
In der letzten Zeile ist die Anzahl und die Dauer der Processor-Ausführungen ersichtlich.
Editiermodus
In den Editiermodus des Diagramms wird über den Edit-Button gewechselt.
In diesem Modus können die vorgestellten Funktionen und Inhalte des Ansichtsmodus weiterhin aufgerufen werden.
Darüber hinaus ist es möglich, Elemente anzulegen, zu löschen, zu verschieben und miteinander zu verbinden.
Dafür wird unter der normalen Toolbar im Diagramm noch eine weitere angezeigt, in der die Editieraktionen ausgewählt werden können.
Unter den Editieraktionen befinden sich unterschiedliche Typen von Modulen. Diese können in das Diagramm per Drag-and-Drop hineingezogen werden, um sie zu erstellen.
In der folgenden Tabelle sind die Editier-Funktionen der Toolbar abgebildet (siehe Ansichtsmodus für eine Übersicht der schwarzen Funktionsicons):
Icon | Beschreibung |
---|---|
|
Erstellt einen Processor |
Erstellt eine Process Group |
|
|
Erstellt einen Input-Port |
|
Erstellt einen Output-Port |
|
Erstellt einen Funnel |
|
Erstellt ein Label |
|
Verändert die Größe der dargestellten Elemente im Diagramm |
|
Schneidet ausgewählte Elemente im Diagramm aus |
|
Kopiert ausgewählte Elemente im Diagramm |
|
Fügt zuvor kopierte oder ausgeschnittene Elementen ein |
|
Löscht das ausgewählte Element |
|
Macht den letzten Schritt rückgängig |
|
Stellt die rückgängig gemachten Aktionen wieder her |
Diagramm-Elemente/Module
Process Group
Zur Strukturierung von Processors können Process Groups eingesetzt werden.
Diese Gruppen ermöglichen das Erstellen von Hierarchien oder das Zusammenfassen von Funktionen innerhalb des Diagramms.
Hierarchien können ohne weitere Anpassungen durch das Erstellen von Process Groups konstruiert werden. Zur Erstellung können entweder zuvor erstellte Gruppen als Vorlage dienen, die entweder durch die Registry oder durch das Hochladen der zuvor heruntergeladenen JSON-Datei zur Verfügung stehen. Neue Process Groups können durch die Definition eines Namens erstellt werden. Bereits erstellte Process Groups oder Elemente können zudem per Drag-and-drop in eine bereits vorhandene Process Group hinzugefügt werden. Die Navigation zwischen den Gruppen erfolgt über die Navigationsleiste im Diagramm.
Funktionen zur Verarbeitung von FlowFiles können in Process Groups zusammengefasst werden. Um einen Eingang und Ausgang von FlowFiles in untergeordnete Process Groups zu ermöglichen, können Ports verwendet werden.
Zur Verbesserung der Übersicht sind zudem die Zustände und Informationen zur Versionierung der enthaltenen Processors mit kleinen Icons illustriert. Diese Informationen werden für die aktuelle Process Group auch am oberen Rand des Diagramms dargestellt, siehe Diagramm-Toolbar.
Zusätzlich können als Admin-Benutzer "Permissions" in der Process Group ausgewählt werden. Es können durch Mehrfachauswahl eine Menge an Benutzergruppen ausgesucht werden. Wenn keine Gruppen angeklickt wurden, ist die Process Group individuell nutz- und lesbar.
Execution Engines und Stateless Process Groups
Stateless Execution Engine ist ein neues Beta-Feature. Einige Processors und Services können dabei noch fehlerhaft agieren. |
Stateless Execution Engines können, neben der standardmäßigen Execution Engine, für Prozessruppen angewendet werden. Dabei wird der gesamte Ablauf innerhalb der Process Group in isolierten Vorgängen geschedulet und ausgeführt.
Alle Processor innerhalb der Gruppe schließen die Verarbeitung einer eingehenden FlowFile ab bevor neue FlowFiles verarbeitet werden.
FlowFiles innerhalb der Process Group werden nicht persistiert.
Die gesamte Process Group verhält sich damit also wie ein einzelner Processor.
Wenn eine Process Group "stateless" ist, dann sind alle enthaltenen Elemente “stateless”. Binden Sie nur die Flows in diese Process Groups ein, die auch "stateless" sein sollen. |
In der Regel wird die Stateless Execution Engine verwendet, wenn die verarbeiteten Daten:
-
aus einer Transaktionsquelle stammen,
-
einen einzigen Zielort haben,
-
und sich wie ein einziger Vorgang verhalten sollen, der von außen betrachtet nur entweder erfolgreich sein oder in seiner Gesamtheit fehlschlagen kann.
Beispiel:
Bei der Datenquelle handelt es sich um einen Message Broker.
Sie möchten, dass eine empfangene Nachricht erst nach erfolgreicher Verarbeitung bestätigt wird oder dass im Falle eines Fehlers die Nachricht negativ bestätigt (mit einem "NAK" beantwortet) und somit vom Message Broker erneut gesendet wird.
Die Stateless Execution Engine birgt potenzielle Nachteile:
|
Processor
Eines der Kernelemente von IGUASU sind die Processors, über die unterschiedliche Funktionen zur Verfügung stehen. Die Konfiguration der Processors, um individuelle oder allgemeinem Einstellungsmöglichkeiten anzupassen, erfolgt über den Konfigurationsbereich.
Processor-Klassen
Die Processors sind in fünf Klassen aufgeteilt, welche im Diagramm mit einer spezifischen Farbe dargestellt werden:
System |
Zugriff auf externe Systeme (aus Sicht von IGUASU). Beispiele: Datenbanken, Filesystem, ein Web-Service, AWS-S3, etc. |
Transformation |
Der Content/die Daten werden verändert. Beispiele: Ausführung von XSLT, Text-Ersetzung oder auch allgemeines Scripting wie etwa in Groovy |
Routing |
Processors, die sich primär auf die Logic der Abläufe beziehen. Zum Beispiel auf welchen Ausgang anhand eines Attributes geroutet werden soll oder das Splitting eines XML Dokumentes in viele kleine. Insgesamt geht es hier also um Routing, Splitting, Merging, Sprünge etc. |
Metadata |
Processors, die sich primär auf Metadaten (Attribute) der FlowFiles beziehen und den Content typischerweise unberührt lassen. Beispielsweise das Anlegen eines Attributes aus Teilen des Contents. |
Conversion |
Konvertierung direkt von einem Format in ein anderes. Beispielsweise von Avro nach JSON oder auch von beliebigem Content in ein gezipptes Format. |
Um eine verbesserte Übersicht und ein einfaches Verständnis für die Aufgabe eines Processors zu ermöglichen, wird neben den farblichen Unterschieden zudem ein Icon im Processor angezeigt.
Dadurch wird eine zusätzliche Differenzierung der Processors einer gleichen Klasse ermöglicht.
Auswahl der Processors
Processors können erstellt werden, indem sie per Drag-and-Drop in das Diagramm eingefügt werden. Hierbei wird ein Fenster geöffnet, in dem alle im System verfügbaren Processors aufgelistet sind.
Um die Suche nach der passenden Option zu erweitern, kann zudem der Name gesucht oder die Auswahl hinsichtlich der oben erwähnten Klassen gefiltert werden.
Im Auswahlfenster kann bereits bei der Erstellung ein passender Anzeigename angegeben werden.
Einige Processors nutzen zudem Services zur Durchführung der Aufgaben. Weitere Angaben hierzu befinden sich im Abschnitt Ausgewählte Services.
Zustände der Processors
Processors können sich in unterschiedlichen Zuständen befinden. Der Zustand eines Processors ist am oberen rechten Rand am kleinen Icon ersichtlich.
Wird ein neuer Processor erstellt, wird standardmäßig zunächst eine Warnmeldung angezeigt, da oftmals zunächst benötigte Angaben im Konfigurationsbereich eingetragen werden müssen.
Sind alle nötigen Konfigurationen abgeschlossen, befinden sich die Processors zunächst in einem gestoppten Zustand.
Durch Rechtsklick auf einen Processor kann dieser anschließend auf "laufend" gesetzt oder einmal ausgeführt werden.
Zusätzlich können sie über das Kontext-Menü deaktiviert oder reaktiviert werden.
Label
Labels können wie Post-its genutzt werden, um Elemente oder Flows im Diagramm zu beschreiben.
Zur Erstellung eines Labels wird dieser aus der Toolbar per Drag-and-Drop in das Diagramm gezogen.
Bei erstellten Labels kann die Schriftgröße und die Hintergrundfarbe im Konfigurationsbereich angepasst werden.
Wird der Radiergummi-Button bei der Hintergrundfarbe genutzt, wird die standardmäßige Farbe (#fff7d7
) wieder hergestellt.
Labels sind die einzigen Elemente im Diagramm, bei denen die Größe im aktivierten Editiermodus angepasst werden kann. Zudem befinden sich Labels immer im Hintergrund der anderen Elemente, wodurch sie zusätzlich genutzt werden können, um Abschnitte im Flow hervorzuheben und zu beschreiben. Ein Beispiel für beide Anwendungsfälle von Labels ist in der folgenden Abbildung ersichtlich.
Funnel
Funnel können genutzt werden, um ausgehende Verbindungen zu empfangen.
Im Gegensatz zu anderen Elementen im Diagramm, z.B. den Processor, können Funnel allerdings nicht konfiguriert werden und führen ebenfalls keine Änderungen an empfangenen FlowFiles durch.
Dadurch eigenen sie sich sehr gut, um beispielsweise multiple Verbindungen zusammenzuführen, also aus mehreren Kanten eine einzelne zu machen, oder entstandene Fehler abzufangen.
FlowFiles die an einen Funnel geroutet wurden, sind auf der Kante vor dem Funnel sichtbar.
Beispiel für das Zusammenführen und die Nutzung bei Fehlern:
Port
Ports werden als Schnittstelle genutzt, um Verbindungen zu Process Group herzustellen.
Soll ein FlowFile innerhalb einer Gruppe verarbeitet und im Anschluss an die übergeordnete weitergeleitet werden, müssen sowohl ein Input- als auch ein Output-Port vorhanden sein.
Input-Ports deklarieren hierbei den Startpunkt der erhaltenen FlowFiles innerhalb der Process Group.
Output-Ports bestimmen hingegen die Schnittstelle, über die die Daten erneut an die übergeordnete Gruppe weitergeleitet werden.
Bei der Erstellung kann beim Input- und Output-Port ein Name definiert werden, der im Konfigurationsbereich angepasst werden kann.
Stehen mehrere Ports innerhalb einer Process Group zur Verfügung, kann bei der Verknüpfung ausgewählt werden, welcher Port als Schnittstelle für den Flow genutzt werden soll.
Ähnlich wie bei Processor, können sich Ports zudem in unterschiedlichen Zuständen befinden, z.B. "laufend", "gestoppt" oder "deaktiviert".
Beispiel für die Verwendung multipler Ports innerhalb einer Process Group:
Connection
Connections sind die Verbindungen zwischen Elementen. Diese werden insbesondere zwischen Processors gezogen und bilden aus Sicht eines Processors die Eingänge und die Relations als Ausgänge. Neben Processors werden aber auch noch Verbindungen zu Ports gezogen (und damit dann auch zu Process Groups). Mit den Funnels können mehrere Eingänge auf einen gelegt werden.
Auf dem Queue Panel können die ersten 100 Einträge der Queue eingesehen werden. Es ist zu beachten, dass dies schwierig sein kann, wenn die Processors laufen, da sich die Einträge die hinein- und hinauslaufen sehr schnell ändern.
Hier kann die Queue auch komplett geleert werden.
Außerdem kann man den Status und die Portnamen direkt auf den Verbindungen, die in die und aus der Process Group gehen, ablesen.
An den Connections können einige Dinge konfiguriert werden. Hier ein paar erweiterte Erläuterungen.
FlowFile Expiration
Möchte man, dass FlowFiles nicht für ewig in der Connection liegen, kann man eine FlowFile Expiration definieren. Das ist sicher kein Normalfall, aber somit kann man beispielsweise eine Verbindung zu einem Funnel erstellen, damit man dort noch für einige Zeit (z.B. einen Tag) die dorthin gerouteten FlowFiles sehen kann, bevor sie dann entfernt werden.
Backpressure
Die beiden Einstellungen zum Backpressure beziehen sich einmal auf die Anzahl der FlowFiles, sowie die gesamte Größe des Inhalts aller FlowFiles in der Queue. Wenn eine dieser Grenzen erreicht ist, dann wird die Queue keine weiteren FlowFiles annehmen und der Quell-Processor dieser Verbindung wird nicht mehr ausgeführt, bis wieder Platz in der Queue ist. Die Limits sind dabei Soft-Limits und müssen damit als ungefähre Größen betrachtet werden.
Über den Backpressure Mechanismus wird sichergestellt, dass das Gesamtsystem nicht überlastet wird bzw. dass ein überlasteter Bereich nicht überläuft. Kann ein Processor (z.B. eine Datenbank in die geschrieben wird) nicht mehr FlowFiles annehmen, dann sollen auch keine weiteren hineinlaufen, sodass sich die Queues mit Backpressure bis zur Quelle der FlowFiles (z.B. ein REST-Endpunkt) fortsetzt und dieser dann auch keine Aufrufe mehr annimmt.
Load Balance Strategy
Dies ist nur sinnvoll nutzbar, wenn IGUASU geclustert ist. Dann kann damit explizit Last auf andere Knoten verteilt werden. Das ist nur sehr selten notwendig, da in den meisten Fällen eine gute Verteilung automatisch passiert.
Prioritizers
Hiermit kann eingestellt werden, wie die FlowFiles in der Queue liegen und damit auch an den folgenden Processor gegeben werden. Will man beispielsweise die Reihenfolge immer gleich haben, müsste man "First In First Out" wählen.
Die hier gewählte Einstellung wirkt sich direkt auf die Darstellung der ersten 100 Einträge aus, die man sich ansehen kann.