13.3 Der Workflow-Builder

Allgemeine Einführung

👌
Mit dem Workflow-Builder können in VIA Arbeitsabläufe (Workflows) konfiguriert werden, die Aktionen (Actions) ausführen, wann immer ein Ereignis (Event) auftritt.
Actions (Ausgeführte Aktion)

Variable/SQL-Select automatic ID: 0

Selektieren Sie einen Wert aus der Datenbank.
Die Werte vorheriger Blöcke können als Variablen im Query mit “[variable]” verwendet werden.

Parameter:

  • Select-Query: query

    Der Query, der ausgeführt werden soll. Es können Variablen mit [Variable] verwendet werden.

Output:

  • Alle Werte des ersten selektierten Datensatzes

If, Then, Else automatic ID: 1

Vergleicht zwei Werte über einen Operator miteinander und führt einen anderen Workflow aus, je nachdem wie das Ergebnis ist (Wahr/Falsch).

Parameter:

  • If-Wert-1: value_1
    Der erste Wert, der mit dem zweiten verglichen werden soll. Es können Variablen mit [Variable] verwendet werden.
  • If-Wert-2: value_2

    Der zweite Wert, der mit dem ersten verglichen werden soll. Es können Variablen mit [Variable] verwendet werden.
  • Operator (IF): operator

    Der Operator, der verwendet werden soll, um Wert-1 mit Wert-2 zu vergleichen.
    • 0 | value_1 = value_2
    • 1 | value_1 < value_2
    • 2 | value_1 > value_2
    • 3 | value_1 != value_2
    • 4 | value_1 CONTAINS value_2
    • 5 | value_1 CONTAINS NOT value_2
  • Aktion, wenn Ergebnis Wahr (THEN): do_if_true

    Aktion, wenn Ergebnis False (ELSE): do_if_false
    • 0 | nichts machen
    • 1 | anderen Workflow ausführen
    • 2 | nächste Action ausführen
    • 3 | nächste Action ausführen, danach anderen Workflow ausführen
    • 4 | anderen Workflow ausführen, danach nächste Action ausführen
  • Workflow, wenn Wahr: workflow_identifier_true
    Ein anderer Workflow, der dann ausgeführt werden soll, wenn die Bedingung
    Wahr/True zurückgibt.
    → nur bei
    do_if_true = 1 | 3 | 4
  • Workflow, wenn Falsch: workflow_identifier_false

    Ein anderer Workflow, der dann ausgeführt werden soll, wenn die Bedingung Falsch/False zurückgibt.
    → nur bei
    do_if_false = 1 | 3 | 4

Send Mail automatic ID: 2

Sendet eine E-Mail an ein/e oder mehrere Empfänger*innen

Parameter:

  • Receiver: to

    Der oder die E-Mail-Adressen, an die die Nachricht gesendet werden soll. Es können Variablen mit [Variable] verwendet werden.

    Empfänger müssen folgendes Format haben
    Entweder:
    mail@domain.de

    Oder: mail@domain.de (Vorname Nachname)


    Es können mehrere Empfänger mit Semikolon ; separiert übergeben werden:

    mail1@domain.de; mail2@domain.de; ...

    mail1@domain.de (Name 1); mail2@domain.de (Name 2); ...
  • Subject: subject
    Der Betreff der Nachricht. Es können Variablen mit [Variable] verwendet werden.
  • Message: message
    Die Nachricht der E-Mail. Es können Variablen mit [Variable] verwendet werden.

Write to DB/SQL-Execute automatic ID: 3

Schreibt Daten in die Datenbank oder ruft Datenbank-Prozeduren auf

Parameter:

  • Execute-Query: query
    Der Query, der ausgeführt werden soll. Es können Variablen mit [Variable] verwendet werden.

Web-Request automatic ID: 4

Ruft eine URL auf und übergibt Ihr spezifische Daten.
Dient dem Aufrufen von Webhooks anderer Programme.

Parameter:

  • URL: url

    Die Url, die der Webhook aufrufen soll. Es können Variablen mit [Variable] verwendet werden. Es können Variablen mit [Variable] verwendet werden.
  • Antwort als Variablen bereitstellen: answer_as_var
    Stellt die vom Webrequest gelieferte Antwort wieder als Variable zur Verfügung.
    Wenn die Antwort im JSON-Format kommt, wird
  • Content-Type: content_type
    Der HTTP-Content-Type, der im Request übermittelt wird. I. d. R. ist es
    application/json oder text/plain
  • Body: body
    Der Text, der im Body der Funktion gesendet werden soll. Es können Variablen mit [Variable] verwendet werden.
  • Method: method
    Die HTTP-Methode zum Ausführen des Webhooks. (GET, PUT, POST, DELETE)

Output:

Die Antwort, die der Web-Request sendet.
Antwortet der Web-Request mit einem JSON-Objekt, können Sie die Action
Variable/SQL-Select, Write to DB/SQL-Execute
oder
Javascript nutzen, um das JSON zu durchlaufen, bzw. einzelne Daten zu extrahieren.
MySQL bietet umfangreiche Möglichkeiten zum Verwenden von JSON in Queries
https://dev.mysql.com/doc/refman/8.0/en/json.html

Workflow automatic ID: 7

Startet einen anderen Workflow auch ohne Ereignis

Parameter:

  • Workflow: workflow_identifier
    Ein anderer Workflow, der gestartet werden soll

Mitteilung automatic ID: 8

Zeigt ein Mitteilungs-Fenster an.

Parameter:

  • Message: message
    Die Nachricht, die angezeigt werden soll. Ist sinnvoll, vor allem in Verbindung mit einer Wenn-Dann-Sonst-Action

Toast-Benachrichtigung automatic ID: 9

Zeigt eine Toast-Benachrichtigung unten links an

Parameter:

  • Message: message
    Die Nachricht, die angezeigt werden soll. Ist sinnvoll, vor allem in Verbindung mit einer Wenn-Dann-Sonst-Action
  • Style: stlye
    • 0 okay (grün)
    • 1 error (rot)
    • 2 warning (gelb)
    • 3 info (grau)

Manuelle Entscheidung manually ID: 10

Zeigt dem/der Nutzer*in einen Auswahl-Dialog an. Abhängig von der Entscheidung wird dann ein anderer Workflow ausgeführt.

Parameter:

  • Frage: message

    Die Frage, die zur Entscheidung gestellt wird
  • Entscheidungen: answers

    [
    {
    value: “ja”,
    caption:”Ja, ich will”,
    style: 0 (0=normal, 1=grün, 2=rot),
    workflow: 1
    }
    ]

Output:

Die value Eigenschaft der Nutzer-Entscheidung.

For Each automatic ID: 15

Führt einen anderen Workflow aus für jeden Eintrag, den ein SQL-Select-Query zurückgibt.
Die einzelnen Datensätze werden dabei unabhängig und nacheinander an den nachfolgenden Workflow übergeben.
Dadurch können größere Datenmengen gleichzeitig bearbeitet werden.

Parameter:

  • Select-Query: query

    Der Query, der ausgeführt werden soll. Es können Variablen mit [Variable] verwendet werden.

    Die selektierten Datensätze werden einzeln durchlaufen und an den gewählten Workflow übergeben. Dort können die Werte aus dem Datensatz mit den Spalten-Namen als Variablen verwendet werden.
  • Workflow: workflow_identifier
    Der Workflow der mit dem aktuellen Datensatz aufgerufen wird. Wurden mehrere Datensätze selektiert, wird der Workflow für jeden Datensatz ausgeführt.

Select Case automatic ID: 13

Führt andere Workflows aus, je nachdem, welchen Wert eine Variable hat.
Ist eine ausführlichere Implementierung der Wenn-Dann-Sonst-Action.

Parameter:

  • If-Wert-1: value_1
    Der erste Wert, der mit dem zweiten verglichen werden soll. Es können Variablen mit [Variable] verwendet werden.
  • If-Wert-2: value_2

    Der zweite Wert, der mit dem ersten verglichen werden soll. Es können Variablen mit [Variable] verwendet werden.
  • Operator (IF): operator

    Der Operator, der verwendet werden soll, um Wert-1 mit Wert-2 zu vergleichen.
    • 0 | value_1 = value_2
    • 1 | value_1 < value_2
    • 2 | value_1 > value_2
    • 3 | value_1 != value_2
    • 4 | value_1 CONTAINS value_2
    • 5 | value_1 CONTAINS NOT value_2
  • Workflow: workflow

    Der Workflow, der bei Erfüllen der Bedingung ausgeführt werden soll
  • Datenstruktur:

    [
    {
    value_1,
    operator,
    value_2,
    workflow
    },
    ]

Manueller Input automatic ID: 17

Gibt dem Nutzer über einen Dialog eine Eingabeaufforderung und stellt deren Ergebnis nachfolgenden Actions als Variablen bereit.

Parameter:

  • Frage
  • Input-Type
    • 0 | Textbox
    • 1 | Textareal
    • 2 | Auswahlbox

Tabelle / SQL in Tabellenform automatic ID: 18

Selektiert Daten aus der Datenbank mit einem SQL-Statement und stellt dieses in verschiedenen Ausgabeformaten bereit.

Parameter:

  • Select-Query: query
    Der Query, der ausgeführt werden soll. Es können Variablen mit [Variable] verwendet werden.
  • Format: format
    • 0 | html
    • 1 | csv
    • 2 | json
    • 3 | xml
    • 4 | xls
  • Direkt herunter laden: directDownload
    • true / false
      → wenn true, dann wird die Tabelle als Datei im ausgewählten Format herunter geladen.
      → wenn false, wird die Tabelle nur als Variable bereit gestellt.

Basis-Daten automatic ID: 19

BILD

Stellt grundsätzliche Variablen für nachfolgende Action bereit. Die bereitgestellten Daten hängen von dem jeweiligen Event ab.


Verfügbare Variablen
  • id → die ID des Objekts an dem der Workflow ausgefüllt wird
  • workflow_id → die ID des Workflows
  • workflow_name → der Name des Workflows
  • workflow_description → Beschreibung des Workflows
  • [Identifier_der_Action] → Berechnungs-Ergebnis der Action
  • [user_id] → ID der Person, die den Workflow auslöst. Wird der Workflow nicht von einer bestimmten Person ausgelöst, ist die ID NULL
  • [user_name] → Nutzername der Person, die den Workflow auslöst. Wird der Workflow nicht von einer bestimmten Person ausgelöst, ist die ID NULL
  • [user_email] → E-Mail der Person, die den Workflow auslöst. Wird der Workflow nicht von einer bestimmten Person ausgelöst, ist die ID NULL
  • Außerdem werden alle Daten aus den jeweiligen Actions als Variablen für alle nachfolgenden Actions bereitgestellt.
Was sind interaktive Actions?

interactive Actions
Actions erfordern oder ermöglichen eine Nutzer-Interaktion. Sie stoppen die Ausführung der Workflow-Kette und setzen sie erst fort, wenn die Nutzer-Interaktion stattgefunden hat.

automatische Actions
Actions werden im Hintergrund ausgeführt und können nicht durch den Nutzer unterbrochen werden. Workflows, die nur aus
automatic Actions bestehen, sind sehr schnell und können große Datenmengen performant verarbeiten.

Events (Ereignisse)

Events sind Ereignisse in VIA, die die Ausführung eines Workflows auslösen können.

Schüler wurde hinzugefügt | ID: 11
Schüler wurde bearbeitet | ID: 12
Schüler wurde gelöscht | ID: 13
Schüler manuell ausgelöst | ID: 14

Schüler Passfoto geändert | ID: 15

Antrag wurde hinzugefügt | ID: 21
Antrag wurde hinzugefügt: Umzug | ID: 28
Antrag wurde hinzugefügt: Hochstufen | ID: 29
Antrag wurde bearbeitet | ID: 22
Antrag wurde gelöscht | ID: 23
Antrag manuell ausgelöst | ID: 24
Antrag wurde beendet | ID: 25
Antrag wurde beendet: Umzug | ID: 26
Antrag wurde beendet: Hochstufen im Schuljahr | ID: 27

FSV Fahrtanforderung wurde hinzugefügt | ID: 31
FSV Fahrtanforderung wurde bearbeitet | ID: 32
FSV Fahrtanforderung wurde gelöscht | ID: 33

Tour wurde hinzugefügt | ID: 41
Tour wurde bearbeitet | ID: 42
Tour wurde gelöscht | ID: 43
Tour manuell ausgelöst | ID: 44

Umlauf wurde hinzugefügt | ID: 51
Umlauf wurde bearbeitet | ID: 52
Umlauf wurde geteilt | ID: 54
Umlauf wurde gelöscht | ID: 53

Schule wurde hinzugefügt | ID: 61
Schule wurde bearbeitet | ID: 62
Schule wurde gelöscht | ID: 63
Schule manuell ausgelöst | ID: 64

Haltestelle wurde hinzugefügt | ID: 71
Haltestelle wurde bearbeitet | ID: 72
Haltestelle wurde gelöscht | ID: 73

Unternehmen wurde hinzugefügt | ID: 81
Unternehmen wurde bearbeitet | ID: 82
Unternehmen wurde gelöscht | ID: 83
Unternehmen manuell ausgelöst | ID: 84

Fahrzeug wurde hinzugefügt | ID: 91
Fahrzeug wurde bearbeitet | ID: 92
Fahrzeug wurde gelöscht | ID: 93

Personal wurde hinzugefügt | ID: 101
Personal wurde bearbeitet | ID: 102
Personal wurde gelöscht | ID: 103

// Begleitperson wurde hinzugefügt | ID: 111
// Begleitperson wurde bearbeitet | ID: 112
// Begleitperson wurde gelöscht | ID: 113

System-Nutzer wurde hinzugefügt | ID: 121
System-Nutzer wurde bearbeitet | ID: 122         
System-Nutzer wurde gelöscht | ID: 123

System-Nutzer hat sich angemeldet | ID: 130

Daten-Import wurde ausgeführt | ID: 150
Auswertung wurde ausgeführt | ID: 160

Manuell ausgelöst | ID: Variables Feld | ID: 140
Variable Felder Schüler gespeichert | ID: 141

Manuell ausgelöst Auswertung | ID: 170

Dokument wurde erstellt (allgemein) | ID: 180
Dokument wurde in E-Akte gespeichert (allgemein) | ID: 181
Dokument manuell ausgelöst | ID: 182

ÖPNV Fahrtanforderung wurde hinzugefügt | ID: 190
ÖPNV Fahrtanforderung wurde bearbeitet | ID: 191
ÖPNV Fahrtanforderung wurde gelöscht | ID: 192
ÖPNV Ticket wurde hinzugefügt | ID: 193

Cron-Job: Täglich 06:00 Uhr | ID: 1001
Cron-Job: Täglich 12:00 Uhr | ID: 1002
Cron-Job: Täglich 18:00 Uhr | ID: 1003
Cron-Job: Täglich 21:00 Uhr | ID: 1004

Event-Abklingzeit

Abklingzeit:
Identische Workflows, die von den gleichen Events aufgerufen wurden, werden nur alle 30 Sekunden erneut ausgeführt.
Workflows mit der VIA-Rest-API starten

Workflows können mit Hilfe der Rest-API von VIA getriggert werden.

Dabei rufen Sie eine URL der VIA-Instanz auf, übergeben Parameter und VIA führt den Workflow aus.

URL mit API-Key

Um einen REST-Endpunkt von VIA aufzurufen, ist das Berechnen eines API-Keys notwendig. Die Generierung folgt einer kurzen Logik, die bei SLN erfragen können. Mehr Informationen dazu finden Sie unter:

https://[VIA-URL]/api/workflows?api_token=[TOKEN]&event_id=1001&arbitrary_value=test 123

URL mit “static Token”

Neben dem Generieren des API-Keys ist es auch möglich einen statischen Token zu verwenden. Token werden pro Kunde und Datenbank vergeben. Bitte wenden Sie sich diesbezüglich an SLN.

https://[VIA-URL]/api/workflows?static_token=[TOKEN]&event_id=1001&arbitrary_value=test 123

Hier finden Sie eine entsprechende API-Dokumentation:

https://stadtlandnetz.postman.co/workspace/Stadt.Land.Netz~d1f27844-0c46-406b-a49f-a34e0fa826b8/request/14759210-d97ce53c-60c2-41be-869e-e77b4929b185?action=share&creator=14759210&ctx=documentation

Parameter

Um einen Workflow auszuführen sind folgende Parameter erforderlich:

ParameterErforderlichBeschreibung
api_key
oder

static_token
Dient der Authentifizierung des Aufrufs, sowie der Zuordnung zur richtigen Datenbank.
event_id
oder

workflow_id
event_id
Das Event, das aufgerufen werden soll.
Liste der Events. Diese Methode führt alle Workflows aus, die für dieses Event registriert sind.

ODER

workflow_id
Der spezielle Workflow, der ausgeführt werden soll. Dieser wir mit dann mit dem Event
Manuell ausgelöst | ID: 140 ausgeführt.
id Die Datenbank-ID für die der Workflow ausgeführt werden soll. Bspw. wenn ein Workflow für einen Schüler mit der ID 123 ausgeführt werden soll.
[parameter] Es können beliebig viele weitere Parameter übergeben werden. Diese werden dann in Form von Variablen den Workflows bereitgestellt und können so bspw. für Entscheidungen genutzt werden.

Beispiel:

https://[VIA-URL]/api/workflows?static_token=[TOKEN]&event_id=11&id=1100&value1=test 123&value2=ein weiterer Wert&value3=das ende

In diesem Beispiel wird das Event mit der ID 11 aufgerufen (Schüler wurde hinzugefügt). Das heißt, dass nun alle Workflows ausgeführt werden, die diesem Event zugeteilt sind.

Dabei wird den Workflows in das ID -Objekt die Nummer 1100 übergeben. Sprich, diese Workflows werden für den Schüler mit der ID 1100 ausgeführt.

Gleichzeitig werden drei weitere Werte übergeben (value1, value2, value3). Deren Werte stehen den Workflows nun auch zur Verfügung.

Weiterführende Links:

Wichtig zu beachten:

  • Rest-API-Workflows werden ohne Interface ausgeführt und sind nicht interaktiv.

    Das bedeutet, dass keine Actions verwendet werden können mit dem Merkmal “Interaktiv”. Diese Actions erfordern die VIA-Oberfläche. Rest-API-Workflows mit interaktiven Actions schlagen fehl.
  • Rest-API-Workflows werden ohne User ausgeführt.
    Es können dabei nicht auf User-Informationen zugegriffen werden.
  • Rest-API-Workflows sind eine potentielle Sicherheitslücke, wenn falsch konfiguriert.

    Wichtig ist, dass Sie die Token/Api-Keys niemals veröffentlichen und sicher verwahren. Ist der Token nicht sicher, können Workflows ohne Kontrolle von Außerhalb VIA ausgeführt werden.
Zeit-basierte Workflows (Cron-Jobs)

Es können Workflows angelegt werden, die zeitbasiert aufgerufen werden. Aktuell gibt es vier Zeitpunkte:

  • Täglich 06:00 Uhr | ID: 1001
  • Täglich 12:00 Uhr | ID: 1002
  • Täglich 18:00 Uhr | ID: 1003
  • Täglich 21:00 Uhr | ID: 1004

Einrichten eines Cron-Job-Workflows

Cron-Jobs funktionieren nicht einfach, indem man einem Workflow ein Cron-Job-Event zuweist. Das gibt den Workflow zwar grundsätzlich für den zeitbasierten Aufruf frei, allerdings muss SLN für die Kunden-Instanzen diese Funktionen erst aktivieren.

Wie werden Workflows gestartet

Workflows werden nicht durch VIA selbst gestartet. Grund ist, dass pro Kunde mehrere VIA-Instanzen im Einsatz sein können und Workflows so womöglich mehrmals ausgeführt werden (in jeder Instanz einzeln).

Darum geschieht der Aufruf über die VIA-Rest-API und die Funktionalität, dass man Workflows über eine URL starten kann.

SLN richtet den Aufruf dann auf einem separaten Server ein, welcher von innerhalb der SLN-Infrastruktur die Kunden-Instanzen aufruft und so zeitbasiert die Events triggert.

Sie müssen darum, um einen Cron-Job zu starten entweder selbst einen Cron-Job auf einem eigenen Server einrichten und die Rest-API aufrufen, oder SLN mitteilen, dass Sie einen Cron-Job eingerichtet haben wollen.