4.3 KiB
WorkflowAutomation (System-Komponente)
Überblick
WorkflowAutomation ist die mandanten- und feature-übergreifende Orchestrierungs-Infrastruktur der Plattform. Sie wurde aus dem ehemaligen Feature graphicalEditor extrahiert, da dieses keine Domänen-/Kundendaten hält, sondern ausschliesslich Orchestrierungs-Metadaten (AutoWorkflow, AutoRun, AutoTask) verwaltet und beim App-Start den globalen Scheduler bootet.
Warum System-Komponente: graphicalEditor war ein Hybrid — formal Feature mit FeatureInstance-RBAC, architektonisch aber System-Infrastruktur (eigene DB poweron_graphicaleditor, globaler Scheduler, cross-instance Workflows). Die Solution-Schicht (CustomerCases) verankert Ownership an Mandant + Principal; das Feature-Modell kollidiert damit.
Architektur
- System-Lifespan Boot: Scheduler- und Email-Poller-Start in
app.py(nicht mehr Feature-onStart). - Mandatsweite API:
/api/workflow-automation/{workflows,versions,runs,tasks,steps}— kein{instanceId}als RBAC-Anker. - RBAC-Modell: Mandats-Mitgliedschaft (read), Mandats-Admin (write/execute/delete),
isPlatformAdmin-Bypass. Keine Feature-Instanz-Rollen;instantiable=False.TABLE_NAMESPACE=system.workflowAutomation. - DB-Scoping:
AutoWorkflow.mandateId+runAsPrincipal(Owner).targetFeatureInstanceId+ per-NodeFeatureInstanceRefbleiben als Daten-Scope. - RBAC-Boot-Migration:
_migrateRbacNamespace()inonBootstrap()migriert bei jedem Start idempotent AccessRule-Einträge vonfeature.graphicalEditoraufsystem.workflowAutomation.
Code-Pfade
| Schicht | Pfad |
|---|---|
| Komponente (Entry) | platform-core/modules/workflowAutomation/mainWorkflowAutomation.py |
| Editor | platform-core/modules/workflowAutomation/editor/ |
| Engine | platform-core/modules/workflowAutomation/engine/ |
| Scheduler | platform-core/modules/workflowAutomation/scheduler/ |
| Routen (mandatsweit) | platform-core/modules/routes/routeWorkflowAutomation.py |
| Interface (DB-Ops) | platform-core/modules/interfaces/interfaceWorkflowAutomation.py |
| Shared Helpers | platform-core/modules/shared/workflowAutomationHelpers.py |
| Models (kanonisch, L1) | platform-core/modules/datamodels/datamodelWorkflowAutomation.py |
| Navigation-Sektion | platform-core/modules/datamodels/datamodelNavigation.py (Block workflowAutomation) |
| Frontend Hub | ui-nyla/src/pages/workflowAutomation/WorkflowAutomationHubPage.tsx |
| Frontend Tabs | ui-nyla/src/pages/workflowAutomation/tabs/{WorkflowsTab,RunsTab,RunDetailTab,EditorTab,TemplatesTab}.tsx |
| Frontend API Client | ui-nyla/src/api/workflowAutomationApi.ts |
API
Basis-Pfad: /api/workflow-automation/
| Methode | Pfad | Beschreibung |
|---|---|---|
| GET | /workflows |
Workflows mandatsweit (RBAC-gefiltert) |
| GET | /workflows/{id} |
Einzelner Workflow |
| POST | /workflows/{id}/execute |
Workflow ausführen |
| DELETE | /workflows/{id} |
Workflow + Cascade löschen |
| GET | /versions/{workflowId} |
Versionen eines Workflows |
| POST | /versions/{id}/publish |
Version publizieren |
| GET | /runs |
Läufe mandatsweit |
| GET | /runs/{id} |
Einzelner Run |
| GET | /runs/{id}/detail |
Run-Detail mit Steps |
| GET | /runs/{id}/stream |
SSE Run-Stream |
| POST | /runs/{id}/stop |
Run stoppen |
| DELETE | /runs/{id} |
Run + Steps löschen |
| GET | /tasks |
Human-Tasks mandatsweit |
| POST | /tasks/{id}/complete |
Task abschliessen |
| POST | /tasks/{id}/cancel |
Task abbrechen |
| GET | /steps/{runId} |
Step-Logs eines Runs |
| GET | /metrics |
Workflow-Metriken |
| GET | /node-types |
Node-Typ-Katalog |
| GET | /templates |
Workflow-Vorlagen |
| GET | /connections |
Verfügbare Connections |
Navigation
Statischer Block workflowAutomation (order 25) mit UI-Objekten:
page.system.workflowAutomation.workflowspage.system.workflowAutomation.editorpage.system.workflowAutomation.templatespage.system.workflowAutomation.runspage.system.workflowAutomation.tasks
Siehe auch
- Plan-Dokument:
c-work/2-build/2026-06-automation-system-component.md - RBAC:
b-reference/platform/rbac.md - Navigation:
b-reference/platform/navigation.md