Engine Nodes
@5minds/node-red-contrib-processcube — Native Engine-Integration mit 23 Nodes für BPMN-Workflows, UserTasks, External Tasks, Events und Queries.
Engine-Konfiguration
processcube-engine-config
Zentraler Konfigurationsnode für die Verbindung zur Engine. Wird von allen anderen Engine-Nodes referenziert.
| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
url | string | http://engine:8000 | Engine-URL |
clientId | string | — | OAuth Client-ID |
clientSecret | string | — | OAuth Client-Secret |
scope | string | engine_etw engine_read engine_write engine_observer | OAuth Scopes |
Alle Eigenschaften unterstützen Umgebungsvariablen (env-Typ).
Prozess-Nodes
process-start
Startet eine neue Prozessinstanz in der Engine.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
processmodel | Prozessmodell-ID |
startevent | Start-Event-ID |
correlationId | Korrelations-ID |
Input:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload | Object | Initiales Token für den Prozess |
msg.processModelId | string | Überschreibt konfigurierte Prozessmodell-ID |
msg.startEventId | string | Überschreibt konfiguriertes Start-Event |
msg.correlationId | string | Überschreibt konfigurierte Korrelations-ID |
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.processInstanceId | string | ID der gestarteten Prozessinstanz |
msg.payload.correlationId | string | Korrelations-ID |
Beispiel:
[Trigger] → [process-start] → [Debug]
↑
ProcessModel: "Bestellung_v1"
StartEvent: "StartEvent_1"process-terminate
Beendet eine laufende Prozessinstanz.
Input:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload | string | Prozessinstanz-ID |
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload | string | ID der beendeten Prozessinstanz |
UserTask-Nodes
usertask-input
Fragt UserTasks aus der Engine ab und sendet sie als Messages.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
query | Query-Objekt (msg oder JSON) |
sendtype | Ergebnisformat: array, multi oder first |
Sendetypen:
array— Alle UserTasks als Array in einer Messagemulti— Separate Message pro UserTaskfirst— Nur den ersten UserTask
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.userTasks | Array | UserTask-Array (bei array) |
msg.payload.userTask | Object | Einzelner UserTask (bei first/multi) |
usertask-output
Beendet einen UserTask und sendet das Ergebnis an die Engine.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
result | Ergebnis-Objekt (msg oder JSON) |
Input:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.userTask.flowNodeInstanceId | string | FlowNodeInstance-ID des UserTasks |
wait-for-usertask
Wartet auf neue UserTasks der Engine und gibt sie aus.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
query | Query-Filter (msg oder JSON) |
only_for_new | Nur auf neue UserTasks warten (bestehende ignorieren) |
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.userTask | Object | Der gefundene UserTask |
usertask-event-listener
Horcht auf UserTask-Events der Engine.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
usertask | Optional: Filter auf bestimmte UserTask-ID |
eventtype | Event-Typ: new, finished, reserved, reservation-canceled |
query | Zusätzlicher Query-Filter |
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.flowNodeInstanceId | string | UserTask-Instanz-ID |
msg.payload.userTaskEvent | Object | Event-Daten |
msg.payload.userTask | Object | UserTask-Objekt |
msg.payload.action | string | Ausgelöstes Event |
msg.payload.type | string | "usertask" |
Beispiel UserTask-Flow:
[usertask-event-listener] → [usertask-input] → [Dynamic Form] → [usertask-output]
(event: new) (sendtype: first) (result: msg.payload)External Task-Nodes
externaltask-input
Wartet auf External Tasks eines bestimmten Topics.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
topic | Topic des External Tasks |
workername | Optionaler Worker-Name |
workerConfig | Worker-Konfiguration (JSON) |
Worker-Konfiguration:
| Feld | Typ | Beschreibung |
|---|---|---|
workerId | string | Worker-ID |
lockDuration | number | Lock-Dauer in ms |
maxTasks | number | Max. gleichzeitige Tasks |
longpollingTimeout | number | Long-Polling-Timeout |
payloadFilter | Regex | Payload-Filter |
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload | any | Task-Payload |
msg.task | Object | External Task-Objekt |
msg.flowNodeInstanceId | string | FlowNodeInstance-ID |
msg.processInstanceId | string | Prozessinstanz-ID |
externaltask-output
Beendet einen External Task erfolgreich.
Input:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload | Object | Ergebnis für die Engine |
msg.flowNodeInstanceId | string | FlowNodeInstance-ID |
externaltask-error
Meldet einen Fehler bei der Verarbeitung eines External Tasks.
Input:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.error / msg.errorCode | string | Fehlercode |
msg.errorMessage / msg.error.message | string | Fehlermeldung |
msg.flowNodeInstanceId | string | FlowNodeInstance-ID |
Der Fehlercode wird an Error-Boundary-Events in der Engine weitergeleitet.
externaltask-event-listener
Horcht auf External Task-Events.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
externaltask | Optional: Filter auf bestimmte External Task-ID |
eventtype | Event-Typ: created, locked, unlocked |
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.flowNodeInstanceId | string | FlowNodeInstance-ID |
msg.payload.externalTaskEvent | Object | Event-Daten |
msg.payload.action | string | Ausgelöstes Event |
msg.payload.type | string | "externaltask" |
Beispiel External Task-Flow:
[externaltask-input] → [Function: Verarbeitung] → [externaltask-output]
(topic: "email") (result: msg.payload)
↓ (bei Fehler)
[externaltask-error]
(errorCode: "SEND_FAILED")Event-Nodes
process-event-listener
Horcht auf Prozess-Events der Engine.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
processmodel | Optional: Filter auf Prozessmodell |
eventtype | Event-Typ (siehe unten) |
query | Zusätzlicher Query-Filter |
Verfügbare Event-Typen:
starting— Prozess wird gestartetstarted— Prozess wurde gestartetresumed— Prozess wurde fortgesetztfinished— Prozess wurde beendetterminated— Prozess wurde abgebrochenerror— Fehler im Prozessowner-changed— Besitzer geändertinstances-deleted— Instanzen gelöschtis-executable-changed— Ausführbarkeit geändertdeployed— Prozess deployedundeployed— Prozess undeployed
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.processInstanceId | string | Prozessinstanz-ID |
msg.payload.processModelId | string | Prozessmodell-ID |
msg.payload.token | Object | Prozess-Token |
msg.payload.action | string | Ausgelöstes Event |
msg.payload.type | string | "processInstance" oder "processModel" |
endevent-finished-listener
Horcht auf beendete End-Events.
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.correlationId | string | Korrelations-ID |
msg.payload.processInstanceId | string | Prozessinstanz-ID |
msg.payload.flowNodeId | string | FlowNode-ID |
msg.payload.flowNodeName | string | FlowNode-Name |
msg.payload.flowNodeInstanceId | string | FlowNodeInstance-ID |
msg.payload.currentToken | Object | Aktuelles Token |
message-event-trigger
Triggert ein Intermediate Message Event in der Engine.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
messagename | Name des Message-Events |
Input:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload | Object | Neues Token für das Message-Event |
msg.processinstanceid | string | Prozessinstanz-ID |
signal-event-trigger
Sendet ein Signal-Event an die Engine.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
signalname | Name des Signals |
Input:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload | Object | Neues Token für das Signal-Event |
msg.processinstanceid | string | Prozessinstanz-ID |
Query-Nodes
processinstance-query
Fragt Prozessinstanzen ab.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
query | Query-Objekt (msg oder JSON) |
limit | Max. Ergebnisse |
offset | Start-Index |
Query-Filter:
| Feld | Typ | Beschreibung |
|---|---|---|
correlationId | string/Array | Korrelations-ID |
processInstanceId | string/Array | Prozessinstanz-ID |
processModelId | string/Array | Prozessmodell-ID |
state | string/Array | Status |
ownerId | string/Array | Besitzer |
createdBefore/At/After | string | Erstellungsdatum |
updatedBefore/At/After | string | Aktualisierungsdatum |
finishedBefore/At/After | string | Abschlussdatum |
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.processInstances | Array | Prozessinstanzen |
msg.payload.totalCount | number | Gesamtanzahl |
processdefinition-query
Fragt Prozessdefinitionen ab.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
query | Query-Objekt |
models_only | Nur Modelle statt vollständiger Definitionen |
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.processDefinitions | Array | Prozessdefinitionen (oder models bei models_only) |
msg.payload.totalCount | number | Gesamtanzahl |
dataobject-instance-query
Fragt Datenobjekt-Instanzen ab.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
query | Query-Objekt |
onlyNewest | Nur neueste Instanz pro DataObject |
Query-Filter:
| Feld | Typ | Beschreibung |
|---|---|---|
dataObjectId | string/Array | DataObject-ID |
processInstanceId | string/Array | Prozessinstanz-ID |
processModelId | string/Array | Prozessmodell-ID |
flowNodeInstanceId | string/Array | FlowNodeInstance-ID |
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.dataObjectInstances | Array | Datenobjekt-Instanzen |
msg.payload.totalCount | number | Gesamtanzahl |
DevOps-Nodes
processdefinition-deploy
Deployt eine BPMN-Prozessdefinition in die Engine.
Input:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload | string | BPMN-XML-Inhalt |
processinstance-delete
Löscht alte Prozessinstanzen eines Modells.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
modelid | Prozessmodell-ID |
duration | Zeitspanne |
time_type | Einheit: hours oder days |
batch_size | Batch-Größe (Standard: 100, max: 1000) |
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload.successfulDeletions | Array | Erfolgreich gelöschte IDs |
msg.payload.failedDeletions | Array | Fehlgeschlagene Löschungen |
processinstance-delete-advanced
Erweiterte Löschung von Prozessinstanzen (Engine v19+).
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
engine | Engine-Konfiguration |
query | Query-Objekt |
delete_releated | Zugehörige Daten mitlöschen |
Query-Filter:
| Feld | Typ | Beschreibung |
|---|---|---|
processInstanceId | string | Prozessinstanz-ID |
processModelId | string | Prozessmodell-ID |
finishedBefore | datetime | Beendet vor Datum |
finishedAfter | datetime | Beendet nach Datum |
Autorisierung
check-authorization
Prüft, ob ein Benutzer bestimmte Claims besitzt.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
options | Liste von Claim-Objekten |
Input:
| Feld | Typ | Beschreibung |
|---|---|---|
msg._client.user.claims | Object | Benutzer-Claims |
Outputs:
- Output 1 — Benutzer ist autorisiert
- Output 2 — Benutzer ist nicht autorisiert
Tools
processcube-google-docs-mail-template
Rendert E-Mail-Templates aus Google Drive/Docs. Lädt ein ZIP-Archiv herunter, extrahiert HTML und Bilder, ersetzt Platzhalter und bereitet HTML mit Inline-Attachments vor.
Konfiguration:
| Eigenschaft | Beschreibung |
|---|---|
template_link | URL zum ZIP-Archiv oder Google Drive/Docs-Link |
Input:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload | Object | Felder für Platzhalter-Ersetzung ({{feld}} oder ///feld///) |
Output:
| Feld | Typ | Beschreibung |
|---|---|---|
msg.payload | string | Gerendertes HTML mit CID-Referenzen |
msg.attachments | Array | Nodemailer-kompatible Attachment-Objekte |
Node-Übersicht
| Kategorie | Node | Beschreibung |
|---|---|---|
| Prozess | process-start | Prozessinstanz starten |
| process-terminate | Prozessinstanz beenden | |
| UserTask | usertask-input | UserTasks abfragen |
| usertask-output | UserTask beenden | |
| wait-for-usertask | Auf UserTask warten | |
| usertask-event-listener | UserTask-Events empfangen | |
| External Task | externaltask-input | External Task empfangen |
| externaltask-output | External Task beenden | |
| externaltask-error | External Task-Fehler melden | |
| externaltask-event-listener | External Task-Events empfangen | |
| Events | process-event-listener | Prozess-Events empfangen |
| endevent-finished-listener | End-Events empfangen | |
| message-event-trigger | Message-Event auslösen | |
| signal-event-trigger | Signal-Event auslösen | |
| Queries | processinstance-query | Prozessinstanzen abfragen |
| processdefinition-query | Prozessdefinitionen abfragen | |
| dataobject-instance-query | Datenobjekte abfragen | |
| DevOps | processdefinition-deploy | Prozessdefinition deployen |
| processinstance-delete | Prozessinstanzen löschen | |
| processinstance-delete-advanced | Erweiterte Löschung (v19+) | |
| Auth | check-authorization | Claims prüfen |
| Tools | google-docs-mail-template | E-Mail-Template rendern |
| Config | processcube-engine-config | Engine-Verbindung |
Nächste Schritte
- Runtime Extensions — Health Checks und Monitoring
- Dynamic Form — UserTask-Formulare erstellen
- MCP Integration — Engine-Prozesse als AI-Tools bereitstellen