Aktionen
Du stößt im tibi-admin (Verwaltungs-Backend, Release Nova) eine Action an — z. B. Versand, Import oder Aufräum-Job. Du füllst Parameter aus, klickst Ausführen und liest das Ergebnis. Diese Seite beschreibt die Bedienung — das Schreiben von Actions steht unter Jobs und Actions.
Starten
Abschnitt betitelt „Starten“- Projekt öffnen, Sammlung Actions (Seitenleiste) wählen.
- Action anklicken — Route
/projects/:projekt/actions/:name. - Methode per Reiter wählen (
GEToderPOST; die Wahl steht auch als?method=in der URL). - Formular ausfüllen, Ausführen klicken.
- Ergebnis unterhalb lesen (Karte „Letztes Ergebnis“).
| Element | Verhalten |
|---|---|
| Methoden-Reiter | Nur GET/POST sind ausführbar (runnableMethods in ActionView.svelte); PUT/DELETE erscheinen höchstens als Ansicht, nicht als Startknopf |
| Ausführen-Knopf | Aktiv nur bei Startrecht und gültigem Formular; während der Ausführung dreht sich das Icon und der Knopf ist gesperrt |
| Upload-Toast | Enthält die Eingabe Datei-Bytes, zeigt der Admin einen Byte-Fortschritt (upload-progress) |
| Verlauf | Werkzeug-Menü (Schild-Icon) → Audit mit Filter collection=_actions/<name> |
Ausführung: kind, cancellable, Upload-Pfad
Abschnitt betitelt „Ausführung: kind, cancellable, Upload-Pfad“Jede Methode darf execution tragen (Schema: action.schema.json:274-288, eingebunden unter methods.<name>.execution):
meta: methods: post: execution: kind: "long-running" # freier String, nur Doku-Charakter cancellable: true # geplant, vom Admin aktuell nicht ausgewertet| Feld | Stand im Admin (Release Nova) |
|---|---|
execution.kind |
Freier String — der Admin wertet ihn nicht aus (kein kind-spezifischer Runner; ActionView.svelte kennt nur ausführbar vs. gesperrt) |
execution.cancellable |
Schema-seitig vorgesehen, im Frontend ohne Verwendung (kein Abbruch-Knopf; grep über frontend/src findet keine Auswertung) — lang laufende Actions brechen nur über SSE-Ende oder Netzwerkfehler ab |
| Upload-Fortschritt | Enthält data Datei-Bytes (hasInlineUploadPayload), erzeugt runAction einen Byte-Toast (createByteProgressToast, ActionView.svelte:350-357) und füttert ihn per onUploadProgress (ActionView.svelte:377) — Erfolgs-Toast erst nach Server-Antwort |

Parameter
Abschnitt betitelt „Parameter“Das Formular (ActionMethodScaffold.svelte) trennt zwei Blöcke:
| Block | Wohin gesendet |
|---|---|
Abfrage-Felder (query) |
Query-String der Action-URL (?feld=wert; Arrays wiederholt) |
Daten-Felder (data) |
JSON-Body (POST/PUT); bei GET kein Body |
- Felder kommen aus
action.meta.methods.<methode>.query.fieldsbzw.data.fieldsund nutzen dieselben Widgets wie der Editor (inklusivedependsOn-Sichtbarkeit). - Validierung läuft live: Fehler erscheinen nach Verlassen des Felds (
blur), der Knopf bleibt bis zur Korrektur gesperrt und nennt die Fehlerzahl. - Technische Vorschau (aufklappbar unter dem Formular) zeigt das exakte Payload-JSON
{ query, data }. - Server-Aufruf:
POST /api/v1/<namespace>/_actions/<name>?…mit Sitzungs-KopfX-Auth-Token(siehe Token-Köpfe).
Ausgabe und Fortschritt
Abschnitt betitelt „Ausgabe und Fortschritt“ActionOutputMapping.svelte zeigt gemappte Felder statt Roh-JSON:
- Zusammenfassung (
output.mapping.summary.fields, UI-StringoutputSummary) — immer sichtbar, Werte persource-Pfad aus dem Ergebnis gelesen (deepGet, z. B.totals.grandTotal). - Details (
output.mapping.details.fields) — aufklappbar, als Widgets gerendert. - Ohne Mapping zeigt der Admin das Ergebnis als formatiertes JSON; kennt die Methode nur einen Titel ohne Felder, steht dort „Fuer diese Aktion sind keine Ergebnisfelder konfiguriert.“ (
admin.actions.noOutputFields).
Liefert die Action Live-Events (Content-Type: text/event-stream), zeigt ActionProgressMapping.svelte:
- Balken aus
index/count(index/count × 100, sonst Prozent oder Zählertext). - Status- und Meldungstext aus
progress.statusField/progress.messageField. - Optionale Zusatzfelder (
progress.fields) aus jedem Event.
Formular (query + data) → Ausführen → [SSE-Events → Balken] → Ergebnis (Mapping oder JSON) └─ Verlauf: Audit mit _actions/<name>Rechte und Fehler
Abschnitt betitelt „Rechte und Fehler“| Fehlerbild | Ursache | Lösung |
|---|---|---|
| Kein Startknopf / „gesperrt“ | Methode nicht in deinen Rechten (project.yourPermissions._actions.<name>: get/post-Flag fehlt) |
Rechte unter Rechte und Tokens klären |
| Formularfehler genannt | Pflicht-/Formatfehler im Eingabeblock | Felder korrigieren — die Vorschau zeigt, was gesendet würde |
| Servertext im roten Kasten | Hook oder Server meldet fachlichen Fehler | Meldung wörtlich nehmen (der Admin reicht sie durch) |
permission / not found |
Falscher Kopf oder Action gelöscht | Token-Köpfe und Action-Namen prüfen |
| Netzwerkfehler | Server nicht erreichbar | Admin einrichten prüfen, erneut versuchen |
Klick-Abläufe dazu stehen im Test-Plan docs/test-plans/40-actions.md (Methoden-Tabs, ausführbar vs. gesperrt, Ergebnis und Fortschritt).
Anwender-Sicht zum Starten einer Aktion: Aktionen ausführen.
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); execution-Abschnitt verifiziert am 4c55f82 (tibi-types: action.schema.json:274-288, 401-403), am 2b091d8 (ActionView.svelte:260-295, 350-382); Screenshot-Mock verifiziert am bff84be6 2026-10-17 (tibi-admin-nova: corporate/actions/reindex-search.yml)