Open Source Dokumentenmanagement
Dokumentation

Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

Navigation: Dokumentationen agorum core > agorum core workflow 3.0 > Workflows anhand von Beispielen entwickeln


Workflow "Eskalation bei nicht bezahlter Rechnung"

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.

Übersicht: Workflow Eskalation bei nicht bezahlter Rechnung

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.

Übersicht: Subworkflow Notizen versenden

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.

Knoten des Subworkflows


Knoten „Initialisiere Subworkflow“ erstellen

Im 1. Schritt erstellen Sie den Knoten Initialisiere Subworkflow.

Aussehen des Knotens


Parameter befüllen

Im Knoten befüllen Sie folgenden Parameter:

  1. Vergeben Sie im Parameter Variablenname zum Speichern der Parameter etwa folgende Variable im Editor:
    subworkflow_notizen


Funktionsweise des Knotens

Dieser Knoten speichert die übergebenen Parameter in die Variable subworkflow_notizen.

Knoten „Skript“ erstellen

Im 2. Schritt erstellen Sie den Knoten Skript.

Aussehen des Knotens


Parameter befüllen

  1. Erstellen Sie folgendes Enter-Skript, indem Sie beim Parameter Enter script auf  klicken:
    /* 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('');
  2. Definieren Sie diesen Knoten als Endknoten, damit dessen In- und Outlet für den Hauptworkflow verfügbar werden.


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 || {};

Knoten „Finalisiere Subworkflow“

Im 3. Schritt erstellen Sie den Knoten Finalisiere Subworkflow.

Aussehen des Knotens


Parameter befüllen

Im Knoten befüllen Sie folgenden Parameter:

  1. Vergeben Sie im Parameter Aufzuräumende Variable folgende Variable im Editor:
    subworkflow_notizen

    Hinweis: Verwenden Sie die gleiche Variable, die Sie im Knoten Initialisiere Subworkflow in Schritt 1 zum Speichern der Parameter angegeben haben.

  2. Definieren Sie diesen Knoten als Endknoten, damit dessen In- und Outlet für den Hauptworkflow verfügbar werden.


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.

Knoten des Hauptworkflows

Knoten „Kommentar“ erstellen

Im 1. Schritt erstellen Sie den Knoten Kommentar.

Aussehen des Knotens


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.

Knoten „fork“ erstellen

Im 2. Schritt erstellen Sie den Knoten fork.

Aussehen des Knotens


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.

Knoten „delay“ erstellen

Im 3. Schritt erstellen Sie den Knoten delay. Dieser Knoten führt den Eskalationszweig fort.

Aussehen des Knotens

Parameter befüllen

Im Knoten befüllen Sie folgenden Parameter:

  1. Vergeben Sie etwa 2 Minuten als Wartezeit im Editor:
    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.

Knoten „UI“ erstellen

Im 4. Schritt erstellen Sie den Knoten UI. Dieser Knoten führt den UI-Zweig fort.

Aussehen des Knotens

 

Parameter befüllen

Im Knoten befüllen und setzen Sie folgende Parameter:

  1. Vergeben Sie im Parameter Anzeigename etwa folgenden Text im Editor:
    Rechnung bezahlen
  2. Vergeben Sie im Parameter Beschreibung etwa folgenden Text im Editor:
    Bezahlen
  3. Aktivieren Sie den Parameter Automatisches Annehmen bei Eingabe aktivieren.
  4. Setzen Sie einen festen Benutzer und / oder eine Benutzergruppe als Bearbeiter.
  5. Vergeben Sie im Parameter Outlet Variable etwa folgende Variable im Editor:
    outletUI
  6. Klicken Sie auf das  beim Parameter Oberflächenscript und befüllen Sie das Skript wie folgt:

    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.

Knoten „join“ erstellen

Im 5. Schritt erstellen Sie den Knoten join.

Aussehen des Knotens

 

Parameter befüllen

Im Knoten befüllen Sie folgenden Parameter:

  1. Vergeben Sie 1 abgeschlossenen Token im Editor:
    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.

Knoten „decision“ erstellen

Im 6. Schritt erstellen Sie den Knoten decision.

Aussehen des Knotens

 

Parameter befüllen

Im Knoten befüllen Sie folgenden Parameter:

  1. Vergeben Sie im Parameter Entscheidung folgende Variable als Expression:
    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.

Knoten „Kommentar“ erstellen

Im 7. Schritt erstellen Sie erneut den Knoten Kommentar.

Aussehen des Knotens


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.