User Tasks
User Tasks ermöglichen die Interaktion mit Benutzern in BPMN-Prozessen.
Grundlegendes Beispiel
import { Client } from '@processcube/client';
const client = new Client('http://localhost:8000');
async function handleUserTasks() {
// Alle wartenden User Tasks abrufen
const userTasks = await client.getUserTasks({
processKey: 'OrderProcess',
state: 'suspended',
});
const task = userTasks[0];
console.log(`User Task: ${task.id}`);
console.log(`Name: ${task.name}`);
console.log(`Form Fields: ${JSON.stringify(task.formFields)}`);
// User Task abschließen
const result = {
approved: true,
comment: 'Genehmigt durch Manager',
};
await client.finishUserTask(task.id, result);
console.log('User Task abgeschlossen');
}
handleUserTasks().catch(console.error);User Tasks abfragen
// Nach Prozess-Instanz filtern
const tasksForInstance = await client.getUserTasks({
processInstanceId: 'instance-123',
});
// Nach Prozess-Key filtern
const tasksForProcess = await client.getUserTasks({
processKey: 'OrderProcess',
state: 'suspended',
});Formular-Daten verarbeiten
const userTasks = await client.getUserTasks({
processKey: 'ApprovalProcess',
});
const task = userTasks[0];
// Form Fields anzeigen
task.formFields.forEach((field) => {
console.log(`${field.id}: ${field.label} (${field.type})`);
});
// Ergebnis erstellen
const result = {};
task.formFields.forEach((field) => {
result[field.id] = getValueFromUser(field); // Implementierung abhängig von UI
});
await client.finishUserTask(task.id, result);Best Practices
try {
const tasks = await client.getUserTasks({
processKey: 'OrderProcess',
});
if (tasks.length === 0) {
console.log('Keine wartenden User Tasks');
return;
}
for (const task of tasks) {
console.log(`Verarbeite Task: ${task.name}`);
await processUserTask(task);
}
} catch (error) {
console.error('Fehler bei User Tasks:', error.message);
}