Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

Navigation: Dokumentationen agorum core > agorum core für Entwickler > agorum core workflow 3.0


Automation l Workflow - Assignment-Bibliothek

Dient zum programmatischen Lesen und Setzen von UI-Zuweisungen von Bearbeitern in Workflow-Knoten. Mit der assignment-Bibliothek können Sie

Wenn ein Workflow nach einem Speichervorgang nicht mehr direkt dem aktuellen Bearbeiter zugewiesen ist, navigiert die UI zu einem anderen Eintrag. Mit dem assign-Knoten wird die Zuweisung für den nächsten Schritt durchgeführt. Mit dem Skript-Knoten wird die aktuelle Token-Zuweisung, token.variables.sys_acw_assignee, gelöscht.

Die Bibliothek laden

let assignment = require('/agorum/roi/customers/acworkflow/js/common/assignment');

Funktionen

Funktion Beschreibung Beispiel
assign Weist Berechtigungen für ein Token zu.

token
Definiert das Token-Objekt, dem eine Benutzergruppe von Bearbeitern, Vertretern oder Betrachtern zugewiesen wird.

assignees
Definiert die Benutzergruppe der Bearbeiter, der ein Token zugewiesen wird. Zusätzlich können Sie auch die Berechtigungen für Anhänge (Attachments) neu setzen.

substitutes
Definiert die Benutzergruppe der Vertreter, der ein Token zugewiesen wird.

viewers
Definiert die Benutzergruppe der Betrachter, der ein Token zugewiesen wird.

Werden assignees, substitutes oder viewers nicht angegeben (undefined), bleiben die bisherigen Werte erhalten. Wird ein leeres Array übergeben, werden die bisherigen Einträge gelöscht.

version_interaction_assign
Um sowohl substitutes als auch viewers gleichzeitig verwenden zu können, muss dieser Parameter mit dem Wert 1 übergeben werden. Wird er nicht angegeben, wird intern die Legacy-Logik verwendet, bei der viewers wie in älteren Versionen als Vertreter behandelt wird (siehe Funktion upgrade). Dabei verwirft die Funktion gleichzeitig übergebene substitutes. Ohne viewers sind substitutes anschließend nicht angegeben, die bisherigen Vertreter bleiben also erhalten, auch bei substitutes: [].

assignment.assign(token, {
  assignees: [
    'group:GRP_Demo',
    {
      attachmentPermission: 'write',
      id: 'group:d4wdr'
    }
  ],
  substitutes: [],
  viewers: [],
  version_interaction_assign: 1,
});
getAssignment Fragt Berechtigungen für ein Token ab. Die Funktion liest die Teilnehmer, die zuvor assign im Token gespeichert hat (id und attachmentPermission). Wurde noch nie zugewiesen, sind assignees, substitutes und viewers nicht gesetzt (undefined). Die Funktion legt dabei die Variable sys_acw_internal im Token an, falls sie fehlt. Die Antwort hat folgendes Muster:
{"viewers":[],"substitutes":[],"assignees":[{"attachmentPermission":"read","id":"group:GRP_Demo"},{"attachmentPermission":"write","id":"group:d4wdr"}]}

 

assignment.getAssignment(token)
upgrade Migriert ältere Assignment-Strukturen auf die aktuelle Version. In früheren Versionen wurde die Eigenschaft viewers für Vertreter verwendet. Seit der Einführung der Vertreter-Unterscheidung heißt diese Eigenschaft substitutes.

Die Funktion prüft, ob die Versionskennung version_interaction_assign vorhanden ist. Falls nicht, wird viewers in substitutes umbenannt und die Versionskennung gesetzt. Bereits angegebene substitutes ersetzt die Funktion dabei immer durch viewers. Ist viewers nicht angegeben, sind substitutes danach nicht angegeben.

parameters
Das Parameter-Objekt, das migriert werden soll.

Rückgabe: Das migrierte Parameter-Objekt Bei einer Migration ist das eine Kopie, das Originalobjekt bleibt unverändert. Ist version_interaction_assign bereits gesetzt, gibt die Funktion dasselbe Objekt unverändert zurück.
let assignment = require('/agorum/roi/customers/acworkflow/js/common/assignment');

// Alte Parameter migrieren
let upgraded = assignment.upgrade(parameters);

Hinweis: Um bei assignment.assign() sowohl substitutes als auch viewers gleichzeitig zuweisen zu können, muss der Parameter version_interaction_assign mit dem Wert 1 übergeben werden. Fehlt dieser Parameter, wird intern die Legacy-Logik verwendet, bei der viewers wie in älteren Versionen als Vertreter interpretiert wird.

Was assign im Token setzt

Die Funktion assign speichert die Zuweisung in folgenden Variablen des Tokens:

Variable Inhalt
sys_acw_acls Die UUIDs der ACLs von Bearbeitern, Vertretern und Betrachtern. Bearbeiter und Vertreter sind damit immer auch Betrachter.
sys_acw_assignee Der Benutzer, dem der Schritt direkt zugewiesen ist. Die Funktion setzt ihn nur, wenn der bisherige Bearbeiter weiterhin zu den Bearbeitern gehört oder wenn alle Bearbeiter zusammen genau einen Benutzer ergeben. In allen anderen Fällen ist die Variable leer.
sys_acw_assignees Die numerischen ACL-IDs der Bearbeiter
sys_acw_attachmentPermissionAll, sys_acw_attachmentPermissionCheckout, sys_acw_attachmentPermissionProtected, sys_acw_attachmentPermissionRead, sys_acw_attachmentPermissionWrite Die UUIDs der Gruppen mit der jeweiligen Berechtigung auf die Anhänge. Gibt es zu einer Berechtigung keine Teilnehmer, entfernt die Funktion die Variable.
sys_acw_internal.assignees, sys_acw_internal.substitutes, sys_acw_internal.viewers Die Teilnehmer mit id und attachmentPermission. Daraus liest getAssignment.
sys_acw_substitutes Die numerischen ACL-IDs der Vertreter

Attachment-Berechtigungen

Beim Zuweisen von Teilnehmern können Sie über die Eigenschaft attachmentPermission festlegen, welche Berechtigungen der Teilnehmer auf die Workflow-Anhänge erhält. Folgende Werte sind möglich. Die Groß- und Kleinschreibung spielt keine Rolle. Die Funktion ignoriert einen unbekannten Wert ohne Fehlermeldung, der Teilnehmer erhält dann keine der Berechtigungen.

Wert Beschreibung
read Lesezugriff auf Anhänge (Standard, wenn nicht angegeben)
write Schreibzugriff auf Anhänge
checkout Auschecken von Anhängen erlaubt
protected Geschützter Zugriff auf Anhänge
all Vollzugriff auf Anhänge

Teilnehmer-Format

Teilnehmer können in zwei Formaten angegeben werden:

// Als String (Standard: attachmentPermission = 'read')
'group:GRP_Demo'

// Als Objekt mit expliziter Berechtigung
{
  id: 'group:GRP_Demo',
  attachmentPermission: 'write'
}

Hinweis: Teilnehmer müssen Benutzer- oder Gruppenobjekte sein, sonst wirft assign einen Fehler. Wird ein einzelner Benutzer angegeben, wird intern automatisch eine Gruppe für diesen Benutzer erstellt (mit dem Namensschema GRP_acw_<UUID>).

Beispiel

/* global sc, sca, token, instance, outlets, inlet, parameters */

// Laden der assignment-Bibliothek 
let assignment = require('/agorum/roi/customers/acworkflow/js/common/assignment');

// Laden weiterer Bibliotheken
let objects = require('common/objects');

assignment.assign(token, {
  assignees: [
    // assignees: [{ attachmentPermission: 'read', id: 'group:GRP_Demo' }]
    'group:GRP_Demo',
    {
      attachmentPermission: 'write',
      id: 'group:d4wdr'
    }
  ],
  // substitutes werden zurückgesetzt
  substitutes: [],
  // viewers bleiben erhalten (nicht angegeben)
  //viewers: [],
  // ohne diese Kennung verwirft die Legacy-Logik substitutes
  version_interaction_assign: 1,
});

console.log(assignment.getAssignment(token));
// {"viewers":[],"substitutes":[],"assignees":[{"attachmentPermission":"read","id":"group:GRP_Demo"},{"attachmentPermission":"write","id":"group:d4wdr"}]}

// direkt einem Benutzer zuweisen
token.variables.sys_acw_assignee = objects.find('user:demo').UUID;

// Zuweisung zu Benutzer entfernen
//delete token.variables.sys_acw_assignee;

// Sendet das Token über das Standard-Outlet
token.leave('');