Skip to Content

Prozess starten und Ergebnis verwenden

Ein Startaufruf gibt eine ProcessStartResponse zurück. Damit kannst du eine Instanz wiederfinden oder, beim Warten auf ein Endevent, das Prozessergebnis lesen.

1. Prozess starten

import { EngineClient } from '@5minds/processcube_engine_client'; const client = new EngineClient('http://localhost:10560'); type BestellungToken = { bestellnummer: string }; const start = await client.processModels.startProcessInstance<BestellungToken>({ processModelId: 'Bestellung', initialToken: { bestellnummer: 'B-1042' }, }); const processInstanceId = start.processInstanceId;

processModelId ist die ID des deployten Modells. initialToken enthält die Fachwerte, die dein Prozess erwartet. startEventId brauchst du, wenn das Modell mehrere Start-Events hat. Eine correlationId kannst du selbst mitgeben; sonst erzeugt die Engine eine.

Die sofortige Antwort enthält mindestens die beiden IDs:

{ "processInstanceId": "pi-1042", "correlationId": "cor-1042" }

processInstanceId identifiziert diese Ausführung. correlationId verbindet zusammengehörige Instanzen. Der sofortige Start liefert noch kein tokenPayload als Endergebnis.

2. Instanz abfragen

const { processInstances, totalCount } = await client.processInstances.query({ processInstanceId, }); const instance = processInstances[0]; if (instance) { const state = instance.state; // running, finished, error oder terminated }

ProcessInstanceList enthält processInstances und totalCount. Eine ProcessInstance trägt unter anderem processInstanceId, processModelId, correlationId und state; endToken ist erst nach einem passenden Abschluss verfügbar. Eine Abfrage kann auch keine Treffer liefern, deshalb prüft das Beispiel instance.

3. Auf das Endergebnis warten

const completed = await client.processModels.startProcessInstanceAndAwaitEndEvent({ processModelId: 'Bestellung', initialToken: { bestellnummer: 'B-1043' }, }); if (completed.tokenPayload) { // Die Fachfelder hängen vom BPMN-Prozess ab. const result = completed.tokenPayload; }

Bei diesem Aufruf wartet die Engine auf das erste Endevent. Die Antwort kann dann endEventId und tokenPayload enthalten. Für ein bestimmtes Ende gibt es startProcessInstanceAndAwaitSpecificEndEvent(options, endEventId). Ein Prozess, der auf eine User Task oder ein externes System wartet, hält auch diesen HTTP-Aufruf offen; für solche Abläufe ist der sofortige Start mit späterer Abfrage meist passender.

Typgrenze: ProcessStartOptions<TToken> typisiert die Eingabe. ProcessStartResponse.tokenPayload ist im aktuellen SDK any; prüfe oder validiere dessen Fachfelder vor der Verwendung in deiner Anwendung.

Weiter: User Tasks anzeigen und abschließen. Sprachspezifische Aufrufe: TypeScript, Python, .NET.