Diagramm

Allgemeine Übersicht

Das Diagramm ist die Oberfläche in der Virtimo IGUASU-Anwendung, auf dem die Datenflüsse dargestellt werden.

Diagramm

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ürzel 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 Prozessoren enthält.

Diagramm-Toolbar

Navigationsleiste

Über die Navigationsleiste kann zwischen den angelegten Prozessgruppen gewechselt werden.

diagram header nav

Sind in der aktuell ausgewählten Prozessgruppe mehrere Gruppen vorhanden, steht zudem ein Drop-Down Menü zur Verfügung, über das die untergeordneten Prozessgruppen (Subgroups) ausgewählt werden können.

diagram header nav

Über den Home-Button kann umgehend zur Root-Prozessgruppe navigiert werden.

Prozessor-Zustände

Die Zusammenfassung der Zustände von vorhandenen Prozessor in der aktuellen Prozessgruppe.

diagram header state

Weitere Informationen hierzu befinden sich unter Zustände der Prozessoren.

Toolbar

Das Diagramm verfügt über eine eigene Toolbar, in der sich Einstellungsmöglichkeiten zur Anpassung der angelegten Elemente und Ansichten befinden.

diagram header toolbar

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

200

Wechselt zwischen dem Ansichtsmodus und Editiermodus.
Wenn der Button aktiviert ist, wird er orange eingefärbt und eine weitere Leiste mit Anpassungsmöglichkeiten aufgeklappt.

30

Ermöglicht, die Größe der dargestellten Elemente im Diagramm zu verändern.

30

Blendet die Event-Tabelle ein.

30

Öffnet das Fenster der Services zur aktuellen Prozessgruppe.

30

Öffnet das Fenster der Versionierung der aktuellen Prozessgruppe.

30

Öffnet das Fenster der Flow-Trees auf der linken Seite. Diese kann genutzt werden, um zwischen vorhandenen Prozessgruppen zu wechseln.

30

Zeigt die Statistik der Verarbeitung für die angelegten Prozessoren und Prozessgruppen.

30

Öffnet das Fenster der Historie der aktuellen Prozessgruppe.

30

Aktualisiert das Diagramm und dadurch die aktuell dargestellten Verarbeitungen.

30

Ermöglicht, die Größe der Diagrammfläche zu verändern.

Events

Events werden von den Prozessoren bei den Ausführungen generiert, um verschiedene Aktionen bezogen auf den Inhalt oder die Attribute anzuzeigen.

Event-Tabelle

Die Event-Tabelle beinhaltet Informationen zur Provenance (vergangene Ausführungen) von ausgewählten Prozessoren. Zum Ein- und Ausblenden der Event-Tabelle kann der entsprechende Button genutzt werden:

Event-Tabelle

Wenn kein Prozessor ausgewählt wurde oder der ausgewählte Prozessor 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

200

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.

30

Ermöglicht das Herunterladen eines ausgewählten Events in der Event-Tabelle.

30

Event-Tabelle nach bestimmten Zeiträumen filtern.

30

Markiert die gesamte Ausführungssequenz des ausgewählten Ereignisses im Diagramm. Der Prozessor welcher das Event erzeugte, wird blau markiert.

30

Nicht ausgewählte Ereignisse werden ausgeblendet.

30

Weitere Filtermöglichkeiten der Events wie z.B. max. Events, Ladezeit, Events pro Komponente oder Kinder

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:

Toolbar der Event-Tabelle

Evaluation von Events

Selektiert man nun eine der Ausführungen in der Event-Tabelle,

  1. wird versucht, die gesamte Ausführungsstrecke für diese Instanz mit allen beteiligten Prozessoren zu ermitteln.

  2. wird die komplette Ausführung des Flows im Diagramm farblich hervorgehoben.

  3. werden die zu der Ausführung dieses Prozessors gehörigen Events in der Tabelle hervorgehoben.

  4. werden die Daten, die bei diesem Event vom Prozessor konsumiert bzw. erzeugt wurden, auf der rechten Seite angezeigt.

Event-Tabelle

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 Prozessors im Data Panel anzeigen.

Services

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 Prozessgruppe, an der sie angelegt wurden, und in allen sich darunter befindenden Prozessgruppen benutzt werden. Das Fenster wird dementsprechend die Services nach Prozessgruppe gruppieren. Die aktuelle Prozessgruppe wird als erste angezeigt, danach folgt die Parent-Prozessgruppe.

Services

Zur Erstellung eines neuen Services kann der -Button in der Services-Übersicht genutzt werden.

Service hinzufügen

Durch die Interaktion wird ähnlich wie bei Prozessor ein zusätzliches Fenster zur Auswahl geöffnet.

Service-Auswahl

Ein Beispiel für einen Service, der mehreren Prozessor-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 Prozessgruppen 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 Prozessgruppen abbildet.

Flow Tree

Dadurch wird auf der linken Seite des Diagramms die Struktur der Prozessgruppe dargestellt und kann genutzt werden, um zwischen vorhandenen Prozessgruppen zu wechseln.

Statistik der Verarbeitung

Sie haben die Möglichkeit, zusätzliche Informationen der Prozessoren und Prozessgruppen anzeigen zu lassen. Durch die Interaktion mit dem Tacho-Button kann diese Ansicht ein- und ausgeschaltet werden. Die dargestellte Statistik bezieht sich immer auf die letzten 5 Minuten.

Details

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 Prozessor 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 Prozessor-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.

IGUASU Diagramm editieren

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.

Drag&Drop

In der folgenden Tabelle sind die Editier-Funktionen der Toolbar abgebildet (siehe Ansichtsmodus für eine Übersicht der schwarzen Funktionsicons):

Icon Beschreibung

30

Erstellt einen Prozessor

30

Erstellt eine Prozessgruppe

30

Erstellt einen Input-Port

30

Erstellt einen Output-Port

30

Erstellt einen Funnel

30

Erstellt ein Label

30

Verändert die Größe der dargestellten Elemente im Diagramm

30

Schneidet ausgewählte Elemente im Diagramm aus

30

Kopiert ausgewählte Elemente im Diagramm

30

Fügt zuvor kopierte oder ausgeschnittene Elementen ein

30

Löscht das ausgewählte Element

30

Macht den letzten Schritt rückgängig

30

Stellt die rückgängig gemachten Aktionen wieder her

Diagramm-Elemente/Module

Prozessgruppe

Zur Strukturierung von Prozessoren können Prozessgruppen 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 Prozessgruppen 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 Prozessgruppen können durch die Definition eines Namens erstellt werden. Bereits erstellte Prozessgruppen oder Elemente können zudem per Drag-and-drop in eine bereits vorhandene Prozessgruppe hinzugefügt werden. Die Navigation zwischen den Gruppen erfolgt über die Navigationsleiste im Diagramm.

Funktionen zur Verarbeitung von FlowFiles können in Prozessgruppen zusammengefasst werden. Um einen Eingang und Ausgang von FlowFiles in untergeordnete Prozessgruppen zu ermöglichen, können Ports verwendet werden.

Zur Verbesserung der Übersicht sind zudem die Zustände und Informationen zur Versionierung der enthaltenen Prozessoren mit kleinen Icons illustriert. Diese Informationen werden für die aktuelle Prozessgruppe auch am oberen Rand des Diagramms dargestellt, siehe Diagramm-Toolbar.

Prozessgruppen

Execution Engines und Stateless Process Groups

Stateless Execution Engine ist ein neues Beta-Feature. Einige Prozessoren 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 Prozessgruppe in isolierten Vorgängen geschedulet und ausgeführt.

Alle Prozessoren innerhalb der Gruppe schließen die Verarbeitung einer eingehenden FlowFile ab bevor neue FlowFiles verarbeitet werden. FlowFiles innerhalb der Prozessgruppe werden nicht persistiert.
Die gesamte Prozessgruppe verhält sich damit also wie ein einzelner Prozessor.

Wenn eine Prozessorgruppe "stateless" ist, dann sind alle enthaltenen Elemente “stateless”. Binden Sie nur die Flows in diese Prozessorgruppen 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:

  • Daten innerhalb der Prozessgruppe gehen verloren, wenn IGUASU abgeschaltet wird.

  • Das Senden von Daten an mehrere Ziele kann zu Komplikationen führen, wenn das Senden an eines der Ziele fehlschlägt. Ein Zurücksetzen der Transaktion und ein erneuter Versuch können dazu führen, dass doppelte Meldungen an die anderen Ziele gesendet werden.

Prozessor

Eines der Kernelemente von IGUASU sind die Prozessoren, über die unterschiedliche Funktionen zur Verfügung stehen. Die Konfiguration der Prozessoren, um individuelle oder allgemeinem Einstellungsmöglichkeiten anzupassen, erfolgt über den Konfigurationsbereich.

Prozessor-Klassen

Die Prozessoren 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

Prozessoren, 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

Prozessoren, 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 Prozessors zu ermöglichen, wird neben den farblichen Unterschieden zudem ein Icon im Prozessor angezeigt.

Prozessor-Icons

Dadurch wird eine zusätzliche Differenzierung der Prozessoren einer gleichen Klasse ermöglicht.

Auswahl der Prozessoren

Prozessoren 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 Prozessoren 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.

Prozessorauswahl

Im Auswahlfenster kann bereits bei der Erstellung ein passender Anzeigename angegeben werden.

Einige Prozessoren nutzen zudem Services zur Durchführung der Aufgaben. Weitere Angaben hierzu befinden sich im Abschnitt Ausgewählte Services.

Zustände der Prozessoren

Prozessoren können sich in unterschiedlichen Zuständen befinden. Der Zustand eines Prozessors ist am oberen rechten Rand am kleinen Icon ersichtlich.

Prozessor-Zustände

Wird ein neuer Prozessor 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 Prozessoren zunächst in einem gestoppten Zustand.
Durch Rechtsklick auf einen Prozessor 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.

Label-Beispiel

Funnel

Funnel können genutzt werden, um ausgehende Verbindungen zu empfangen.
Im Gegensatz zu anderen Elementen im Diagramm, z.B. den Prozessor, 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:

Funnel-Beispiel

Port

Ports werden als Schnittstelle genutzt, um Verbindungen zu Prozessgruppe 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 Prozessgruppe.
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 Prozessgruppe 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 Prozessor, 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 Prozessgruppe:

Port-Beispiel

Connection

Connections sind die Verbindungen zwischen Elementen. Diese werden insbesondere zwischen Prozessoren gezogen und bilden aus Sicht eines Prozessors die Eingänge und die Relations als Ausgänge. Neben Prozessoren werden aber auch noch Verbindungen zu Ports gezogen (und damit dann auch zu Prozessgruppen). 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 Prozessoren laufen, da sich die Einträge die hinein- und hinauslaufen sehr schnell ändern.

Hier kann die Queue auch komplett geleert werden.

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-Prozessor 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 Prozessor (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 wir die FlowFiles in der Queue liegen und damit auch an den folgenden Prozessor 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 Ansicht der ersten 100 Einträge aus, die man sich ansehen kann.