User Task Assignment
Die User Task Assignment Extension ermoeglicht es, die Zuweisung von User Tasks an Benutzer durch eigene Logik zu steuern.
Funktionsweise
Standardmaessig uebernimmt die Engine die Zuweisung von User Tasks basierend auf BPMN-Lanes. Mit dieser Extension kann diese Logik ueberschrieben werden.
Grundlegendes Beispiel
import { Engine, UserTaskInstance } from '@5minds/processcube_engine_sdk';
export function onLoad(engineObject: Engine) {
engineObject.registerUserTaskAssignmentResolver(
(userTaskInstance: UserTaskInstance): Array<string> => {
return ['defaultUser'];
}
);
}Zuweisung basierend auf Prozessdaten
Der Resolver erhaelt die vollstaendige UserTaskInstance und kann anhand der Prozessdaten entscheiden:
import { Engine, UserTaskInstance } from '@5minds/processcube_engine_sdk';
export function onLoad(engineObject: Engine) {
engineObject.registerUserTaskAssignmentResolver(
(userTaskInstance: UserTaskInstance): Array<string> => {
const processModelId = userTaskInstance.processModelId;
const flowNodeId = userTaskInstance.flowNodeId;
if (processModelId === 'Approval_Process' && flowNodeId === 'ManagerApproval') {
return ['manager1', 'manager2'];
}
if (processModelId === 'Support_Process') {
return ['support-team'];
}
return ['defaultUser'];
}
);
}Zuweisung über vorab geladene Daten
Der Resolver ist synchron — sein Typ ist (userTaskInstance: UserTaskInstance) => Array<string>.
Er darf kein Promise zurückgeben, async/await im Resolver wird nicht
unterstützt. Externe Datenquellen (z.B. eine Rollen-/Benutzerzuordnung) müssen
daher vorab (etwa in onLoad) geladen und im Resolver nur noch synchron
nachgeschlagen werden.
import { Engine, UserTaskInstance } from '@5minds/processcube_engine_sdk';
// Zuordnung vorab (z.B. beim Start) laden und im Resolver synchron nachschlagen
const assignmentsByFlowNode: Record<string, Array<string>> = {
ManagerApproval: ['manager1', 'manager2'],
SupportTask: ['support-team'],
};
export function onLoad(engineObject: Engine) {
engineObject.registerUserTaskAssignmentResolver(
(userTaskInstance: UserTaskInstance): Array<string> => {
return assignmentsByFlowNode[userTaskInstance.flowNodeId] ?? ['defaultUser'];
}
);
}Der Resolver wird fuer jeden User Task aufgerufen. Halten Sie die Logik performant und vermeiden Sie blockierende Aufrufe.
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
userTaskInstance.processModelId | string | ID des BPMN-Prozessmodells |
userTaskInstance.flowNodeId | string | ID des User Task FlowNodes |
userTaskInstance.processInstanceId | string | ID der Prozessinstanz |
| Rueckgabe | Array<string> | Benutzernamen, die den Task bearbeiten duerfen |