13.3 Der Workflow-Builder
Allgemeine Einführung
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
CONTAINSvalue_2
- 5 |
value_1
CONTAINS NOTvalue_2
- 0 |
- 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 beido_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 beido_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 esapplication/json
odertext/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
CONTAINSvalue_2
- 5 |
value_1
CONTAINS NOTvalue_2
- 0 |
- 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.
Javascript ausführen
automatic
ID: 12
nicht implementiertFührt ein Javascript im Browser des Nutzers aus und kann die Ergebnisse an den Server zurücksenden.
Wird für Berechnungen und zum Ausführen von Frontend-Code verwendet.Parameter:
- Script:
script
Das Script, das im Browser des Nutzers ausgeführt wird.
Output:
Daten werden an das Backend mit der JS-Funktion
returnJSvalue();
zurück gesendet und dort als Variable für nachfolgende Actions bereit gestellt.- Script:
Execute Shell
automatic
ID: 14
nicht implementiertFührt ein Shell-Kommando auf dem VIA-Server aus.
Hierfür sind System-Admin-Rechte erforderlich.Parameter:
- command
Output:
Send Document with Mail
automatic
ID: 11
nicht implementiertErstellt ein Dokument und sendet dieses per E-Mail an eine/n oder mehrere Empfänger*innen.
Parameter:
RegEx
automatic
ID: 16
nicht implementiertSelektiert einen Textwert aus einer Variable nach der gegebenen Regular-Expression
Parameter:
- regEx
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
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:
Parameter
Um einen Workflow auszuführen sind folgende Parameter erforderlich:
Parameter | Erforderlich | Beschreibung |
---|---|---|
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.