Durchsuchbare Dokumentation aufrufen

Zurück zur Dokumentationsübersicht

Workflow "Dokumentfreigabe"

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.

Übersicht: Workflow Dokumentfreigabe

Knoten „Aktuellen Benutzer zuordnen“ erstellen


Im 1. Schritt legen Sie den Knoten Aktuellen Benutzer zuordnen an.

Aussehen des Knotens

Parameter befüllen

Im Knoten befüllen Sie folgenden Parameter:

  1. Aktivieren Sie den Parameter Zuund setzen Sie folgende Attachmentberechtigung:
    Lesend

Funktionsweise des Knotens

Dieser Knoten setzt den aktuellen Benutzer als Bearbeiter für die kommenden Workflowschritte ein.

Knoten „Aktuelle Benutzer- und Gruppenzuweisungen sichern“ erstellen


Im 2. Schritt legen Sie den Knoten Aktuelle Benutzer- und Gruppenzuweisungen sichern an.

Aussehen des Knotens

Parameter befüllen

Dieser Knoten besitzt keine Parameter.

Funktionsweise des Knotens

Dieser Knoten speichert den aktuellen Benutzer ab. Der abgespeicherte Benutzer kann im späteren Workflowverlauf durch den Knoten Benutzer- und Gruppenzuweisungen wiederherstellen wiederhergestellt werden.

Knoten „Skript“ erstellen


Im 3. Schritt legen Sie den Knoten Skript an.

Aussehen des Knotens

Parameter befüllen

Im Knoten befüllen Sie folgenden Parameter:

  1. Fügen Sie ein Enter script mit folgendem Code hinzu:
    /* 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('');
    
  2. Ersetzen Sie die im obigen Skript angegebene Benutzergruppe GRP_wf_allgemein_beobachter mit Ihrer eigenen Benutzergruppe.

Funktionsweise des Knotens

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.

Knoten „Verteilen“ erstellen


Im 4. Schritt legen Sie den Knoten Verteilen an.

Aussehen des Knotens

Parameter befüllen

Im Knoten befüllen Sie folgende Parameter:

  1. Befüllen Sie den Parameter Von Variablemit folgendem Wert:
    users
  2. Befüllen Sie den Parameter In Variablemit folgendem Wert:
    user

Funktionsweise des Knotens

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.

Knoten „assign“ erstellen


Im 5. Schritt legen Sie den Knoten assign an.

Aussehen des Knotens

Parameter befüllen

Im Knoten befüllen Sie folgenden Parameter:

  1. Aktivieren Sie den Parameter Benutzer/Gruppen (Bearbeiter)und setzen Sie folgenden Wert als Expression:
    [{ "attachmentPermission": "read", "id": token.variables.user }]

Funktionsweise des Knotens

Dieser Knoten setzt für den aktuellen Benutzer die UI.

Knoten „UI“ erstellen


Im 6. Schritt legen Sie den Knoten UI an.

 

Parameter befüllen

Im Knoten befüllen Sie folgenden Parameter:

  1. Fügen Sie ein Oberflächenskript hinzu und tragen dort folgenden Code ein:
    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;
    
  2. Erstellen Sie folgende zwei Outlets:
    •  ok
    •  cancel

Funktionsweise des Knotens

Dieser Knoten erstellt eine UI, in der die Bearbeiter ein Dokument freigeben oder ablehnen können.

Knoten „collect“ erstellen


Im 7. Schritt legen Sie den Knoten collect​​ an.

Aussehen des Knotens

Parameter befüllen

Im Knoten befüllen Sie folgenden Parameter:

  1. Befüllen Sie den Parameter Abgeschlossene Tokens mit folgendem Wert:
    1
  2. Führen Sie das Outlet cancel des ui-Knotens in diesen collectCancel-Knoten.

Funktionsweise des Knotens

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.

Knoten „Kommentar“ erstellen


Im 8. Schritt legen Sie den Knoten Kommentar an.

Aussehen des Knotens

Parameter befüllen

Dieser Knoten verfügt über keine Parameter.

Funktionsweise des Knotens

Dieser Knoten zeigt an, dass der Workflow an dieser Stelle endet.

Knoten „collect“ erstellen


Im 9. Schritt legen Sie erneut den Knoten collect an.

Aussehen des Knotens

Parameter befüllen

Im Knoten befüllen Sie folgenden Parameter:

  1. Befüllen Sie den Parameter Abgeschlossene Tokens mit folgendem Wert:
    2

Funktionsweise des Knotens

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.

Knoten „Benutzer- und Gruppenzuweisungen wiederherstellen“ erstellen


Im 10. Schritt legen Sie den Knoten Benutzer- und Gruppenzuweisungen wiederherstellen an.

Aussehen des Knotens

Parameter befüllen

Dieser Knoten verfügt über keine Parameter.

Funktionsweise des Knotens

Dieser Knoten stellt den gesicherten Benutzer des Knotens Aktuelle Benutzer- und Gruppenzuweisungen sichern aus Schritt 5 wieder her.

Knoten „UI“ erstellen


Im 11. Schritt legen Sie erneut den Knoten UI an.

Aussehen des Knotens

Parameter befüllen

Im Knoten befüllen Sie folgende Parameter:

  1. Fügen Sie ein neues Oberflächenskript mit folgendem Inhalt ein:
    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;
    

Funktionsweise des Knotens

Diese UI-Maske klärt den Workflowersteller auf, dass das Dokument freigegeben wurde.