User Tasks
Funktionen zur Abfrage, Reservierung und Abschluss von User Tasks.
Blocking vs. Non-Blocking: Einige Funktionen blocken, bis ein Event eintritt:
Funktion Blockiert? Use-Case waitForUserTask()Ja Server-seitig auf nächsten Task warten (Event-Sub) getWaitingUserTasks()Nein Polling, UI-Abfragen, Server Components getUserTasks()Nein Allgemeine Abfrage mit vollem Query-Objekt
import {
getWaitingUserTasks,
getUserTasks,
getWaitingUserTasksByProcessInstanceId,
getWaitingUserTaskByFlowNodeInstanceId,
waitForUserTask,
finishUserTaskAndGetNext,
reserveUserTask,
cancelReservedUserTask,
} from '@5minds/processcube_app_sdk/server';getWaitingUserTasks
Gibt alle wartenden User Tasks zurück.
const { userTasks, totalCount } = await getWaitingUserTasks();getWaitingUserTasksByProcessInstanceId
Filtert wartende User Tasks nach Prozessinstanz.
const { userTasks } = await getWaitingUserTasksByProcessInstanceId('process-instance-id');
// Auch mit Array von IDs
const { userTasks: multiple } = await getWaitingUserTasksByProcessInstanceId([
'id-1',
'id-2',
]);getWaitingUserTaskByFlowNodeInstanceId
Gibt eine einzelne wartende User Task nach FlowNode-Instanz-ID zurück (oder null).
const userTask = await getWaitingUserTaskByFlowNodeInstanceId('flow-node-instance-id');waitForUserTask
Wartet auf die nächste wartende User Task. Falls bereits eine existiert, wird sie sofort zurückgegeben.
// Auf beliebige User Task warten
const userTask = await waitForUserTask();
// Mit Filter
const filtered = await waitForUserTask({
processInstanceId: 'process-instance-id',
flowNodeId: 'UserTask_Approve',
});finishUserTaskAndGetNext
Schließt eine User Task ab und gibt die nächste wartende User Task zurück (falls vorhanden).
const nextTask = await finishUserTaskAndGetNext(
'flow-node-instance-id',
{ processInstanceId: 'process-instance-id' },
{ approved: true }
);reserveUserTask / cancelReservedUserTask
Reserviert eine User Task für einen bestimmten Benutzer oder hebt die Reservierung auf.
import {
reserveUserTask,
cancelReservedUserTask,
getIdentity,
} from '@5minds/processcube_app_sdk/server';
const identity = await getIdentity();
await reserveUserTask(identity, 'flow-node-instance-id');
// Reservierung aufheben
await cancelReservedUserTask(identity, 'flow-node-instance-id');Weitere Funktionen
| Funktion | Beschreibung |
|---|---|
getUserTasks(query, options?) | Generische Abfrage mit vollem Query-Objekt |
getWaitingUserTasksByFlowNodeId(flowNodeId, options?) | Filter nach BPMN-FlowNode-ID |
getWaitingUserTasksByCorrelationId(correlationId, options?) | Filter nach Correlation-ID |
getReservedUserTasksByIdentity(identity?, options?) | Vom aktuellen User reservierte Tasks |
getAssignedUserTasksByIdentity(identity?, options?) | Dem aktuellen User zugewiesene Tasks |
Identity-Parameter
Alle User-Task-Funktionen unterstützen einen identity-Parameter:
| Wert | Verhalten |
|---|---|
true (Default) | Nutzt die implizite User-Identity aus der NextAuth-Session |
false | Anonymer Zugriff — kein Auth-Header. Voraussetzung: Engine muss allowAnonymousRootAccess: true haben. |
Identity-Objekt | Explizite Identity (z.B. von getServerIdentity() oder getIdentity()) |
Ein Praxis-Beispiel für User Tasks mit dem AppTemplate findest du unter AppTemplate → UserTasks.