AI-Agenten als External Task: die Agent Runtime an der Engine anschließen
Ein BPMN-Prozess, der an einer Stelle eine KI braucht — eine Frage beantworten, einen Text prüfen, einen Bug analysieren. Der naheliegendste Weg wäre Glue-Code: ein eigener Worker, der die KI-API aufruft. Mit der ProcessCube Agent Runtime geht es ohne: Ein Engine-Plugin macht jeden OpenClaw-Agenten zum External-Task-Worker. Im Diagramm ist der Agent dann eine ganz normale ServiceTask mit einem Topic — die Engine merkt keinen Unterschied.
In Entwicklung. Die Agent Runtime und das Engine-Plugin sind Teil der
Preview-Phase (1.1.0-develop.x). Schnittstellen, Payload-Schemas und
Verhalten können sich vor dem ersten Stable-Release noch ändern.
Nicht der LowCode-Weg. Dieser Artikel beschreibt die
External-Task-Anbindung über das Engine-Plugin processcube-engine. Der Weg
über die LowCode-Nodes (openclaw-message-send per WebSocket-Gateway) ist ein
eigener, paralleler Pfad — den zeigen
Agent Runtime in 15 Minuten und
OpenClaw-Agenten aus LowCode. Beide Wege sprechen
dieselbe Runtime an, aber über verschiedene Mechanismen.
Wie es funktioniert
Im Agent-Runtime-Image steckt das OpenClaw-Channel-Plugin processcube-engine.
Für jedes konfigurierte Topic startet es einen eigenen ExternalTaskWorker (aus
dem Engine-Client), der Tasks per Fetch-and-Lock von der Engine
holt. Welcher Agent den Task bearbeitet, entscheidet ein Binding: Das Topic
wird auf eine Agent-ID aufgelöst, der Agent erhält den Task-Payload als Nachricht
und seine Antwort finalisiert die ServiceTask.
Für die Topics hat sich eine einfache Konvention bewährt:
ai.<prozess>.<rolle> — etwa ai.demo.frage oder
ai.bug-fixen.seniordeveloper. So ist am Topic ablesbar, welcher Prozess
welche Rolle anspricht, und jede Rolle kann auf einen anderen Agenten gebunden
werden.
Einrichten Schritt für Schritt
Vorausgesetzt wird eine laufende Agent Runtime mit aktiviertem KI-Backend — das Setup dafür zeigt der Einstiegs-Artikel bzw. die Erste Einrichtung.
Plugin an die Engine binden
Das Plugin ist im Image bereits installiert und registriert — es braucht nur noch die Engine-Verbindung:
pc-runtime plugin bind --engine-url http://engine:10560 --token <root-access-token>
docker compose restart
pc-runtime plugin status # erwartet: registriert + geladen + gebundenLäuft die Engine in einem eigenen Compose-Stack, verbindet ein gemeinsames
Docker-Netz (pc-shared) die beiden — wie im
Einstiegs-Artikel
beschrieben.
Topic und Binding konfigurieren
Pro Topic ein Worker, pro Binding ein Agent. Beides landet in der
OpenClaw-Konfiguration (~/.openclaw/openclaw.json) — am einfachsten per
config patch:
echo '{
"channels": {
"processcube-engine": {
"tasks": { "topics": ["ai.demo.frage"] }
}
},
"bindings": [
{
"agentId": "demo-worker",
"match": { "channel": "processcube-engine", "accountId": "ai.demo.frage" }
}
]
}' | openclaw config patch --stdin
docker compose restartNach dem Neustart zeigt das Gateway-Log pro Topic einen gestarteten Worker:
[processcube-engine:tasks] ExternalTaskWorker started — engineUrl=http://engine:10560 topic=ai.demo.frageServiceTask im BPMN modellieren
Im Diagramm ist der Agent eine ServiceTask vom Typ external mit dem Topic —
der Payload kommt als camunda:property mit, wahlweise statisch oder aus dem
Prozess-Token:
<bpmn:serviceTask id="frageStellen" name="Frage stellen"
camunda:type="external" camunda:topic="ai.demo.frage">
<bpmn:extensionElements>
<camunda:properties>
<camunda:property name="payload" value="token.current" />
</camunda:properties>
</bpmn:extensionElements>
</bpmn:serviceTask>Deployen und starten
Ab hier ist es Engine-Alltag — zum Beispiel über die CLI:
pc engine deploy ./processes/demo.bpmn
pc engine start ai_demo_process StartEvent_1 \
--start-token '{"aufgabe": "Was ist die Hauptstadt von NRW?"}'Die Engine legt den External Task an, der Worker holt ihn ab, der Agent antwortet — und die Prozess-Instanz läuft mit dem Ergebnis weiter.
Payload und Result
Zwischen Engine und Agent ist ein schlankes JSON-Schema (schemaVersion "0.1")
vereinbart. Der Agent bekommt die Aufgabe samt Prozess-Kontext:
type AgentPayload = {
schemaVersion: '0.1';
task: string;
process: { id: string; instanceId: string; activityId?: string };
context?: Record<string, unknown>;
references?: { project?: string; repo?: string; stageUrl?: string };
meta?: { deadline?: string };
};Zurück kommt ein strukturiertes Ergebnis — kein Freitext:
type AgentResult = {
schemaVersion: '0.1';
status: 'ok' | 'needs_clarification' | 'blocked' | 'error';
summary: string;
outputs?: Record<string, unknown>; // wird zu Prozessvariablen
openQuestions?: string[];
nextHints?: string[];
};Drei Eigenschaften machen das BPMN-tauglich:
outputswerden Prozessvariablen — nachfolgende Tasks und Gateways arbeiten direkt mit dem Agenten-Ergebnis weiter.status: "error"wird zumExternalTaskError— im Diagramm fängt ihn ein ganz normales Boundary-Event ab.- Antwortet der Agent ohne verwertbaren Text, erzeugt das Plugin ein
needs_clarification-Fallback statt eines harten BPMN-Errors — der Prozess kann damit kontrolliert umgehen, etwa über einen User Task.
Stolpersteine
- Token roh übergeben. Der
rootAccessTokenwird ohneBearer-Prefix konfiguriert — den hängt der Engine-Client selbst an. Mit Prefix quittiert die Engine mitjwt malformed. - Ein Worker pro Topic. Ein leeres
tasks.topicsbedeutet: kein Worker, keine Abholung. Nach jeder Topic-Änderung das Gateway neu starten und im Log dieExternalTaskWorker started-Zeilen prüfen. - Sessions sind pro Task isoliert. Jeder External Task bekommt eine eigene Agent-Session — Kontext zwischen Tasks fließt über Prozessvariablen, nicht über den Chat-Verlauf.
Fazit
Die External-Task-Anbindung macht KI-Agenten zu erstklassigen Prozess-Teilnehmern: Im BPMN bleiben sie gewöhnliche ServiceTasks mit Topic, Fehlerbehandlung läuft über Boundary-Events, Ergebnisse landen als Prozessvariablen im Token. Kein Glue-Code, kein eigener Worker-Prozess — Topic konfigurieren, Agent binden, modellieren.
Weiterführend
- Agent Runtime (Referenz) — Engine-Plugin, Befehle, Volumes
- Erste Einrichtung — Backend-Login und Setup Schritt für Schritt
- External Tasks — Fetch-and-Lock, Worker und Konfiguration im Detail
- Agent Runtime in 15 Minuten — Runtime-Setup mit Subscription-Login
- OpenClaw-Agenten aus LowCode — der alternative Weg über die LowCode-Nodes