# Beispiel - Workflowbearbeitung

Es gibt eine Erweiterung zur Abarbeitung von Workflow-Terminen. Man kann im Workflow einzelne Personenknoten für das ELOas Konto anlegen. Wenn ein Workflow diesen Knoten aktiviert, kann über eine ELOas Suche "WORKFLOW" eine Liste der aktiven Workflowtermine ermitteln und abarbeiten. Dabei können die Metadaten ergänzt und der Workflow weitergeleitet werden.

Die notwendigen Rulesets müssen auf XML Ebene erstellt werden.

Das Sammeln der Workflowterminliste sieht im Wesentlichen wie eine normale Suche aus. Als Name für das Metadatenfeld wird "WORKFLOW" eingegeben, der Suchbegriff selbst wird ignoriert und sollte leer bleiben.

<base>
    <name>Workflow2</name>
    <search>
        <name>"WORKFLOW"</name>
        <value></value>
        <mask>13</mask>
        <max>1000</max>
    </search>
    <interval>1M</interval>
</base>

Auch wenn für das Sammeln der Liste keine Suchmaske benötigt wird, muss trotzdem eine Suchmaske angegeben werden. Es werden aus der Terminliste nur die Workflows abgearbeitet, die diese Maske besitzen. Das ist notwendig, damit die Indexdaten in die lokalen JavaScript-Variablen geladen werden können. Falls Workflows zu mehreren Masken möglich sind, muss das Ruleset mehrfach angelegt werden.

Information

In der Terminliste wird kein "FindFirst – FindNext" durchgeführt. Wenn es viele Termine gibt, die nicht bearbeitet werden, kann das dazu führen, dass keine neuen Termine mehr zur tatsächlichen Bearbeitung gefunden werden.

Bei der Abarbeitung von Workflows gibt es neben der Änderung der Metadaten zwei Aktivitäten: gezieltes Weiterleiten und Verändern des Workflows. Das folgende Beispiel soll aufzeigen, wie man in Abhängigkeit der aktuellen Metadaten Einfluss auf den Workflow nehmen kann. Dazu soll ein einfacher Freigabe-Workflow betrachtet werden, bei dem der Sachbearbeiter zu Beginn noch nicht feststeht. Er wird im Laufe des Workflows von der Poststelle in einem Indexfeld SACHBEARBEITER eingetragen. In der Vorlage wird der Sachbearbeiter Knoten erst mal mit Eigentümer initialisiert, der richtige Wert wird vom ELOas zur Laufzeit aus dem Indexfeld SACHBEARBEITER ausgelesen und in den Knoten eingetragen. Der ELOas läuft hierzu unter dem ELO Namen elowf und hat einen Personenknoten zwischen der Poststelle und dem Sachbearbeiter.

Workflowdesigner, Workflow-Vorlage mit ELOas

Abb.: Workflowdesigner, Workflow-Vorlage mit ELOas

Wenn der Workflow beim ELOas ankommt, hat die Poststelle den Sachbearbeiter festgelegt. Der ELOas liest das Metadatenfeld SACHBEARBEITER aus und trägt den Wert in den Folgeknoten Sachbearbeiter ein. Das passiert durch folgende einfache Rule:

<rule>
    <name>Expand Name</name>
    <condition></condition>
    <script>
        log.debug("Process WF: " + NAME);
        wf.changeNodeUser("Sachbearbeiter", SACHBEARBEITER);
        EM_WF_NEXT = "0";
    </script>
</rule>

Der Wechsel des ELO Benutzernamens wird durch den Befehl wf.changeNodeUser durchgeführt. Als erster Parameter wird der Workflow Knotenname angegeben und als zweiter Parameter der ELO Benutzername, der eingetragen werden soll. Um den Rest (Workflow sperren, lesen, Knoten suchen, Benutzer aktualisieren, Workflow speichern, Sperre freigeben) kümmert sich die Library wf.

Nachdem der Benutzername gesetzt wurde, muss der Workflow weitergeleitet werden. Das passiert durch Setzen der Variablen EM_WF_NEXT. Wenn diese leer bleibt, wird nichts weitergeleitet. Der Termin bleibt bestehen (was natürlich nicht für alle Zeiten so bleiben sollte, da dann irgendwann die Terminliste überläuft). Wenn alle Voraussetzungen für eine Weiterleitung erfolgt sind, dann kann entweder die Verbindungsnummer oder der Name des Nachfolgeknotens angegeben werden. Wenn es nur einen Nachfolger gibt, dann ist die Verbindungsnummer einfach einzutragen: EM_WF_NEXT = "0";.

Falls es mehrere Nachfolger gibt, sollte man besser den Namen des Nachfolgeknotens angeben. Dafür wollen wir annehmen, dass der Vorgang nach der Sachbearbeitung automatisch gebucht wird, d.h. den Knoten Buchhaltung übergeben wir auch an den ELOas. Dieser führt ein Skript aus, welches die Buchungsdaten prüft. Wenn alles in Ordnung ist, dann liefert die Funktion ERPverify() true zurück und der Workflow soll an den Knoten Buchen weitergeleitet werden. Wenn ein Fehler vorliegt, dann soll der Workflow an den Sachbearbeiter zurückgehen. Das Skript dafür könnte so aussehen:

If (ERPverify()) {
    EM_WF_NEXT = "Buchen";
}   else {
    EM_WF_NEXT = "Sachbearbeiter";
}
Zuletzt aktualisiert: 31. Juli 2023 um 08:32