Technischer Anhang Workflow 

Bei der Ausführung und Signatur von Workflows steht ein sehr reichhaltiger Kontext in Form von Variablenklassen und lokalen Onlinevariablen zu Verfügung. Dieser Kontext richtet sich nach dem Workflow-Typ und nach dem aktuell laufenden Prozess (originärer Workflow, Signatur, auf einen ersten Workflow folgender Workflow). In diesem Anhang wird der von der Workflow-Engine verwendete Algorithmus beschrieben. Weiterhin werden die in jedem Schritt verfügbaren Variablen aufgeführt.

Um die verwendeten Formeln so geeignet wie möglich aufbauen zu können, bietet der Formelassistent eine Liste von kontextabhängigen Variablen.

Hauptalgorithmus Workflow-Objekt

Workflows vom Typ Objekt setzen sich aus einer Reihe von Schritten zusammen:

Initialisierung der Umgebungsvariablen

In diesem Schritt werden die globalen Variablen belegt. Insbesondere gilt dies für die Variable USRWRK, die dem aktuellen Benutzer des ursprünglichen Workflows entspricht.

Verarbeitung der Zuweisungsvorschrift

In diesem Schritt werden die durch die Vorschrift gegebenen Formeln ausgewertet und in einer mehrdimensionalen Variablen namens VALEXP gespeichert. So stehen geprüfte Werte zur Verfügung, die nicht unbedingt als Definitionskriterium für die Empfänger verwendet werden, sondern einfach in der Workflow einfließen können (z. B., um eine Nachricht in Abhängigkeit von bestimmten Mindest-, Höchst- oder Mittelwerten eines Elementes zu versenden).

Die Anzahl der berechneten Werte ist durch die Variable NBCOL begrenzt.

Im Anschluss daran wird auf Basis der berechneten Werte die für die Belegung der Variantentabelle USER (indiziert von 1 bis maximal 10) geeignete Vorschriftenzeile gesucht.

Workflow-Verarbeitung

Dieser Schritt setzt sich aus mehreren Unterschritten zusammen. Zunächst wird eine Reihe von Werten festgelegt:

  • Anhand der parametrierten Formeln wird die Variable CTX initialisiert. Sie enthält den aktuellen Kontext. Dieser Kontext wird im Workflow-Verlauf gespeichert und immer dann wiederhergestellt, wenn nach dem ersten Workflow-Ereignis ein weiteres Ereignis angestoßen wird.
  • Weiterhin werden die Variablen S_USER, S_CLEOBJ, S_ABREV belegt. Durch sie sind der ursprüngliche Workflow-Benutzer, der Schlüssel des Objekts oder der Zeilengruppe sowie der Code des betreffenden Objekts definiert.
  • Dann wird S_NBRUSER berechnet. Diese Variable enthält die Anzahl der in der Vorschrift tatsächlich definierten Unterzeichnenden.

Schließlich wird geprüft, ob die in der Kopfzeile des Workflows aufgeführten Ausführungsbedingungen erfüllt sind. Ist dies der Fall, so werden folgende Vorgänge durchgeführt:

  • Aufbau des Rücksprung Kontextes (Symbol)
  • Zuweisung einer laufenden Nummer pro Vorschriftenverarbeitung. Bei manuellen Workflows erfolgt die Zuweisung bei jeder Schlüsselwertänderung in der Haupttabelle (sofern keine Gruppierungsspalte vorhanden ist) bzw. bei jeder Gruppierungswertänderung (sofern eine Gruppierungsspalte vorhanden ist).
  • Zuweisung einer laufenden Nummer pro Zeile (bei Gruppierungen gibt es mehrere Nummern pro Gruppe)
  • Ausführung der Workflow-Beginn-Aktion (sofern vorhanden und sofern die entsprechenden Bedingungen erfüllt sind)
  • Suche nach den entsprechenden Benutzern, wenn eine Nachricht gesendet oder eine Rückmeldung gegeben werden muss
  • Wenn eine Nachricht gesendet werden muss, wird die Nachricht verarbeitet.Wenn eine Rückmeldung gegeben werden muss,
  • wird die Rückmeldung gegeben. Ausführung der Workflow-Ende-Aktion (sofern vorhanden und sofern die entsprechenden Ausführungsbedingungen erfüllt sind)

Nachrichtenverarbeitung

In diesem Schritt werden folgende Vorgänge ausgeführt:

  • Aufbau des Textes per Zusammenstellung des Haupttextes und des Auskunftstextes zu den Zeilen (sofern vorhanden)
  • Aufbau des Nachrichtenbetreffs
  • Anzeige des Änderungsfenster dass der Nachricht (sofern die Nachricht geändert werden kann und der Versand interaktiv ist)
  • Schreibtransaktionen in den entsprechenden Tabellen: AWRKHISMES enthält den Nachrichteninhalt AWRKHISJOI enthält die Anhänge AWRKHISDES enthält die Empfänger
  • Nachrichtenversand, sofern die Option Gruppierter Versand nicht aktiviert wurde. Andernfalls erfolgt der Versand am Ende der Workflow-Verarbeitung gruppiert.

Rückmeldungsverarbeitung

In diesem Schritt wird in der Tabelle die Zeile zu der zu verarbeitenden Meldung aktualisiert: AWRKHISSUI. Die entsprechende Transaktion hängt nicht mit den vorhergehenden zusammen (wird aber nur ausgeführt, wenn die vorhergehenden Transaktionen korrekt abgelaufen sind).

Hauptalgorithmus Workflow-Signatur

Workflows vom Typ Signatur werden im Anschluss an Signaturaktionen ausgelöst (entweder manuell aus der Planungsmaske Arbeitsbereich heraus oder automatisch über ein anderes Workflow-Ereignis oder eine Benachrichtigung per Klick auf einen Link).

Dies entspricht folgenden Schritten:

Initialisierung der geerbten Variablen

In diesem Schritt werden die vom Signaturkontext geerbten Variablen belegt. Dabei handelt es sich um folgende Variablen:

NUMORG

Ursprüngliche laufende Nummer

USRORG

Empfänger des ursprünglichen Ereignisses

NUMSIG

Laufende Nummer, die den Signaturprozess auslöste

USRDES

Empfänger der laufenden Nummer, die den Signaturprozess auslöste

USRWRK

Unterzeichnender Benutzer

MAIWRK

Nachrichtenadresse des Unterzeichnenden, wenn die Signatur über einen externen http-Link erfolgt

LEVSIG

Signaturebene (ursprüngliches Ereignis = 0, die weiteren Ereignisse sind ab 1 nummeriert)

RETORG

Schlüssel des Objekts, von dem der ursprüngliche Workflow ausgelöst wurde

CONTXT

Referenz des Rückkehrsymbols

CLEOBJ

Laufende Nummer unterz.

CTX(1..15)

Kontextvariablen

S_USER

Empfänger, der den ursprünglichen Workflow auslöste

S_CLEOBJ

Auslöseschlüssel (Objekt oder Gruppierung)

S_ABREV

Abkürzung des ursprünglichen Workflow-Objekts

S_NBRUSR

Anzahl der in der ursprünglichen Workflow-Regel definierten Benutzer

Algorithmus zur Signaturverarbeitung

Die Ereignissignatur entspricht folgendem Prozess:

  • Initialisierung des Signaturkontexts.
  • Prüfung, ob laufende Nummern vorhanden sind sowie setzen der entsprechenden Sperren
  • Auswertung (unter Berücksichtigung der Bedingungen) der Liste der zulässigen Antworten
  • Erfassung einer in den möglichen Antworten enthaltenen Antwort
  • Sperre der Daten, durch die die erste Rückmeldung geniert wurde
  • Belegung der Variablenklassen [F]
  • Aktualisierung der Variable RESULT gemäß Antwort
  • Anpassung dieser Variable durch Erfassung (sofern die Antwort änderbar ist)

Dann wird die eigentliche Signaturtransaktion gestartet:

  • Ausführung der Signaturaktionen, sofern vorhanden
  • Aktualisierung des Antwortfelds (sofern vorhanden)
  • Verarbeitung der der Signatur zugeordneten Workflow-Regel (sofern vorhanden)
  • Aktualisierung Rückmeldungszeile (Kennzeichen unterzeichnet, entsprechender Unterzeichnender)

Initialisierung des Signaturkontexts

Bei der Unterzeichnung einer Rückmeldung durch einen Benutzer stehen im Kontext folgende Variablen zur Verfügung:

CHRONO

Laufende Nummer des Ereignisses, zu dem unterzeichnet wird

USRDES

Benutzercode des Empfängers

USRSIG

Benutzercode des Unterzeichnenden

USRMAIL

Nachrichtenadresse des Unterzeichnenden, wenn die Signatur über einen externen http-Link erfolgt

NUMORG

Laufende Nummer des ursprünglichen Ereignisses, zu dem die erste Unterschrift gegeben wurde

USRORG

Empfänger dieses Ereignisses

LEVSIG

Signaturebene (ursprüngliches Ereignis = 0, die weiteren Ereignisse sind ab 1 nummeriert)

USRTOP

Hauptempfänger

NUMGRP

Gruppe des zu unterzeichnenden Ereignisses

CTX(1..15)

Kontextvariablen

S_USER

Empfänger, der den ursprünglichen Workflow auslöste

S_CLEOBJ

Auslöseschlüssel (Objekt oder Gruppierung)

S_ABREV

Abkürzung des ursprünglichen Workflow-Objekts

S_NBRUSR

Anzahl der in der ursprünglichen Workflow-Regel definierten Benutzer

Aus der Tabelle der REPCHR-Variablen kann ermittelt werden, ob andere Empfänger desselben Ereignisses bereits unterzeichnet haben. Dabei wird die Anzahl von Gruppen gezählt, wobei eine Gruppe einer Zeile in der Tabelle der Unterzeichnenden entspricht. Sobald ein befugter Benutzer unterzeichnet hat, wird das Ereignis als unterzeichnet betrachtet und kann von keinem anderen Mitglied derselben Gruppe erneut unterzeichnet werden.

Hieraus ergibt sich:

REPCHR(0) = Anzahl noch erwarteter Antworten: Sind zur Ereignisbeschreibung vier Zeilen von Unterzeichnenden vorhanden, von denen nur einer unterzeichnet hat, lautet dieser Wert 3.

REPCHR(NO) bzw. NO kann Werte zwischen 1 und 10 annehmen und steht für die Anzahl von Unterzeichnenden, die mit der Antwort der Nummer NO in der Antworttabelle unterzeichnet haben.

Mit diesen Variablen können insbesondere Bedingungen für die nachfolgenden Schritte definiert werden (in Abhängigkeit davon, ob der letzte erwartete Unterzeichnende geantwortet hat). Weiterhin können die Hauptsignaturlogiken bearbeitet werden.