Skip to Content
DocsClientsTypeScriptProcessesProzess-Instanz beenden

Prozess-Instanz beenden

Diese Seite zeigt, wie Sie laufende Prozess-Instanzen in der Engine terminieren.

Grundlegendes Beispiel

import { Client } from '@processcube/client'; const client = new Client('http://localhost:8000'); async function terminateInstance() { const processInstanceId = 'instance-123'; console.log('Terminiere Prozess-Instanz'); await client.terminateProcessInstance(processInstanceId); console.log('Prozess-Instanz wurde beendet'); } terminateInstance().catch(console.error);

Das Terminieren einer Prozess-Instanz kann nicht rückgängig gemacht werden! Der Prozess wird sofort gestoppt.

Verwendungszwecke

Fehlerhafte Prozesse stoppen

// Prozess-Instanzen im Error-Status finden und terminieren const errorInstances = await client.getProcessInstances({ processKey: 'OrderProcess', state: 'error', }); for (const instance of errorInstances) { console.log(`Terminiere fehlerhafte Instanz: ${instance.processInstanceId}`); await client.terminateProcessInstance(instance.processInstanceId); }

Timeout-basierte Terminierung

// Prozesse terminieren, die zu lange laufen const runningInstances = await client.getProcessInstances({ processKey: 'OrderProcess', state: 'running', }); const timeout = 24 * 60 * 60 * 1000; // 24 Stunden for (const instance of runningInstances) { const runningTime = Date.now() - instance.createdAt.getTime(); if (runningTime > timeout) { console.log(`Timeout: Terminiere ${instance.processInstanceId}`); await client.terminateProcessInstance(instance.processInstanceId); } }

Best Practices

Vor dem Terminieren prüfen

async function safeTerminate(processInstanceId: string) { // Prüfe, ob Instanz existiert und läuft const instances = await client.getProcessInstances({ processInstanceId }); const instance = instances[0]; if (!instance) { console.log('Instanz nicht gefunden'); return false; } if (instance.state !== 'running') { console.log(`Instanz ist nicht aktiv (Status: ${instance.state})`); return false; } // Terminieren await client.terminateProcessInstance(processInstanceId); console.log('Instanz terminiert'); return true; }

Fehlerbehandlung

try { await client.terminateProcessInstance(processInstanceId); console.log('Erfolgreich terminiert'); } catch (error) { if (error.code === 'INSTANCE_NOT_FOUND') { console.error('Prozess-Instanz existiert nicht'); } else if (error.code === 'ALREADY_TERMINATED') { console.error('Prozess-Instanz wurde bereits terminiert'); } else { console.error('Terminierung fehlgeschlagen:', error.message); } }

Batch-Terminierung

async function terminateMultiple(processInstanceIds: string[]) { const results = []; for (const id of processInstanceIds) { try { await client.terminateProcessInstance(id); results.push({ id, success: true }); } catch (error) { results.push({ id, success: false, error: error.message }); } } console.log(`Terminiert: ${results.filter((r) => r.success).length}/${results.length}`); return results; }

Cleanup nach Terminierung

async function terminateAndCleanup(processInstanceId: string) { // Terminiere Instanz await client.terminateProcessInstance(processInstanceId); // Optional: Aufräumen (z.B. Datenbank-Einträge) console.log('Cleanup durchgeführt'); }

Nächste Schritte