Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core workflow 3.0 > Workflows anhand von Beispielen entwickeln
Mit diesem Workflow erstellen Sie ein Freigabeszenario für Dokumente. Folgende Idee steht im Raum:
Hinweis: Damit Sie den Workflow testen können, benötigen Sie eine Benutzergruppe, die mindestens zwei Benutzer zum Testen enthält.
Der Workflow besteht aus folgenden Knoten (in dieser Reihenfolge):
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.
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.
Im 1. Schritt legen Sie den Knoten Aktuellen Benutzer zuordnen an.
Im Knoten befüllen Sie folgenden Parameter:
Lesend
Dieser Knoten setzt den aktuellen Benutzer als Bearbeiter für die kommenden Workflowschritte ein.
Im 2. Schritt legen Sie den Knoten Aktuelle Benutzer- und Gruppenzuweisungen sichern an.
Dieser Knoten besitzt keine Parameter.
Dieser Knoten speichert den aktuellen Benutzer ab. Der abgespeicherte Benutzer kann im späteren Workflowverlauf durch den Knoten Benutzer- und Gruppenzuweisungen wiederherstellen wiederhergestellt werden.
Im 3. Schritt legen Sie den Knoten Skript an.
Im Knoten befüllen Sie folgenden Parameter:
/* global sc, sca, token, instance, outlets, inlet, parameters */ let objects = require('common/objects')(sca); // siehe JavaScript-Bibliothek common-objects let users = objects.find('group:GRP_wf_allgemein_beobachter').directUserMembers.map(user => user.UUID); token.variables.users = users; // Send the token through the default outlet token.leave('');
Dieser Knoten stellt die Vorbereitung des kommenden distribute-Knotens dar und arbeitet immer ein Array ab. In diesem Fall soll eine UI an die entsprechenden Benutzer der Benutzergruppe zugewiesen werden. Daher speichern Sie hier die Mitglieder der Benutzergruppe in das Array users der Token-Variablen ab.
Im 4. Schritt legen Sie den Knoten Verteilen an.
Im Knoten befüllen Sie folgende Parameter:
users
user
Der Knoten splittet das übergebene Array an Benutzern auf und speichert jeden einzelnen in die Variable user. Diese Variable verwenden Sie im folgenden Knoten Aktuellen Benutzer zuordnen, um die UI an die entsprechenden Benutzer zuzuweisen.
Im 5. Schritt legen Sie den Knoten assign an.
Im Knoten befüllen Sie folgenden Parameter:
[{ "attachmentPermission": "read", "id": token.variables.user }]
Dieser Knoten setzt für den aktuellen Benutzer die UI.
Im 6. Schritt legen Sie den Knoten UI an.
Im Knoten befüllen Sie folgenden Parameter:
let aguila = require('common/aguila'); // Create form for workflow step. // This sample contains some common elements, feel free to use or remove them let form = aguila.create({ type: 'agorum.composite.form.basic', labelPosition: 'top', elements: [ { type: 'agorum.textDisplay', text: 'Kann Dokument freigegeben werden?' }, // buttons { type: 'agorum.spacer', height: 24 }, { type: 'agorum.hbox', items: [ // buttons on left side { type: 'agorum.composite.form.element.button', name: 'cancel', text: 'Ablehnen', icon: 'aguila-icon cancel' }, { type: 'agorum.spacer', flexible: true }, // buttons on right side { type: 'agorum.composite.form.element.button', name: 'ok', text: 'freigeben', icon: 'aguila-icon check' } ] } ] }); // Listen for actions on the widget form.on('action', action => { // find out, which button has been pressed // and leave the ui node through the associated outlet switch (action.name) { case 'ok': // the form has to be valid, before the ui can be left through the "ok"-outlet if (form.validate()) { form.fire('leave', 'ok'); } break; case 'cancel': // when cancel is pressed, leavel to "cancel"-outlet without validation form.fire('leave', 'cancel'); break; } }); form;
Dieser Knoten erstellt eine UI, in der die Bearbeiter ein Dokument freigeben oder ablehnen können.
Im 7. Schritt legen Sie den Knoten collect an.
Im Knoten befüllen Sie folgenden Parameter:
1
Dieser Knoten stellt sicher, dass alle offenen Tokens des Knotens Verteilen aus Schritt 4 abgebrochen werden, sobald ein Benutzer das Dokument ablehnt. Der Workflow geht anschließend den Weg über collectCancel.
Im 8. Schritt legen Sie den Knoten Kommentar an.
Dieser Knoten verfügt über keine Parameter.
Dieser Knoten zeigt an, dass der Workflow an dieser Stelle endet.
Im 9. Schritt legen Sie erneut den Knoten collect an.
Im Knoten befüllen Sie folgenden Parameter:
2
Dieser Knoten stellt sicher, dass die Freigabe von zwei Benutzern ausreicht, um ein Dokument zur Freigabe weiterzureichen. Alle offenen Tokens des distribute-Knotens werden abgebrochen, und der Workflow geht anschließend den Weg über collectOk.
Im 10. Schritt legen Sie den Knoten Benutzer- und Gruppenzuweisungen wiederherstellen an.
Dieser Knoten verfügt über keine Parameter.
Dieser Knoten stellt den gesicherten Benutzer des Knotens Aktuelle Benutzer- und Gruppenzuweisungen sichern aus Schritt 5 wieder her.
Im 11. Schritt legen Sie erneut den Knoten UI an.
Im Knoten befüllen Sie folgende Parameter:
let aguila = require('common/aguila'); let form = aguila.create({ type: 'agorum.composite.form.basic', labelPosition: 'top', elements: [ { type: 'agorum.textDisplay', text: 'Alle haben ok gedrückt' }, // buttons { type: 'agorum.spacer', height: 24 }, { type: 'agorum.hbox', items: [ { type: 'agorum.spacer', flexible: true }, { type: 'agorum.composite.form.element.button', name: 'ok', text: '_acmsg:ok=Ok', icon: 'aguila-icon check' } ] } ] }); // Listen for actions on the widget form.on('action', action => { switch (action.name) { case 'ok': // the form has to be valid, before the ui can be left through the "ok"-outlet if (form.validate()) { form.fire('leave', 'ok'); } break; } }); form;
Diese UI-Maske klärt den Workflowersteller auf, dass das Dokument freigegeben wurde.