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.