Zum Inhalt springen

Flows erstellen

Ein Flow ist ein grafischer Ablauf aus einzelnen Schritten. Er beschreibt, was passiert, wenn ein Vorgang startet: welche Daten erfasst, gelesen, verarbeitet und wohin sie geschrieben werden. Sie bauen Flows im Flow-Editor, den Sie über Prozesse → Flow-Definitionen öffnen.

Die Darstellung ist BPMN-basiert: Ein Flow läuft von einem Startpunkt über verbundene Schritte zu einem Endpunkt. Die Schritte ziehen Sie per Drag-and-drop aus einer Palette auf die Zeichenfläche und verbinden sie zu einem Ablauf.

Flow-Editor mit geöffneter Palette links und einem einfachen Flow auf der Zeichenfläche (Start → Erfassung → Datei-Ziel)

Die Palette enthält alle Schritt-Typen. Die folgende Übersicht gruppiert sie nach Aufgabe.

Gruppe Schritt-Typ Wofür
Rahmen Start, Ende Anfang und Abschluss des Ablaufs
Einstiege REST-Start Start über einen REST-Aufruf (synchron oder asynchron)
Einstiege Datei-Start Start, sobald in einem überwachten Ordner eine Datei erscheint
Einstiege Message-Start Start über eine eingehende Nachricht (MQTT/JMS)
Einstiege Zeitplan-Start Start zu festgelegten Zeiten oder in festen Intervallen innerhalb eines Zeitfensters
Einstiege OPC UA Start Start durch ein Ereignis an einer Maschine (OPC UA)
Erfassen Erfassung mobile Erfassungsmaske, die Werker am Gerät ausfüllen
Daten DB Quelle, DB Ziel aus einer Datenbank lesen bzw. in sie schreiben (grafischer Query-Builder)
Daten Datei-Ziel Datei schreiben (CSV oder Vorlage; lokal, SMB, FTP, SFTP)
Daten API-Aufruf externen Dienst aufrufen (REST/SOAP, Operationskatalog)
Daten REST-Antwort Antwort an den Aufrufer zurückgeben (nur in synchronen REST-Flows)
Senden E-Mail senden eine E-Mail versenden
Senden Nachricht senden eine Nachricht ausgeben (MQTT/JMS)
Senden Drucken ein Dokument an einen Netzwerkdrucker senden (IPP/RAW9100)
Verarbeiten Warten den Ablauf für eine feste Dauer pausieren (übersteht einen Neustart)
Verarbeiten Script eigene Logik in JavaScript (ohne Netz- und Dateizugriff)
Verarbeiten KI-Task Verarbeitung durch ein Sprachmodell mit Prompt und strukturierten Ausgabefeldern
Verarbeiten Report eine JasperReports-Vorlage mit Flow-Daten füllen und ein PDF erzeugen
Maschinen OPC UA Lesen, OPC UA Schreiben Werte an einer Maschine lesen oder schreiben
Verzweigen Parallel (UND), Exklusiv (ODER) Ablauf aufteilen und wieder zusammenführen (Gateways)
Schleifen Wiederholen, Wiederholen-Ende Schritte wiederholen — bis eine Bedingung erfüllt ist, eine feste Anzahl oder je Listeneintrag (der Körper läuft mindestens einmal)

Jeder Flow hat genau einen Einstieg. Von jedem Einstiegs-Typ ist höchstens einer pro Flow erlaubt. Der Einstieg bestimmt den Auslöser:

  • Der REST-Start kann synchron (der Aufrufer wartet auf eine Antwort) oder asynchron (der Aufrufer erhält nur eine Bestätigung) arbeiten.
  • Datei-Start und OPC UA Start sind dauerhaft laufende Auslöser: Sie beobachten fortlaufend einen Ordner bzw. eine Maschine.

Ohne einen Erfassungs-Einstieg entsteht ein Flow, den kein Werker am Gerät antippt — er läuft automatisch, sobald sein Auslöser feuert.

Der Schritt Erfassung ist der Teil, den die Werker am Gerät sehen und ausfüllen. Er verweist auf eine Mobile Page — die eigentliche Eingabemaske mit ihren Feldern (scannen, tippen, auswählen, Foto und mehr). Für die Auswahlfelder greifen Masken auf Auswahllisten zurück: globale Wertelisten, die Sie zentral unter Konfiguration pflegen.

Mit Gateways teilen Sie den Ablauf auf:

  • Parallel (UND) — alle ausgehenden Zweige laufen gleichzeitig.
  • Exklusiv (ODER) — genau ein Zweig läuft, je nach Bedingung.

Die Maske, die ein Erfassung-Schritt am Gerät anzeigt, bauen Sie im Masken-Editor. Sie öffnen ihn direkt aus dem Flow-Editor: einen Erfassung-Schritt einfügen und per Doppelklick (oder über das Zahnrad-Symbol am Schritt) öffnen. Der Flow muss dafür einmal gespeichert sein.

Der Editor ist dreigeteilt: links die Palette der Feldtypen und die Liste der Felder auf der Seite, in der Mitte die Maske in einem Telefon-Rahmen (ein Raster, in das Sie die Felder per Drag-and-drop ziehen), rechts die Eigenschaften des ausgewählten Feldes.

Masken-Editor mit Palette links, Maske im Telefon-Rahmen in der Mitte und Eigenschaften rechts

Feldtyp Wofür
Label fester Anzeigetext, keine Eingabe
Eingabefeld Text- oder Zahleneingabe (Format Text/Zahl/Dezimal/Datum/Zeit); optional mit Scan (Barcode, QR-Code, DataMatrix, NFC)
Checkbox einzelnes Ja/Nein-Feld
Bild ein festes Bild anzeigen
Foto-Eingabe ein Foto mit der Kamera aufnehmen
Unterschrift mit dem Finger oder Stift unterschreiben
Radio-Buttons genau eine Option aus einer Gruppe wählen
ComboBox Dropdown-Auswahl (feste Liste oder aus einer Datenquelle; optional mit Freitext)
ListBox sichtbare Auswahlliste (Einfach- oder Mehrfachauswahl)
Tabelle Daten aus einer Datenquelle anzeigen (schreibgeschützt)
WebView eine Webseite in die Maske einbetten

Einen Absenden-Button müssen Sie nicht anlegen — jede Maske erhält ihn automatisch; er lässt sich nicht entfernen.

Für die Auswahlfelder (ComboBox, ListBox, Radio-Buttons) greifen Masken auf Auswahllisten zurück: globale Wertelisten, die Sie zentral unter Konfiguration → Auswahllisten pflegen.

Konfiguration, Tab „Auswahllisten“ mit den globalen Wertelisten

  • Raster und Ausrichtung: Über Seite stellen Sie Spalten und Zeilen des Rasters ein und schalten zwischen Hoch- und Querformat um. Felder ziehen Sie in die Zellen und vergrößern sie über die Anfasser.
  • Scrollansicht: Standardmäßig verteilen sich die Zeilen gleichmäßig über den Bildschirm, sodass die Maske ohne Scrollen auf eine Bildschirmseite passt. Schalten Sie unter Seite die Scrollansicht ein, erhalten die Zeilen eine feste Zeilenhöhe (in Pixeln); die Maske scrollt dann, sobald sie höher als der Bildschirm wird. So bringen Sie auch lange Masken mit vielen Feldern unter.
  • Eigenschaften je Feld: Name, Beschriftung, Pflichtfeld, Standardwert und Darstellung. Unter Bedingungen blenden Sie ein Feld abhängig von anderen Eingaben ein oder aus, verhindern das Absenden oder erlauben es offline.
  • Scan-Reihenfolge: Im Modus Scan-Reihenfolge legen Sie fest, in welcher Reihenfolge der Fokus beim Scannen von Feld zu Feld springt — inklusive Sprüngen und Schleifen. So arbeiten sich Werker allein mit Scans durch die Maske, ohne das Display zu berühren.
  • KI-Erfassung (optional): Ist eine KI-Ressource eingerichtet, können Sie die KI-Erfassung aktivieren. Werker beschreiben den Vorgang dann per Sprache, und die KI füllt mehrere Felder auf einmal.
  • Datenquellen: Unten im Editor binden Sie Datenquellen (z. B. eine Datenbank-Abfrage) an Felder wie Tabelle oder ComboBox.

Wie die fertige Maske aus Sicht der Werker aussieht, beschreibt das Anwenderhandbuch unter Daten erfassen.

Schritte, die mit der Außenwelt sprechen — Datenbank, E-Mail, HTTP, Datei, Messaging, OPC UA, KI — beziehen ihre Verbindungsdaten nicht aus dem Flow selbst, sondern aus dem Bereich Ressourcen. Dort legen Sie eine Verbindung einmal an; im Flow-Schritt wählen Sie sie nur noch aus. Wie Sie Ressourcen einrichten, beschreibt das Kapitel Integrationen.

Viele Textfelder eines Schritts — Betreff und Inhalt einer E-Mail, der Inhalt einer Datei, der Body eines API-Aufrufs, ein KI-Prompt — enthalten Platzhalter, die bei der Ausführung durch Werte aus vorgelagerten Schritten ersetzt werden. Sie fügen Platzhalter über den Button + Platzhalter ein; der Dialog führt Sie von der Quelle (ein vorgelagerter Schritt, Datum/Uhrzeit oder Meta-Information) zum Feld und optional zu einem Format. Im Feld erscheint der Platzhalter als farbiger Chip; ein Klick auf den Chip öffnet ihn erneut zum Bearbeiten.

Ein paar Beispiele in der Roh-Schreibweise (sichtbar über den Schalter Roh-Text bearbeiten):

{{Erfassung|mobilePageData[componentName='Menge']/value}} Wert eines Maskenfelds
{{Lesen|rows[1]/produkt}} Spalte der ersten Zeile einer DB Quelle
{{Lesen|rowCount}} Anzahl gelesener Zeilen
{{Lesen|rows[1]/preis:#,##0.00}} mit Zahlenformat
{{datetime:dd.MM.yyyy HH:mm}} aktuelles Datum mit Format
{{meta|userId}} Benutzer des aktuellen Schritts

Neben Schritten und Datum/Uhrzeit gibt es als Quelle meta: Informationen zur laufenden Ausführung, die in jedem Schritt verfügbar sind — unabhängig davon, welche Schritte zuvor gelaufen sind.

Im Dialog Feld Bedeutung Beispiel
Benutzer userId Benutzer des aktuellen Schritts — bei automatischen Schritten „SYSTEM“ tom
Gerät deviceId Gerät des aktuellen Schritts — nur bei einer Erfassung befüllt PDA-07
Flow-ID flowId ID der Flow-Definition 42
Flow-Name flowName Name des Flows Wareneingang
Instanz-ID processExecutionId ID der laufenden Ausführung (Instanz), eine UUID 3f9c1a7e-…
Zeitstempel timestamp Zeitpunkt der Ausführung — ohne Format im Standardformat wie {{datetime}}, mit Format z. B. `{{meta timestamp:dd.MM.yyyy HH:mm}}`
{{meta|flowName}} Name des Flows
{{meta|timestamp:dd.MM.yyyy HH:mm}} Zeitpunkt mit Format
{{meta|processExecutionId}} ID der laufenden Ausführung

Liefert ein Schritt eine Liste — alle Zeilen einer DB Quelle, eine Listen-Ausgabe eines API-Aufrufs, ein Listenfeld eines KI-Tasks oder das aktuelle Element einer Schleife, sofern es selbst eine Liste ist — können Sie je Eintrag eine eigene Zeile gestalten, statt die Liste als Ganzes einzusetzen. Dazu dient der Wiederholungsblock: Er ist an eine Liste gebunden, trägt einen Namen und enthält eine Vorlage, die für jeden Eintrag wiederholt wird. Innerhalb der Vorlage sprechen Sie die Felder des aktuellen Eintrags über den Blocknamen an — genau wie einen Schritt.

So sieht ein Block im Roh-Text aus (Textfeld, z. B. Datei-Inhalt oder Betreff):

Folgende Positionen sind offen:
{{#Position in Lesen|rows}}{{Position|@nr}}. {{Position|produkt}} – bestellt {{Position|bestellt}}, verfügbar {{Position|verfuegbar}}
{{#leer}}keine offenen Positionen
{{/Position}}
  • {{#Position in Lesen|rows}} öffnet den Block: Position ist der frei gewählte Name, Lesen|rows die Liste (hier: alle Zeilen des Schritts „Lesen“).
  • Alles bis {{/Position}} wird je Eintrag einmal ausgegeben — exakt so, wie es im Block steht. Möchten Sie eine Zeile pro Eintrag, setzen Sie den Zeilenumbruch in den Block; für eine kommagetrennte Aufzählung lassen Sie ihn weg.
  • {{Position|produkt}} ist ein Feld des aktuellen Eintrags; Formate funktionieren wie überall ({{Position|preis:#,##0.00}}).
  • Sonderfelder je Eintrag: {{Position|@nr}} (laufende Nummer ab 1), {{Position|@anzahl}} (Anzahl aller Einträge), {{Position|@wert}} (der ganze Eintrag).
  • {{#leer}} leitet einen optionalen Alternativtext ein, der statt des Blocks erscheint, wenn die Liste leer ist. Ohne diesen Abschnitt entfällt der Block einfach — ein Fehler entsteht nicht.

Blöcke lassen sich verschachteln: Ein innerer Block kann ein Listenfeld des äußeren Eintrags durchlaufen (etwa die Positionen eines Auftrags) und dabei weiterhin auf die Felder des äußeren Eintrags zugreifen.

Im Platzhalter-Dialog müssen Sie die Schreibweise nicht kennen: Wählen Sie eine Liste als Feld (etwa Ganze Tabelle · alle Zeilen einer DB Quelle oder eine Listen-Ausgabe eines API-Aufrufs) und schalten Sie Als Wiederholungsblock einfügen ein. Sie vergeben den Namen, optional den Text für eine leere Liste und wählen die Felder des Eintrags aus; der Dialog fügt Blockanfang, eine Standardzeile und Blockende als Chips ein. Innerhalb des Blocks bietet der Dialog den Blocknamen als Quelle mit den Feldern des Eintrags an.

Im E-Mail-Editor wählen Sie zusätzlich die Darstellung: Absatz je Eintrag, Aufzählungspunkt je Eintrag oder Tabelle mit einer Kopfzeile aus den gewählten Spalten und einer Zeile je Eintrag. Der wiederholte Bereich ist farbig markiert und frei editierbar. Steht der Cursor in einem Block, öffnet der Toolbar-Button Wiederholung die Bearbeitung der Quelle und des Leer-Texts oder löst den Block auf (der Inhalt bleibt erhalten).

E-Mail-Editor: Signatur, Quellcode, Tabellen und Bilder

Abschnitt betitelt „E-Mail-Editor: Signatur, Quellcode, Tabellen und Bilder“

Der Editor des Tasks E-Mail senden bietet neben Platzhaltern und Wiederholungsblöcken weitere Werkzeuge:

  • Signatur — ein eigenes Feld wählt eine der Signaturen, die an der gewählten SMTP-Ressource hinterlegt sind (siehe Integrationen); ProcessFlow hängt sie beim Versand unter den Text. Wechseln Sie die Ressource, wird eine bereits gewählte Signatur zurückgesetzt.
  • Quellcode-Ansicht — der Toolbar-Button Quellcode schaltet auf das rohe HTML um, frei editierbar. Schalten Sie ohne Änderung zurück, bleibt der gespeicherte Inhalt byte-gleich; ändern Sie den Quellcode, werden <script>, Ereignis-Attribute (onclick u. Ä.), javascript:-Verweise sowie <svg>- und <math>-Blöcke beim Übernehmen entfernt (eine Hinweiszeile unter dem Quellcode nennt, was entfernt wurde). Eine Bearbeitung im visuellen Modus löst div-Container, <font> und <center> auf.
  • Tabellen-Menü — fügt eine Tabelle mit Standard-Rahmen ein und bietet innerhalb einer Tabelle Zeilen/Spalten hinzufügen oder löschen sowie die Kopfzeile umschalten.
  • Bilder — der Toolbar-Button Bild lädt eine PNG-, JPEG-, GIF- oder WebP-Datei hoch und bettet sie direkt in den Text ein (nicht in der Anhangsliste des Tasks). Ein Klick auf das eingefügte Bild öffnet ein Menü direkt am Bild: Breite und Höhe in Pixeln (mit Seitenverhältnis beibehalten rechnet der Editor den jeweils anderen Wert mit), Originalgröße, der Modus „Eigene Zeile“ (Bild als eigener Block, Standard) oder „Im Text“ (Bild fließt im Absatz mit dem Text) sowie, nur im Modus „Eigene Zeile“, die Ausrichtung links/zentriert/rechts. Ein getippter Wert wird mit Enter oder beim Verlassen des Felds übernommen; ein leeres Feld bedeutet „Auto“, Werte unter 1 werden verworfen. Escape verwirft die Eingabe im Feld – im Dialog „E-Mail gestalten“ schließt Escape allerdings zugleich den gesamten Dialog, verwenden Sie dort besser Enter oder Tab. Alternativ ziehen Sie das Bild an den Griffen in den Ecken auf die gewünschte Größe. Rahmen und feste Abstände (z. B. border, margin), die ein Bild aus der Quellcode-Ansicht oder einem KI-Vorschlag mitbringt, bleiben erhalten; Ausrichtung und Größe bestimmt weiterhin das Bildmenü, bei zentrierten oder rechtsbündigen Bildern ersetzt die Ausrichtung dabei die seitlichen Abstände. Bei Breiten über 600 px weist der Editor darauf hin, dass viele E-Mail-Clients Inhalte auf etwa diese Breite begrenzen. Je Bild sind maximal 10 MB erlaubt (PNG, JPEG, GIF, WebP); eingebettete Bilder zählen zusätzlich auf das 25-MB-Gesamtlimit der E-Mail.

Beim Versand erzeugt ProcessFlow aus dem Text ein vollständiges HTML-Dokument (XHTML 1.0 Transitional mit Doctype, Kopf und Betreff als Titel), damit E-Mail-Clients den Inhalt einheitlich darstellen. Unter „Ausführungen“ sehen Sie zu jedem Versand genau dieses gesendete Dokument inklusive angehängter Signatur; eingebettete Bilder erscheinen in den Anhangs-Informationen mit dem Zusatz „eingebettet“.

Der Editor prüft den Flow fortlaufend. Fehlerhafte Stellen werden direkt auf der Zeichenfläche markiert (roter Rahmen am Schritt); ein Tooltip beim Draufzeigen erklärt jeweils, was nicht stimmt. Diese Prüfung erkennt vor allem inhaltliche und strukturelle Fehler:

  • ins Leere zeigende Platzhalter-Referenzen (ein {{…}}, das auf keinen vorhandenen Schritt oder kein Feld verweist),
  • unvollständige Bedingungen oder Typkonflikte an einem Exklusiv-Gateway (etwa ein Text, der mit einer Zahl verglichen wird),
  • Verstöße gegen die Regeln synchroner REST-Flows (etwa eine fehlende REST-Antwort),
  • fehlerhafte Wiederholungsblöcke,
  • strukturelle Fehler im Ablauf (z. B. mehrere Einstiege oder falsch zusammengeführte Gateways).

So sehen Sie diese Probleme, während Sie bauen, statt erst bei der Freigabe.

Zeichenfläche mit einem rot markierten Schritt und geöffnetem Validierungs-Tooltip, der den Fehler erklärt

Sie müssen einen Flow zum Testen nicht freigeben. Der Editor bringt ein Test-Overlay mit, das direkt über der Zeichenfläche läuft:

  1. Starten Sie den Test im Editor.
  2. Je nach Einstieg füllen Sie die Start-Maske wie am Gerät aus oder nutzen ein Testformular für den REST-, Datei-, Message- oder Zeitplan-Start.
  3. Der Test zeigt die Live-Ausführung als Statusgraph mit den Schritt-Details — welcher Schritt gerade läuft und mit welchen Daten.

Den Editor verlassen Sie dafür nicht.

Ein Flow durchläuft Versionen mit klaren Status:

In Arbeit → Freigegeben → Archiviert

  • Sie arbeiten immer an einer Version In Arbeit.
  • Mit der Freigabe wird sie zur aktiven Version. Nur freigegebene Flows erscheinen auf den Geräten.
  • Bei einem bereits freigegebenen oder veralteten Flow öffnet die Schaltfläche Neue Version bearbeiten die vorhandene Arbeitsversion oder legt — nach einem Kommentar-Dialog — eine neue an, genau wie der Stift in der Flow-Liste. Ein Änderungskommentar ist beim Anlegen einer Arbeitsversion Pflicht. Die freigegebene Version bleibt aktiv, bis Sie die neue freigeben.
  • Speichern öffnet den Dialog „Flow speichern“ mit dem Änderungskommentar der Version — vorbelegt, jederzeit anpassbar, darf leer bleiben. „Testen“ und der Wechsel in den Mobile-Page-Editor speichern dagegen ohne Rückfrage. In den Flow-Kopfdaten steht der Kommentar nur noch zur Ansicht.
  • Die Freigabe verlangt den Änderungskommentar als Pflichtfeld und zeigt darunter die Änderungen gegenüber der zuletzt freigegebenen Version. Ohne Kommentar ist keine Freigabe möglich. Nach der Freigabe ist der Kommentar unveränderlich.
  • Über die Versionshistorie sehen Sie alle früheren Stände: den Kommentar, „Erstellt am … von …“ bzw. „Freigegeben am … von …“ sowie die Schaltfläche Änderungen. Sie öffnet die automatisch ermittelte Übersicht gegenüber der direkten Vorgängerversion, gruppiert nach Flow-Eigenschaften, Knoten, Verbindungen, Notizen, Mobile Pages, Seitenelementen und Anhängen; bei geänderten Elementen sehen Sie die betroffenen Eigenschaften.

Unabhängig von der Versionierung gibt es die Sperre. Wird eine Flow-Definition ungültig, kann das System sie sperren (Zustand Gesperrt), damit sie keinen Schaden anrichtet. Nach Behebung der Ursache entsperren Sie sie wieder (Entsperrt). Sperre und Version sind zwei getrennte Dinge: Ein Flow kann freigegeben und trotzdem gesperrt sein.

  • Export / Import als .pf-Datei — einen Flow aus einem System heraus- und in ein anderes hineinladen, etwa von einer Test- in eine Produktivumgebung. Ressourcen werden beim Import per Name + Typ aufgelöst; für jede nicht gefundene Referenz wählen Sie im Import-Dialog eine vorhandene Ressource desselben Typs aus oder legen über „Neue Ressource anlegen…“ eine neue an. Erst wenn alle Referenzen zugeordnet sind, ist „Importieren“ aktiv.
  • Duplizieren — einen bestehenden Flow als Ausgangspunkt für einen neuen kopieren.
  • Vorlagen — von vorgefertigten Bauplänen ausgehen, statt bei null zu beginnen.

Wenn eine KI-Ressource konfiguriert ist, unterstützt Sie ProcessFlow beim Bauen von Flows. Ist keine KI-Ressource eingerichtet, sind diese Funktionen ausgeblendet.

  • Mit KI erstellen — auf der Seite Flow-Definitionen: Aus einer Beschreibung erzeugt die KI einen Flow und legt ihn als Arbeitsversion an.
  • KI-Assistent im Editor — mit den Modi bearbeiten und Validierungsfehler beheben. Der Vorschlag wird erst nach Ihrer Bestätigung übernommen.
  • Rückfragen zu Ressourcen — Braucht ein vorgeschlagener Schritt eine Ressource (E-Mail, Datenbank, …), fragt der Assistent nach und zeigt die Ressourcen-Auswahl mit den vorhandenen Ressourcen des Typs und dem Eintrag „Neue Ressource anlegen…“. Der Eintrag öffnet die normale Ressourcen-Maske; Zugangsdaten geben Sie nur dort ein, nie im Chat. Die gewählte oder neu angelegte Ressource verwendet der Assistent direkt weiter.
  • Regex-Assistent — hilft bei regulären Ausdrücken, etwa für Prüfregeln in Feldern.
  • SQL-Assistent — unterstützt im grafischen Query-Builder der Datenbank-Schritte beim Formulieren von Abfragen.

Anbieter, Modell, Budget und eine Nutzungsübersicht stellen Sie unter Konfiguration → KI-Assistent ein.

Konfiguration, Tab „KI-Assistent“ mit Anbieter, Modell, API-Schlüssel und Budget

Konfiguration, Tab „KI-Assistent“: Nutzungsübersicht mit dem Verbrauch je Funktion

Konfiguration, Tab „KI-Assistent“: Datenschutz-Einstellungen des KI-Assistenten

KI-Assistent im Editor mit einem Änderungsvorschlag und der Schaltfläche zum Übernehmen