Zum Inhalt springen

Pluggable Activity Types

Ein Flow ist ein Graph aus Knoten. Die meisten Knoten führen eine WASM-Komponente in-process aus, aber einige Knoten geben die Arbeit an eine separate Runtime ab — SoRLa, OperaLa und (in Zukunft) andere — und warten auf das Ergebnis. Dies sind Activity Types: native Flow-Knoten, deren Aufgabe es ist, an eine externe Runtime über den Messaging-Bus zu verteilen.

Heute liefert die Plattform diese Dispatch-Activity-Typen aus:

KnotenVerteilt anStatus
sorla.calldie SoRLa-RuntimeLive
operala.calldie OperaLa-RuntimeLive
telco-x.calleine telco-x-RuntimeVerdrahtet, inaktiv bis eine Runtime existiert

Ein Dispatch-Knoten führt selbst keine Geschäftslogik aus. Er verpackt die Eingabe des Knotens, veröffentlicht eine Anfrage an die Runtime über NATS und entweder:

  • wartet auf die Antwort (der Flow pausiert und wird fortgesetzt, wenn das Ergebnis eintrifft), oder
  • feuert und vergisst (der Flow läuft sofort weiter).

Alle Dispatch-Knoten teilen sich einen Mechanismus — denselben Request/Response-Vertrag und dieselbe Korrelationsbehandlung —, sodass sie sich konsistent verhalten, unabhängig davon, auf welche Runtime sie abzielen.

Der Flow-Builder des Designers verankert seine Palette in einem Capability-Katalog. Jeder Activity-Typ erscheint in diesem Katalog als verteilbare Capability, was bedeutet, dass der KI-Flow-Builder einen sorla.call- oder operala.call-Knoten platzieren kann, wenn ein Benutzer Arbeit beschreibt, die zu einer dieser Runtimes gehört — genauso, wie er jeden anderen Knoten platziert.

Das Designziel ist, dass ein brandneuer Activity-Typ fast nichts kostet, um ihn hinzuzufügen:

  1. Ein Katalogeintrag im Basis-Capability-Katalog des Designers, markiert als Dispatch-Capability. Dies macht den Knoten für den KI-Flow-Builder auffindbar.
  2. Eine Zeile im Runner, die den Knoten als native Dispatch-Operation erkennt.

Der Runner weiß bereits, wie er jeden Dispatch-Knoten generisch ausführt, sodass kein neuer Ausführungscode benötigt wird — der Knoten zielt einfach auf einen anderen Runtime-Namen ab. Wenn diese Runtime später bereitgestellt wird, wird der zuvor inaktive Knoten ohne weitere Änderungen aktiv.