Flow Variablen

In Flow Variablen können Sie Werte hinterlegen, die Sie in mehreren Steps benötigen. Man spricht dann häufig von auslagern. Häufig verwendet man Variablen für Zugangsdaten wie URLs, die von mehreren Steps verwendet werden (z.B. URLDownload).

Es gibt folgende Typen von Variablen:

  • Textvariablen
  • Zahlenvariablen
  • Verbindungs-Variablen
  • Data Store-Auswahl
  • Datei Uploads
  • Referenzvariablen
  • Output Variablen

Überschreiben von Projektvariablen

Falls sie auf Projekt-Ebene Variablen definiert haben, ist es auch möglich diese im Flow zu überschreiben. Benennen Sie die Variable dazu genau wie die Projektvariable. Siehe auch hier.

Text-Variablen

Text-Variablen können über Variable hinzufügen / Neue Text-Variable erstellt werden.

In der Regel können damit einfache Variablen vom Typ STRING (Zeichenkette) erstellt werden. Optional kann auch eine Beschreibung hinzugefügt werden, die angezeigt wird, wenn man mit der Maus über die Variable fährt.

EingabetypDarstellungBeschreibung
Einzeiliges Textfeldeinfaches Texteingabefeld
Mehrzeiliges TextfeldEingabefeld für mehrere Zeilen (sog. Textarea)
Dropdown AuswahlfeldDie Flow-Variable wird aus Auswahl (Dropdown) oder Combo-Box (Auswahl mit Eingabemöglichkeit) dargestellt.Nach dem Anlegen können die Auswahloptionen eingegeben werden.

Dropdowns vereinfachen Fälle, bei denen man Variablen häufig ändern muss oder anderen Nutzern die Benutzung von Flows vereinfachen möchte.
Passworteinfaches Textfeld für die Eingabe von sensitiven Informationen wie Passwörter oder API-Token. Der Wert wird maskiert dargestellt.
Durch das Auge-Symbole kann das Passwort bei Bedarf angezeigt werden.
LimitSpezielles Eingabefeld für ZahlenwerteDieses spezielle Eingabefeld akzeptiert nur die Eingabe von Zahlenwerten, die zur Limitierung bestimmter Prozesse verwendet werden können.

Dies wird besonders bei der Entwicklung von Flows benötigt, die von andere Flows aufgerufen werden (siehe Andere Flows aufrufen)

Datastore-Auswahl

Der Datentyp Datastore-Auswahl erlaubt es Flow-Variablen anzulegen, die als Dropdown-Box mit Datastores angezeigt werden.

Das ist vor allem für fortgeschrittene Nutzer oder Entwickler hilfreich, die mit dem Flow-Executing-Step oder Flow-Trigger arbeiten, um in einem Flow andere Flows aufzurufen. Wenn man einen Flow hat, der Daten aus einem Datastore lädt und der Nutzer im aufrufenden Flow diesen Datastore durch ein Dropdown-Feld auswählen soll, dann bietet sich diese Datastore-Auswahl an.

Die Flow-Variable wird dann als Selektbox dargestellt und vereinfacht so die Auswahl von Datastores. Es ist auch möglich eine sog. Combobox darzustellen, bei der man auch einen Datastore-Namen eingeben kann, der noch nicht existiert. Das ist z.B. sinnvoll, wenn eine DatastoreWriter einen neuen Datastore erstellen soll oder einen vorhandenen nutzen soll.

Hinweis

Man muss Flow-Variablen vom Typ Datastore-Auswahl verweden, wenn man diese Flow-Variable mit einem Step verknüpfen will, welcher als Input einen DATASTORE verlangt. Das betrifft in der Regel die Steps SearchDatastore und DatastoreWriter. Flow-Variablen vom Typ STRING werden dort nicht mehr angezeigt.

Bestehende Flows sind davon nicht betroffen und funktionieren weiterhin, auch wenn das in der Vergangenheit anders verknüpft wurde.

Verbindungsvariablen

Damit können Sie ab jetzt auch Accounts, die Sie unter Mein Konto / Meine Verbindungen erreichen, als Variable anlegen und an Steps übergeben. Vorteil: Sie haben eine zentrale Stelle im Flow, wenn mehrere Steps den gleichen Account verwenden.

Datei Upload

Optional kann man auch Dateien hochladen und als Variable anlegen. Das eignet sich besonders für Tests bei der Flow Erstellung.

Hinweis

Hochgeladene Dateien werden nicht dauerhaft gespeichert und regelmäßig gelöscht. Verwenden Sie den Dateiupload nur für kurzzeitige Tests. Die eigentlichen Daten sollten immer per Step aus externen Quellen (HTTP, FTP, usw.) geholt werden.

Referenzvariablen

Referenzvariablen sind relevant, wenn Sie das Flow-in-Flow Feature benutzen, mit dem Sie einen Flow aus anderen Flows aufrufen und Variablen übergeben können.

Datentypen

DatentypBeschreibungBeispiele
SPREADSHEETEin SPREADSHEET, das vom aufrufenden Flow übergeben werden kann.

Optional kann ein Schema angegeben werden, dem das übergebene SPREADSHEET entsprechen muss. Wird ein Schema gewählt, dann wird dem Aufrufer-Step ein Configure Button angezeigt, womit die Spalten in dieses Schema gemappt werden kann.
Das ist hilfreich um sicher zu stellen, dass das übergebene SPREADSHEET bestimmte Spalten beinhaltet.
SPREADSHEETLISTanalog zu SPREADSHEET, aber als Liste
Datum / ZeitauswahlBei Datumsvariablen wird dem Aufrufer ein kleines Kalender- und Zeitauswahl Popup angezeigt. Datumsvariablen können dann mit Steps verknüpft werden, die eine Datumsvariable erfordern. Das ist meistens bei Datumsfilter mit startDate und endDate der Fall.
COUNTERZählvariablen können verwendet werden, um in Freemarker-Skripten Dinge zu zählen. Es reicht vom einfachen Hochzählen, bis hin zum Zählen bestimmter IDs oder Wörter. Zählvariablen werden mit 0 initialisiert.${counter.inc()}
Ergebnis: Zählvariable counter wird um 1 hochgezählt

${counter.inc(3)}
Ergebnis: counter wird um 3 erhöht

${counter.inc('word1')}
Ergebnis: counter für die Zeichenkette word1 wird um 1 hochgezählt. Die String-Länge des Parameters darf max. 64 Zeichen betragen und es dürfen max. 1000 verschiedene Zeichenketten gezählt werden.

${counter.inc('word1', 3)}
Ergebnis: counter für die Zeichenkette word1 wird um 3 hochgezählt.

${counter!}
Ergebnis: Ausgabe des aktuellen Wertes von counter.

${counter.get()}
Ergebnis: Aktueller Wert von counter als Zahl (long)

${counter.get('word1')}
Ergebnis: Aktueller Wert des Zählers für word1

${counter.contains('word1')?string
Ergebnis: gibt true aus, wenn für die Zeichenkette word1 schon ein Zählwert existiert. Ansonsten false.
Hinweis: In einer IF/ELSE Bedingung kann man das ?string weglassen, um nur den boolschen Wert zu verwenden: z.B.
<#if counter.contains('word1')>Ja, word1 ist enthalten<#else>word1 ist nicht enthalten</#if>

${counter.dec()}
Ergebnis: counter wird um 1 runter gezählt.

${counter.size()}
Ergebnis: gibt die Anzahl der hinzugefügten Zählwerte (Zeichenketten) + 1 (für den Standardzähler) zurück.
Beispiel:
${counter.inc('word1', 3)}
${counter.inc('word2')}
${counter.inc('word3')}
${counter.size()}
Ergebnis: 4 ('word1', 'word2', 'word3' + Standardzähler)
FILELISTWenn der Aufrufer eine Liste von Dateien übergeben soll, dann können Sie diesen Datentyp wählen.
OBJECTWenn ihr Flow mit verschiedenen Datentypen umgehen kann und der Aufrufer beliebige Dinge übergeben können soll, dann bietet sich OBJECT an. In diesem Fall müssen sie sich als Flow-Ersteller darum kümmern, den Datentyp entsprechend auszuwerten.

Arbeiten mit Zählvariablen

Zählvariablen werden meistens in Freemarker Scripten verwendet. D.h. meistens im Rahmen des Steps Mapper SpreadsheetMapper oder TextHTMLWriter.

1. Dazu legen Sie zuerst eine Zählvariable (COUNTER) an.

2. Gehen Sie dann in den Mapper, und drücken dort im Wert-Feld auf den Plus-Button.

3. Klicken Sie dann auf "Outputs vorheriger Steps" und wählen Sie den Counter aus.

Daraufhin wird der Counter eingefügt.

${meta.counter!}

.meta Prefix

Hinweis: Der Prefix "meta." ist im Mapper notwendig, um auf Flow-Variablen oder Step-Outputs zuzugreifen, damit es keine Namenskollision mit gleich-benannten Spalten gibt. Im TextHTMLWriter ist das meta.-Prefix hingegen nicht notwendig.

Nutzen Sie immer die Plus-Buttons, um Variablen einzufügen, da solche Eigenheiten damit berücksichtigt werden.

Diesen Ausdruck kann man dann abändern, um die eigentliche Zähllogik zu implementieren:

${meta.counter.inc()!}
 
oder
 
${meta.counter.inc("wort1")!}
${meta.counter.inc("wort2")!}
 
oder 
 
${meta.counter.inc(spalte1+"")!} (hier wird der Inhalt aus spalte1 als Counter-Name verwendet. Siehe nächster Hinweis. )

Hinweis bei Verwendung von Spalten als Counter-Name

Wenn Sie eine Spalte Counter-Name verwenden (wie im letzten Beispiel), müssen Sie sicherstellen, dass der Parameter ein String ist. :::h da::: tip en von + "" wird sichergestellt, dass aus der Spalte auch ein String gemacht wird.

Anwendungsbeispiel

Ein anschauliches Beispiel für Zählvariablen wird in diesem Cookbookopen in new window beschrieben.

Konfiguration: Optionale- und Pflicht-Variablen und PUBLIC / PRIVATE Variablen

Es können weitere Aspekte von Flow-Variablen konfiguriert werden:

  • Optionalität (steuert, ob es sich um ein Pflichtfeld oder ein optionales Feld handelt)
  • Sichtbarkeit (steuert, ob die Variable auch vo::: tip (aufrufenden Flows) gesehen werden kann (public), oder nur innerhalb des Flows (private))

Wann brauche ich das?

Die Optionalität und Sichtbarkeit spielen für eigenständige Flows keine Rolle. Ein sinnvoller Einsatz beginnt erst, sobald man mit Funktionen wie Flow-in-Flow - FlowExecutingStep oder FlowTriggeropen in new window arbeitet. Beide Funktionen erlauben es, aus einem Flow heraus andere Flows aufzurufen. Erst hier werden Aspekte wie Optionalität oder Sichbarkeit relevant.

Optionalität

OptionalitätBeschreibung
optionales Feld (Standard)
  • Die Variable muss vom aufrufenden Flow nicht zwingend gefüllt werden, sondern kann auch leer gelassen werden.
  • Wenn die Variable mit einem Standardwert belegt ist, dann greift dieser bei nicht ausgefüllter Variable des Aufrufers.
Pflichtfeld
  • Die Variable muss zwingend vom Aufrufer ausgefüllt werden.
  • Wenn der Aufrufer keinen Wert übergibt, dann wird der Flow mit einer Fehlermeldung fehlschlagen, dass das Pflichtfeld nicht gesetzt ist.

Sichtbarkeit

SichtbarkeitBeschreibung
PUBLIC (Standard)
  • Die Variable kann auch vom Aufrufer gesehen und gesetzt werden.
PRIVATE
  • Die Variable ist nur für den eigenen Flow sichtbar.
  • Aufrufende Flows sehen diese Variable nicht.
  • Sind vergleichbar mit privaten Variablen in Programmiersprachen und können als Hilfsvariablen genutzt werden.

    Z.B. wenn man eine Variable limit in mehreren Steps braucht, und man gern eine zentrale Stelle braucht, um diesen Wert zu pflegen, aber man vermeiden möchte, dass ein aufrufender Flow diese Variable überschreibt oder überhaupt sieht.