Hallo Tobias Stihl,
mit DW Bordmitteln in der 7.9 fällt mir hier nur eine Lösung ein, die allerdings voraussetzt, dass kein User Mitglied in mehr als einer von diesen drei Rollen ist und dass Sie ein on-premise System verwenden.
die parallele Aufgabe wird allen 3 Rollen zugewiesen über eine GV_Rollen.
In der Datenzuweisung, die nach Bestätigung der Aufgabe ausgeführt wird, werden mehrere SQL Statements genutzt, um herauszufinden, in welcher Rolle der User, der die Aufgabe bestätigt hat, angehörig ist.
Alle SQL Abfragen gehen auf die DWSYSTEM Datenbank (Standardmäßig als "Authentication" Verbindung angelegt).
Zuerst benötigen wir die uid aus der Tabelle DWUSERS:
SELECT uid FROM DWUSER WHERE name = '<User der die Aufgabe ausgeführt hat>';
Die UID wird in einer GV_UID (numerisch) zwischengespeichert.
damit können wir mit folgendem Statement die Rollen-IDs abrufen von allen Rollen in denen der User Mitglied ist.
SELECT rid from DWUSERTOROLE WHERE uid = GV_UID;
mit den Rollen-IDs können wir die Namen der Rollen abrufen:
SELECT name FROM DWROLE WHERE rid = GV_RID;
jetzt kennen wir den Namen der Rollen, in denen der User Mitglied ist. Damit können wir mit einem arithmetischen Ausdruck wie z.b. "Filter" die Rolle aus unserer ursprünglichen Liste der drei Rollen entfernen.
Die Abbruchbedingung der Aufgabe kann sich dann auf diese Liste beziehen, sobald diese leer ist, geht der WF weiter.
Alternativ kann auch eine normale Aufgabe verwendet werden, die Datenzuweisungen erfolgen nach der Aufgabe und mit einer Bedingung wird abgeprüft ob die Aufgabe erneut gestartet wird (mit weniger Rollen als Ziel) oder der WF weitergeht.
Die SQL Statements von oben lassen sich auch sehr gut in einer View mit Joins zusammenfassen, ungefähr so:
SELECT user.name, role.name, role.id, user.id
FROM DWUSER AS user
INNER JOIN DWUSERTOROLE ON DWUSER.uid = DWUSERTOROLE.rid AS userToRole
INNER JOIN DWROLE ON DWUSERTOROLE.rid = DWROLE.rid AS role
WHERE user.name = '<User der die Aufgabe ausgeführt hat>';
Ich hoffe, das hilft Ihnen etwas weiter.
Es kann gut sein, dass nicht alles oben 100% korrekte Syntax ist. Ich habe das nicht getestet sondern aus dem Kopf geschrieben, aber vor ein paar Jahren schon mal so ähnlich umgesetzt.
Gruß aus Neuss,
Simon H. Hellmann
DocuWare System Consultant