Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core workflow 3.0 > Workflows anhand von Beispielen entwickeln
Mit dem folgenden Workflow starten Sie etwa eine Eskalation, wenn in der Bedienoberfläche die Rechnung nach einer bestimmten Zeit nicht bearbeitet oder bezahlt wurde. Das System versendet daraufhin automatisch eine Notiz.
Der Workflow besteht aus folgenden Knoten (in dieser Reihenfolge):
Hinweis: Bei allen nachfolgend aufgeführten Bezeichnungen / Variablen / Werten handelt es sich um Beispiele. Sie müssen diese Beispiele nicht 1:1 übernehmen, sondern können eigene Bezeichnungen und Werte verwenden.
In diesem Workflow ist ein Subworkflow enthalten, der über die beiden Knoten SubworkflowNotizen1 und SubworkflowNotizen2 eingebunden ist. Dieser Subworkflow versendet Notizen, sofern die Eskalation ausgelöst wird.
Der Subworkflow besteht aus folgenden Knoten:
Für das Erstellen von Subworkflows siehe Subworkflows einrichten.
Diese Dokumentation beschreibt die Anlage und Parameter / Werte jedes Knotens. Anschließend folgt eine Beschreibung der Funktionsweise jedes Knotens, damit Sie verstehen, welche Aufgaben der jeweilige Knoten erfüllt und wie er im abgebildeten Workflow funktioniert.
Beginnen Sie zuerst mit dem Subworkflow, da Sie diesen später in den Hauptworkflow einbinden müssen.
Im 1. Schritt erstellen Sie den Knoten Initialisiere Subworkflow.
Parameter befüllen
Im Knoten befüllen Sie folgenden Parameter:
subworkflow_notizen
Funktionsweise des Knotens
Dieser Knoten speichert die übergebenen Parameter in die Variable subworkflow_notizen.
Im 2. Schritt erstellen Sie den Knoten Skript.
Parameter befüllen
/* global sc, sca, token, instance, outlets, inlet, parameters */ /* jslint unused:true */ // Basis-Bibliotheken let NODE_NAME = 'subworkflow_notizen'; let workflow = require('/agorum/roi/customers/acworkflow/js/workflow/')(token, NODE_NAME); // Privileges let scPrivileged = workflow.parameters.privileged(); let objects = require('common/objects')(scPrivileged); // Use internal variables let nodeScope = workflow.nodeScope; let myParameters = nodeScope.parameters; // Validierung workflow.validate.array('recipients'); workflow.validate.string('content'); let attachments = workflow.objects.get(); // Erstellt eine Notiz objects.create('note', { content: myParameters.content, target: attachments[0], recipients: myParameters.recipients, noteFormat: 'text/html' }); // Loggt im Protokoll eine Nachricht console.log('Notiz wurde aus dem Subworkflow versendet', { target: attachments[0], empfaenger: [ 'user:roi' + myParameters.recipients ] }); token.leave('');
Funktionsweise des Knotens
Dieser Knoten erstellt per JavaScript eine Notiz und loggt die Nachricht Notiz wurde aus dem Subworkflow versendet im Log (Protokoll).
Verwenden Sie in Zeile 11 die gesetzte Variable aus dem Parameter Variablenname zum Speichern der Parameter aus Schritt 1 wie folgt:
let myInternalData = internal.subworkflow_notizen = internal.subworkflow_notizen || {};
Im 3. Schritt erstellen Sie den Knoten Finalisiere Subworkflow.
Parameter befüllen
Im Knoten befüllen Sie folgenden Parameter:
subworkflow_notizen
Hinweis: Verwenden Sie die gleiche Variable, die Sie im Knoten Initialisiere Subworkflow in Schritt 1 zum Speichern der Parameter angegeben haben.
Funktionsweise des Knotens
Dieser Knoten räumt die zuvor gesetzte Variable subworkflow_notizen aus und deren Werte aus Schritt 1 wieder auf, sobald der Subworkflow beendet wurde. Auf die Variable subworkflow_notizen kann danach nicht mehr zugegriffen werden.
Nachdem der Subworkflow erstellt wurde, beginnen Sie mit der Erstellung des Hauptworkflows. In diesen wird der eben erstellte Subworkflow nun eingebunden.
Im 1. Schritt erstellen Sie den Knoten Kommentar.
Parameter befüllen
Der Knoten verfügt über keine Möglichkeit, Parameter anzugeben. Legen Sie den Knoten daher lediglich an.
Funktionsweise des Knotens
Dieser Knoten dient lediglich dazu, den Start des Workflows zu kennzeichnen. Er verschafft einen Überblick, wo der Workflow beginnt.
Im 2. Schritt erstellen Sie den Knoten fork.
Parameter befüllen
Der Knoten verfügt über keine Möglichkeit, Parameter anzugeben. Legen Sie den Knoten daher lediglich an.
Funktionsweise des Knotens
Dieser Knoten teilt den Workflow und sein aktuelles Token in zwei verschiedene Zweige auf:
Für jeden dieser Zweige erstellt das System ein parallel laufendes Token.
Im 3. Schritt erstellen Sie den Knoten delay. Dieser Knoten führt den Eskalationszweig fort.
Parameter befüllen
Im Knoten befüllen Sie folgenden Parameter:
2
Funktionsweise des Knotens
Dieser Knoten wartet 2 Minuten, bis der nächste Knoten SubworkflowNotizen1 aufgerufen wird. Bei dem Wert in Minuten handelt es sich nur um ein Beispiel, Sie sollten den Wert also ggf. erhöhen, damit mehr Zeit für die Benutzer bleibt, eine Aktion im UI-Zweig durchzuführen.
Bei dem Knoten SubworkflowNotizen1 handelt es sich im Übrigen um den zuvor erstellten Subworkflow, den Sie deshalb nachfolgend noch in diesen Hauptworkflow einbinden müssen (siehe Subworkflows einrichten).
Wird zwischenzeitlich im UI-Zweig der UI-Knoten aus Schritt 4 beendet, noch bevor der delay-Knoten verlassen wird, d. h. bevor die gesetzte Zeit verstrichen ist, löst sich das Token aus dem Eskalationszweig auf.
Im 4. Schritt erstellen Sie den Knoten UI. Dieser Knoten führt den UI-Zweig fort.
Parameter befüllen
Im Knoten befüllen und setzen Sie folgende Parameter:
Rechnung bezahlen
Bezahlen
outletUI
Hinweis: Das folgende Skript setzt agorum core 10.0.6 voraus.
let aguila = require('common/aguila'); // form für Workflowschritt erstellen let form = aguila.create({ type: 'agorum.composite.form.basic', labelPosition: 'top', elements: [ // Text ausgeben { type: 'agorum.textDisplay', text: '_acmsg:title=Rechnung wurde bezahlt?' }, // Buttons { type: 'agorum.spacer', height: 24 }, { type: 'agorum.hbox', items: [ // Button auf der linken Seite { type: 'agorum.composite.form.element.button', name: 'Abbrechen', text: '_acmsg:cancel=Abbrechen', icon: 'aguila-icon cancel' }, { type: 'agorum.spacer', flexible: true }, // Button auf der rechten Seite { type: 'agorum.composite.form.element.button', name: 'OK', text: '_acmsg:ok=OK', icon: 'aguila-icon check' } ] } ] }); form.on('action', action => { // Herausfinden, welcher Button angeklickt wurde, // und den ui-Knoten über das zugewiesene Outlet verlassen switch (action.name) { //Wenn "OK" angeklickt wurde case 'OK': // Die form muss valide sein, bevor der ui-Knoten durch das Outlet "OK" verlassen werden kann if (form.validate()) { form.fire('leave', 'OK'); } break; //Wenn "Abbrechen" angeklickt wurde case 'Abbrechen': form.fire('leave', 'Abbrechen'); break; } }); form;
Funktionsweise des Knotens
Dieser Knoten erstellt eine Bedienoberfläche, in der die Benutzer aus der Buchhaltung die Rechnung bezahlen können. Es kann hier auf die Schaltfläche OK oder Abbrechen geklickt werden. Welche Schaltfläche geklickt wurde, wird in Schritt 6 geprüft. Die Oberfläche wird demjenigen Bearbeiter zugewiesen, den Sie im Parameter Benutzer/Gruppe (Bearbeiter) hinterlegt haben.
Die Outlet Variable bewirkt, dass eine der Aktionen (in diesem Beispiel OK oder Abbrechen) des Benutzers in die hier angegebene Variable gespeichert wird. Wie die Aktion genau heißt, hängt vom Oberflächenskript ab, das Sie hier erstellen und befüllen. In unserem Falle sieht dieser Teil des Skripts so aus:
form.on('action', action => { // Herausfinden, welcher Button angeklickt wurde, // und den ui-Knoten über das zugewiesene Outlet verlassen switch (action.name) { //Wenn "OK" angeklickt wurde case 'OK': // Die form muss valide sein, bevor der ui-Knoten durch das Outlet "OK" verlassen werden kann if (form.validate()) { form.fire('leave', 'OK'); } break; //Wenn "Abbrechen" angeklickt wurde case 'Abbrechen': form.fire('leave', 'Abbrechen'); break; } });
Die Aktion form.fire('leave', 'OK'); oder form.fire('leave', 'Abbrechen'); wird also in die Outlet Variable outletUI geschrieben.
Zudem benötigen Sie im UI-Knoten noch ein neues Default-Outlet, den der Workflow gehen soll. Um ein Default-Outlet zu erstellen, lassen Sie den Namen des neuen Outlets einfach leer.
Im 5. Schritt erstellen Sie den Knoten join.
Parameter befüllen
Im Knoten befüllen Sie folgenden Parameter:
1
Funktionsweise des Knotens
Dieser Knoten wartet mit der Fortsetzung des Workflows, bis 1 Token abgeschlossen ist. Der Workflow wird also fortgesetzt, sobald in der Bedienoberfläche (UI-Knoten in Schritt 4) eine Aktion ausgeführt wurde, in diesem Fall also ein Benutzer auf die Schaltfläche OK oder Abbrechen geklickt hat.
Im 6. Schritt erstellen Sie den Knoten decision.
Parameter befüllen
Im Knoten befüllen Sie folgenden Parameter:
token.variables.outletUI
Funktionsweise des Knotens
Dieser Knoten:
Outlet „Abbrechen“
Hat der Bearbeiter Abbrechen angeklickt, folgt lediglich ein Kommentar-Knoten (siehe Schritt 7), der aber keinerlei Funktion hat. Der Workflow wird an dieser Stelle beendet.
Outlet „OK“
Hat der Benutzer OK angeklickt, folgt der Knoten SubworkflowNotizen2. Es handelt sich hierbei um den Subworkflow, den Sie weiter oben erstellt haben und deshalb nachfolgend noch in diesen Hauptworkflow einbinden müssen (siehe Subworkflows einrichten).
Der Subworkflow führt dazu, dass eine Notiz versendet wird.
Im 7. Schritt erstellen Sie erneut den Knoten Kommentar.
Parameter befüllen
Der Knoten verfügt über keine Möglichkeit, Parameter anzugeben. Legen Sie den Knoten daher lediglich an.
Funktionsweise des Knotens
Dieser Knoten dient lediglich dazu, das Ende des Workflows zu kennzeichnen. Er verschafft einne Überblick, wo der Workflow endet.
Vergeben Sie als Anzeigename im Knoten etwa Workflow wird beendet, da Rechnung bezahlt wurde und bereits archiviert war.