Skip to main content
Automatisierungen sind die Teile einer App, die eigenständig laufen — nach einem Zeitplan oder wenn ein externer Service ein Ereignis sendet. Sie deklarieren sie in einer Process-Komponente in kazzle.config.ts. Eine Komponente kann beliebig viele Trigger haben.

Die Struktur

Zwei Dinge passieren hier:
  • processMode bestimmt den Lebenszyklus — Langzeitserver oder einmalige Ausführung pro Trigger.
  • triggers[] listet die Ereignisse auf, die diese Komponente auslösen sollen.
Die beiden Teile sind unabhängig. Ein persistenter Server kann einen Cron haben. Ein kurzlebiger Prozess kann einen Webhook haben. Wählen Sie den Lebenszyklus, der zu Ihrer Workload passt, und fügen Sie dann beliebig viele Trigger hinzu.

processMode

Trigger

Jeder Trigger hat einen name (eindeutig innerhalb der Komponente), eine kind und — je nach Modus — einen schedule und/oder path.

Persistent-Modus — HTTP zum Server

Wenn ein Trigger für eine persistente Komponente ausgelöst wird, postet Kazzle zu Ihrem Server unter dem deklarierten path. Die Anfrage enthält: Bei Webhook-Triggern wird der ursprüngliche Request-Body als POST-Body weitergeleitet. Bei Schedule-Triggern ist der Body leer.

Triggered-Modus — einmalig pro Trigger

Wenn ein Trigger für eine triggered-Komponente ausgelöst wird, startet Kazzle das Entry-Skript neu und wartet auf seinen Abschluss. Es gibt keinen path; das Skript erfährt, welcher Trigger ausgelöst wurde, über Umgebungsvariablen.
Triggered-Komponenten haben keine untätigen Maschinen in der Produktion — sie starten pro Aufruf und fahren beim Beenden herunter.

Webhook-URLs

Das triggerName-Segment muss einem kind: 'webhook'-Eintrag in der triggers[] dieser Komponente entsprechen. Unbekannte Trigger-Namen geben 404 zurück.

Zeitplan-Auflösung

Cron-Ausdrücke sind 5-Feld (Minute, Stunde, Tag des Monats, Monat, Wochentag) und Minutenauflösung ist das Minimum. Sub-Minuten-Zeitpläne werden bei der Manifest-Validierung abgelehnt.

Wie Läufe aufgezeichnet werden

Jeder Trigger-Auslöser schreibt eine process_runs-Zeile mit trigger_name, triggered_by, run_id und dem Exit-Status des Laufs. Sie können diese aus Ihrem eigenen Code abfragen oder in der Runs-Ansicht der App inspizieren.

Guthaben aufgebraucht

Ein fehlgeschlagener Lauf wird aufgezeichnet und protokolliert, aber der Zeitplan läuft weiter nach seinem normalen Rhythmus — ein fehlerhafter Lauf deaktiviert den Trigger nie. Das Einzige, das einen Lauf stoppt, ist das Guthaben: Jeder Trigger-Auslöser wird gegen den Kontostand des Space überprüft, und während der Space kein Guthaben hat (oder keine Abrechnung eingerichtet hat), werden Läufe mit 402 übersprungen. Dies ist selbstheilend — der Zeitplan bleibt aktiv und der nächste Auslöser nach dem Aufladen läuft normal, ohne manuelles Fortsetzen.

Automatisierungen später hinzufügen

Eine einfache App kann ohne Trigger starten und sie später gewinnen — fügen Sie eine tägliche Zusammenfassung hinzu, verbinden Sie Stripe, führen Sie Bereinigung aus. Der Lebenszyklus der Komponente (processMode) und Trigger (triggers[]) sind unabhängig, sodass Sie sie ändern können, ohne den Rest der App umzuschreiben.