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 ueber externe Datenquelle
Fuer dynamische Zuweisungen kann der Resolver auch externe Datenquellen abfragen:
import { Engine, UserTaskInstance } from '@5minds/processcube_engine_sdk';
export function onLoad(engineObject: Engine) {
engineObject.registerUserTaskAssignmentResolver(
async (userTaskInstance: UserTaskInstance): Promise<Array<string>> => {
const users = await engineObject.iam.getUsersForClaim(
`can_handle:${userTaskInstance.flowNodeId}`
);
return users.map((user) => user.id);
}
);
}Der Resolver wird fuer jeden User Task aufgerufen. Stellen Sie sicher, dass die Logik performant ist, insbesondere bei externen Datenquellen.
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 |