Skip to Content
EngineErweiterungenUser Task Assignment

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

ParameterTypBeschreibung
userTaskInstance.processModelIdstringID des BPMN-Prozessmodells
userTaskInstance.flowNodeIdstringID des User Task FlowNodes
userTaskInstance.processInstanceIdstringID der Prozessinstanz
RueckgabeArray<string>Benutzernamen, die den Task bearbeiten duerfen