wiki/b-reference/platform/workflowAutomation.md

65 lines
3.4 KiB
Markdown

<!-- status: canonical -->
<!-- lastReviewed: 2026-06-07 -->
# 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`.
- **DB-Scoping:** `AutoWorkflow.mandateId` + `runAsPrincipal` (Owner). `targetFeatureInstanceId` + per-Node `FeatureInstanceRef` bleiben als Daten-Scope.
## Code-Pfade
| Schicht | Pfad |
|---------|------|
| Routen (mandatsweit) | `platform-core/modules/routes/routeWorkflowAutomation.py` |
| Models (kanonisch, L1) | `platform-core/modules/datamodels/datamodelWorkflowAutomation.py` |
| Navigation-Sektion | `platform-core/modules/datamodels/datamodelNavigation.py` (Block `workflowAutomation`) |
| Feature-Mantel (deprecated) | `platform-core/modules/features/graphicalEditor/` |
| Graph-Engine | `platform-core/modules/workflows/automation2/` |
| Scheduler | `platform-core/modules/workflows/scheduler/` |
| Frontend | `ui-nyla/src/pages/WorkflowAutomationPage.tsx` |
## API
**Basis-Pfad:** `/api/workflow-automation/`
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| GET | `/workflows` | Workflows mandatsweit (RBAC-gefiltert) |
| GET | `/workflows/{id}` | Einzelner Workflow |
| GET | `/versions/{workflowId}` | Versionen eines Workflows |
| GET | `/runs` | Läufe mandatsweit |
| GET | `/runs/{id}` | Einzelner Run |
| GET | `/tasks` | Human-Tasks mandatsweit |
| POST | `/tasks/{id}/complete` | Task abschliessen |
| GET | `/steps/{runId}` | Step-Logs eines Runs |
| DELETE | `/workflows/{id}` | Workflow + Cascade löschen |
| DELETE | `/runs/{id}` | Run + Steps löschen |
## Navigation
Statischer Block `workflowAutomation` (order 25) mit UI-Objekten:
- `page.system.workflowAutomation.workflows`
- `page.system.workflowAutomation.editor`
- `page.system.workflowAutomation.templates`
- `page.system.workflowAutomation.runs`
- `page.system.workflowAutomation.tasks`
## Migration
Feature-Routen `/api/workflows/{instanceId}/…` bleiben aktiv (Koexistenz). Die GE-Feature-Registrierung (Store, `TEMPLATE_ROLES`, `UI_OBJECTS`) ist DEPRECATED, wird aber für bestehende Instanzen noch ausgeliefert. Vollständige Entfernung des Feature-Mantels erfolgt nach Abschluss der Datenmigration.
## 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`