diff --git a/docs/de/img/screenshots/flows/action-callapi.png b/docs/de/img/screenshots/flows/action-callapi.png new file mode 100644 index 00000000..fbe46577 Binary files /dev/null and b/docs/de/img/screenshots/flows/action-callapi.png differ diff --git a/docs/de/img/screenshots/flows/action-create.png b/docs/de/img/screenshots/flows/action-create.png new file mode 100644 index 00000000..6931409b Binary files /dev/null and b/docs/de/img/screenshots/flows/action-create.png differ diff --git a/docs/de/img/screenshots/flows/action-email.png b/docs/de/img/screenshots/flows/action-email.png new file mode 100644 index 00000000..34c365da Binary files /dev/null and b/docs/de/img/screenshots/flows/action-email.png differ diff --git a/docs/de/img/screenshots/flows/action-rank.png b/docs/de/img/screenshots/flows/action-rank.png new file mode 100644 index 00000000..901ee820 Binary files /dev/null and b/docs/de/img/screenshots/flows/action-rank.png differ diff --git a/docs/de/img/screenshots/flows/action-update.png b/docs/de/img/screenshots/flows/action-update.png new file mode 100644 index 00000000..c5644309 Binary files /dev/null and b/docs/de/img/screenshots/flows/action-update.png differ diff --git a/docs/de/img/screenshots/flows/condition-object.png b/docs/de/img/screenshots/flows/condition-object.png new file mode 100644 index 00000000..18eb4b38 Binary files /dev/null and b/docs/de/img/screenshots/flows/condition-object.png differ diff --git a/docs/de/img/screenshots/flows/condition-time.png b/docs/de/img/screenshots/flows/condition-time.png new file mode 100644 index 00000000..49c31e35 Binary files /dev/null and b/docs/de/img/screenshots/flows/condition-time.png differ diff --git a/docs/de/img/screenshots/flows/condition-user.png b/docs/de/img/screenshots/flows/condition-user.png new file mode 100644 index 00000000..0861b71b Binary files /dev/null and b/docs/de/img/screenshots/flows/condition-user.png differ diff --git a/docs/de/img/screenshots/flows/end-to-end-flow.png b/docs/de/img/screenshots/flows/end-to-end-flow.png new file mode 100644 index 00000000..cc2f5f8a Binary files /dev/null and b/docs/de/img/screenshots/flows/end-to-end-flow.png differ diff --git a/docs/de/img/screenshots/flows/end-to-end-logs.png b/docs/de/img/screenshots/flows/end-to-end-logs.png new file mode 100644 index 00000000..b63353e4 Binary files /dev/null and b/docs/de/img/screenshots/flows/end-to-end-logs.png differ diff --git a/docs/de/img/screenshots/flows/overview.png b/docs/de/img/screenshots/flows/overview.png new file mode 100644 index 00000000..c70c3b57 Binary files /dev/null and b/docs/de/img/screenshots/flows/overview.png differ diff --git a/docs/de/img/screenshots/flows/placeholders.png b/docs/de/img/screenshots/flows/placeholders.png new file mode 100644 index 00000000..d88d9285 Binary files /dev/null and b/docs/de/img/screenshots/flows/placeholders.png differ diff --git a/docs/de/img/screenshots/flows/trigger-button.png b/docs/de/img/screenshots/flows/trigger-button.png new file mode 100644 index 00000000..5d5b2c70 Binary files /dev/null and b/docs/de/img/screenshots/flows/trigger-button.png differ diff --git a/docs/de/img/screenshots/flows/trigger-category.png b/docs/de/img/screenshots/flows/trigger-category.png new file mode 100644 index 00000000..09445d40 Binary files /dev/null and b/docs/de/img/screenshots/flows/trigger-category.png differ diff --git a/docs/de/img/screenshots/flows/trigger-object.png b/docs/de/img/screenshots/flows/trigger-object.png new file mode 100644 index 00000000..71e6da3a Binary files /dev/null and b/docs/de/img/screenshots/flows/trigger-object.png differ diff --git a/docs/de/img/screenshots/flows/trigger-time.png b/docs/de/img/screenshots/flows/trigger-time.png new file mode 100644 index 00000000..7fc1ea58 Binary files /dev/null and b/docs/de/img/screenshots/flows/trigger-time.png differ diff --git a/docs/de/user/flows/actions.md b/docs/de/user/flows/actions.md new file mode 100644 index 00000000..f9565f15 --- /dev/null +++ b/docs/de/user/flows/actions.md @@ -0,0 +1,73 @@ +--- +title: Aktionen – Anwendungsfälle +description: Beispiel-Anwendungsfälle für jede Flows-Aktion, mit Screenshots +lang: de +render_macros: false +--- + +# Aktionen – Anwendungsfälle + +Eine Aktion kann ein Objekt anlegen, aktualisieren oder einstufen, eine E-Mail senden oder eine externe API +aufrufen. Mehrere Aktionen laufen der Reihe nach. Die vollständige Referenz finden Sie unter +[Auslöser, Bedingungen und Aktionen](reference.md). + +## Objekt anlegen: ein Notebook mit sprechendem Namen + +**Szenario:** Der Button-Flow legt ein Notebook an, dessen Titel einen Zähler und das Auslöser-Objekt +enthält. + +- Wählen Sie die Aktion **Objekt anlegen** und die **Objektklasse** aus der durchsuchbaren Liste (jede Option zeigt ihr Typ-Icon). +- Setzen Sie den **Objekttitel** mit Platzhaltern, zum Beispiel `Notebook {{counter}} für {{object-name}}`. +- Setzen Sie Felder über **Attribute hinzufügen** (der Attribut-Picker gruppiert sie nach Kategorie). + +[![Die Aktion Objekt anlegen mit Klasse, Titel und Attributen](../../img/screenshots/flows/action-create.png)](../../img/screenshots/flows/action-create.png) +**Objekt anlegen:** Objektklasse, ein Titel mit Platzhaltern und die Attributauswahl. + +## Objekt aktualisieren: ein Prüfdatum stempeln + +**Szenario:** Bei einer Kategorie-Änderung soll ein Datum „zuletzt geprüft“ gesetzt werden. + +- Wählen Sie die Aktion **Objekt aktualisieren**. Wählen Sie unter **Aktion anwenden auf** entweder **Im Auslöser referenziertes Objekt** (Standard) oder **Ausgewählte Objekte**. +- Wählen Sie Attribute über den Picker; bei Datumsfeldern setzen Sie **Datum der Ausführung verwenden**. Eine Mehrwert-Kategorie erhält pro Lauf einen neuen Eintrag. + +[![Die Aktion Objekt aktualisieren mit Ziel und Attributen](../../img/screenshots/flows/action-update.png)](../../img/screenshots/flows/action-update.png) +**Objekt aktualisieren:** das Ziel (Auslöser-Objekt oder ausgewählte Objekte) und dessen Attribute. + +## Objekt einstufen: ein ausgemustertes Gerät archivieren + +**Szenario:** Ein Button setzt ein ausgemustertes Gerät auf den Lifecycle-Zustand „archiviert“. + +- Wählen Sie die Aktion **Objekt einstufen** und das Ziel (Auslöser-Objekt oder ausgewählte Objekte). +- Setzen Sie **Zustand setzen auf** — normal, archiviert oder gelöscht. + +[![Die Aktion Objekt einstufen mit dem Lifecycle-Zustand](../../img/screenshots/flows/action-rank.png)](../../img/screenshots/flows/action-rank.png) +**Objekt einstufen:** der Lifecycle-Zustand (normal, archiviert oder gelöscht). + +## E-Mail senden: den Service-Desk benachrichtigen + +**Szenario:** Ein zeitbasierter Flow sendet eine formatierte Erinnerung. + +- Wählen Sie die Aktion **E-Mail senden** und setzen Sie **Empfänger** (kommagetrennt) und einen **Betreff** (beides Pflicht). +- Schreiben Sie den **Text** im Markdown-Editor — links die Eingabe, rechts die Live-Vorschau. Betreff und Text akzeptieren Platzhalter. + +[![Die Aktion E-Mail senden mit Markdown-Editor und Vorschau](../../img/screenshots/flows/action-email.png)](../../img/screenshots/flows/action-email.png) +**E-Mail senden:** Empfänger, Betreff und ein Markdown-Editor mit Vorschau. + +!!! note + Der SMTP-Versand wird serverseitig konfiguriert (`SMTP_URL` und `MAIL_FROM`); es gibt keine Einstellung + je Instanz. + +## API aufrufen: ein externes System per Webhook informieren + +**Szenario:** Ein neu angelegtes Objekt wird per HTTP-POST an ein anderes System gemeldet. + +- Wählen Sie die Aktion **API aufrufen** und setzen Sie die **Methode** (GET, POST, PUT, PATCH, DELETE) und die **URL**. +- Füllen Sie den **Body** mit Platzhaltern, zum Beispiel `{"neu":"{{object-name}}","id":"{{object-id}}"}`. Ausgehende Aufrufe lassen sich über einen Proxy leiten. + +[![Die Aktion API aufrufen mit Methode, URL und Body](../../img/screenshots/flows/action-callapi.png)](../../img/screenshots/flows/action-callapi.png) +**API aufrufen:** die Methode, die URL und ein optionaler Body mit Platzhaltern. + +## Weiterführende Themen + +- [Auslöser – Anwendungsfälle](triggers.md) +- [Durchgängiges Beispiel](end-to-end.md) diff --git a/docs/de/user/flows/conditions.md b/docs/de/user/flows/conditions.md new file mode 100644 index 00000000..ea6bcb76 --- /dev/null +++ b/docs/de/user/flows/conditions.md @@ -0,0 +1,53 @@ +--- +title: Bedingungen – Anwendungsfälle +description: Beispiel-Anwendungsfälle für jede Flows-Bedingung, mit Screenshots +lang: de +--- + +# Bedingungen – Anwendungsfälle + +Bedingungen sind optional und müssen _alle_ erfüllt sein. Ist eine nicht erfüllt, wird der Lauf als +_Übersprungen_ mit Begründung im Log festgehalten. Die vollständige Referenz finden Sie unter +[Auslöser, Bedingungen und Aktionen](reference.md). + +## Objektbasiert: nur für Objekte in Betrieb + +**Szenario:** Ein Flow soll nur laufen, wenn das Auslöser-Objekt einen bestimmten CMDB-Status oder +Attributwert hat. + +- Wählen Sie die Bedingung **Objektbasiert**. +- Bauen Sie eine Regel im Filterbauer mit **Filter hinzufügen** und **Operation wählen** (zum Beispiel „CMDB-Status ist in Betrieb“); mehrere Filter werden mit _Und_ verknüpft. + +[![Die objektbasierte Bedingung mit visuellem Filterbauer](../../img/screenshots/flows/condition-object.png)](../../img/screenshots/flows/condition-object.png) +**Objektbasierte Bedingung:** ein visueller Filterbauer mit _Und_-Verknüpfung und Operationen. + +## Zeitbasiert: nur während der Geschäftszeiten + +**Szenario:** Der Flow soll nur montags bis freitags zwischen 08:00 und 16:00 laufen. + +- Wählen Sie die Bedingung **Zeitbasiert**. +- Wählen Sie die Wochentage (keine Auswahl bedeutet jeden Tag) und setzen Sie die Zeiten **Von** und **Bis**. +- Ergänzen Sie weitere Fenster mit **Zeitfenster hinzufügen**. + +[![Die zeitbasierte Bedingung mit Wochentagen und Von/Bis-Fenster](../../img/screenshots/flows/condition-time.png)](../../img/screenshots/flows/condition-time.png) +**Zeitbasierte Bedingung:** Wochentage plus ein Von/Bis-Zeitfenster. + +## Benutzer / Benutzergruppe: nur bestimmte Personen zulassen + +**Szenario:** Der Flow soll nur laufen, wenn ein Mitglied der Gruppe „IT-Team“ ihn auslöst. + +- Wählen Sie die Bedingung **Benutzer / Benutzergruppe**. +- Wählen Sie Benutzer und Benutzergruppen aus der Liste (die Gruppenmitgliedschaft wird automatisch aufgelöst). + +[![Die Benutzer- und Benutzergruppen-Bedingung](../../img/screenshots/flows/condition-user.png)](../../img/screenshots/flows/condition-user.png) +**Benutzer- / Benutzergruppen-Bedingung:** grenzt ein, wer den Flow auslösen darf. + +!!! note + Bei Button-Flows wird der Button für Personen ausgeblendet, die die Personen-Bedingung nie erfüllen + können. Bei objektbasierten und zeitbasierten Bedingungen bleibt der Button sichtbar, aber inaktiv, mit + einem Tooltip, der den Grund erklärt. + +## Weiterführende Themen + +- [Auslöser – Anwendungsfälle](triggers.md) +- [Aktionen – Anwendungsfälle](actions.md) diff --git a/docs/de/user/flows/end-to-end.md b/docs/de/user/flows/end-to-end.md new file mode 100644 index 00000000..d3fca095 --- /dev/null +++ b/docs/de/user/flows/end-to-end.md @@ -0,0 +1,68 @@ +--- +title: Durchgängiges Beispiel +description: Ein vollständiges Flows-Beispiel von der Anlage bis zur protokollierten Ausführung +lang: de +render_macros: false +--- + +# Durchgängiges Beispiel + +Dieses Kapitel führt einen vollständigen Flow von der Anlage bis zur protokollierten Ausführung durch. + +**Szenario:** An jeder Objektansicht erscheint ein Button **Vorfall melden**. Ein Klick meldet den Vorfall per +Webhook (HTTP-POST) an ein externes Ticketsystem und übergibt Objektname, Objekt-ID, die meldende Person und +eine fortlaufende Ticketnummer. + +## Schritt 1: Flow anlegen + +Wählen Sie in der Übersicht **Flow hinzufügen**, geben Sie den Namen „Vorfall an Ticketsystem melden“ ein und +ergänzen Sie eine Beschreibung. + +## Schritt 2: Auslöser konfigurieren + +Wählen Sie den Auslöser **Button** mit **Button-Name** „Vorfall melden“, der Button-Gruppe „Service-Desk“ und +der Platzierung **Alle Objekte** (der Button erscheint an jedem Objekt). + +## Schritt 3: Aktion konfigurieren + +Wählen Sie die Aktion **API aufrufen**, Methode **POST**, die URL des Ticketsystems und einen Body mit +Platzhaltern: + +```json +{ "objekt": "{{object-name}}", "id": "{{object-id}}", "gemeldet_von": "{{users-name}}", "ticket": "#{{counter}}" } +``` + +## Schritt 4: speichern und aktivieren + +Der fertige Flow zeigt die lineare Kette **Auslöser → Bedingungen → Aktion → Ende**. Mit **Aktivieren** +schalten Sie ihn scharf (Status _Aktiv_). + +[![Der fertige, aktivierte durchgängige Flow](../../img/screenshots/flows/end-to-end-flow.png)](../../img/screenshots/flows/end-to-end-flow.png) +**Aktivierter Flow:** der durchgängige Flow mit Button-Auslöser und einer Aktion API aufrufen. + +## Schritt 5: auslösen und Ergebnis prüfen + +Ein Klick auf den Button **Vorfall melden** an einem Objekt startet den Flow. Unter **Logs** erscheint der +Lauf mit Status _Erfolg_; die Detailansicht zeigt Zeitpunkt, meldende Person, Auslöser-Objekt und die +ausgeführte Aktion. + +[![Der erfolgreiche Lauf in den Logs](../../img/screenshots/flows/end-to-end-logs.png)](../../img/screenshots/flows/end-to-end-logs.png) +**Protokollierter Lauf:** ein erfolgreicher, per Button ausgelöster Aufruf, festgehalten mit Auslöser-Objekt +und auslösender Person. + +## Aktivieren, Testmodus und Logs + +Ein gespeicherter Flow ist zunächst _Inaktiv_. In der Detailansicht schaltet **Aktivieren** ihn scharf, und +**In Testmodus wechseln** führt ihn in einem neutralen Zustand aus, in dem Aktionen nur simuliert werden. +Jeder Lauf wird unter **Logs** mit Zeitpunkt, Status (Erfolg, übersprungen oder Fehler) und Begründung +festgehalten. + +!!! note + Aktionen, die die CMDB verändern (Objekt anlegen, aktualisieren oder einstufen), laufen als _Flow-User_. + Damit sie greifen, benötigt dieser einmalig die nötigen Objektrechte (Opt-in unter **Flow-Users**). + Webhook- und E-Mail-Aktionen wie oben benötigen keine CMDB-Schreibrechte. + +## Weiterführende Themen + +- [Flows-Überblick](index.md) +- [Aktionen – Anwendungsfälle](actions.md) diff --git a/docs/de/user/flows/index.md b/docs/de/user/flows/index.md new file mode 100644 index 00000000..a56222cf --- /dev/null +++ b/docs/de/user/flows/index.md @@ -0,0 +1,59 @@ +--- +title: Flows +description: Wiederkehrende Aufgaben in i-doit up mit Auslösern, Bedingungen und Aktionen automatisieren +lang: de +--- + +# Flows + +Flows ist ein Add-on, das wiederkehrende Aufgaben in i-doit up automatisiert. Jeder Flow ist eine streng +lineare Kette: + +**Auslöser → Bedingungen (optional) → Aktion(en)** + +- **Auslöser** — was den Flow startet (genau einer, Pflicht). +- **Bedingungen** — zusätzliche Voraussetzungen, die _alle_ erfüllt sein müssen, sonst wird der Lauf übersprungen (optional). +- **Aktionen** — was der Flow tut (mindestens eine; mehrere Aktionen laufen von oben nach unten). + +Die Oberfläche folgt der Sprache von i-doit up (Deutsch oder Englisch) und erscheint unter **Add-ons** in der +oberen Navigation. + +## Überblick und Oberfläche + +Öffnen Sie das Add-on über **Add-ons > Flows**. Die Startseite ist die Übersicht mit einer Such- und +Filterleiste (Status, Auslösertyp, Ersteller), Aktionen je Zeile (Öffnen, Test, Menü) sowie den Schaltflächen +**Flow hinzufügen**, **Export** und **Import**. Links wechseln Sie zwischen **Alle Flows**, **Logs** und +**Verlauf**. + +[![Die Flows-Übersicht listet jeden Flow mit Status und Auslösertyp](../../img/screenshots/flows/overview.png)](../../img/screenshots/flows/overview.png) +**Flows-Übersicht:** jeder Flow mit Status, Auslösertyp und Aktionen je Zeile. + +## Einen Flow anlegen + +Mit **Flow hinzufügen** öffnen Sie den Editor. Ein **Name** ist Pflicht; **Beschreibung** und **Flow-Gruppen** +sind optional. Den Körper bauen Sie über **Auslöser hinzufügen**, **Bedingung hinzufügen** und +**Aktion hinzufügen** — jeder öffnet einen Dialog mit einer Typ-Liste links und dem Formular rechts. + +Einen unfertigen Flow können Sie als Entwurf speichern (Status _Inaktiv_); Pflichtfelder werden beim Speichern +geprüft. Mit dem Recht **Flow-Operator wählen** legen Sie zusätzlich fest, als welcher Flow-User der Flow +läuft. + +## Zugriff und Rechte + +Der Zugriff wird über das Rechtesystem von i-doit up gesteuert, unter **Benutzerverwaltung > Rechte > +Add-on-Rechte > Flows**. Das Add-on bringt zwei Rechte mit: + +- **Flows verwalten** — Vollzugriff auf das Add-on. Ohne dieses Recht ist der Eintrag **Flows** ausgeblendet und die Add-on-API antwortet mit einem Rechtefehler. Die Admin-Rolle erhält das Recht bei der Installation automatisch. +- **Flow-Operator wählen** — erlaubt die Wahl des Flow-Users, als der ein Flow läuft, und öffnet die Seite **Flow-Users**. + +Das Recht **Flows verwalten** steuert nur den Zugang zur Oberfläche. Ob ein aktiver Flow läuft, hängt allein +von seinem Auslöser ab, unabhängig davon, wer ihn auslöst. + +## Weiterführende Themen + +- [Auslöser, Bedingungen und Aktionen](reference.md) +- [Auslöser – Anwendungsfälle](triggers.md) +- [Bedingungen – Anwendungsfälle](conditions.md) +- [Aktionen – Anwendungsfälle](actions.md) +- [Durchgängiges Beispiel](end-to-end.md) +- [Add-ons](../../admin/addons.md) diff --git a/docs/de/user/flows/reference.md b/docs/de/user/flows/reference.md new file mode 100644 index 00000000..08c4dc71 --- /dev/null +++ b/docs/de/user/flows/reference.md @@ -0,0 +1,73 @@ +--- +title: Auslöser, Bedingungen und Aktionen +description: Referenz aller Flows-Bausteine mit einer Kurzbeschreibung +lang: de +render_macros: false +--- + +# Auslöser, Bedingungen und Aktionen + +Die folgenden Tabellen listen alle verfügbaren Auslöser, Bedingungen und Aktionen mit einer Kurzbeschreibung. +Ausführliche Anwendungsfälle mit Screenshots folgen unter [Auslöser – Anwendungsfälle](triggers.md), +[Bedingungen – Anwendungsfälle](conditions.md) und [Aktionen – Anwendungsfälle](actions.md). + +## Auslöser + +Ein Flow hat genau einen Auslöser; er bestimmt, _wann_ der Flow startet. + +| Auslöser | Beschreibung | +| --- | --- | +| **Button** | Fügt Objekt-Detailansichten eine Schaltfläche hinzu; der Flow startet per Klick. Die Sichtbarkeit lässt sich auf alle Objekte, ausgewählte Objektklassen oder ausgewählte Objekte (und Kategorie-Ansichten) begrenzen. | +| **Zeitbasiert** | Startet zu einem festgelegten Datum und Uhrzeit — einmalig oder wiederkehrend (alle N Tage, Wochen, Monate oder Jahre; bei Wochen erscheint eine Wochentagsauswahl). | +| **Objekt-Ereignis** | Startet bei Objekt-Ereignissen: angelegt, geändert, gelöscht, archiviert oder wiederhergestellt. Begrenzbar auf Objektklassen oder ausgewählte Objekte. | +| **Kategorie-Ereignis** | Startet, wenn ein Kategorie-Eintrag angelegt, geändert oder gelöscht wird. Begrenzbar auf ausgewählte Kategorien und Attribute. | + +## Bedingungen + +Bedingungen sind optional. Mehrere lassen sich kombinieren und müssen _alle_ erfüllt sein, sonst wird der Lauf +übersprungen. + +| Bedingung | Beschreibung | +| --- | --- | +| **Objektbasiert** | Läuft nur, wenn das Auslöser-Objekt dem visuellen Filter entspricht (mehrere Filter mit _Und_ verknüpft). | +| **Zeitbasiert** | Läuft nur innerhalb der definierten Zeitfenster (Wochentage plus Von/Bis-Bereich; mehrere Fenster möglich). | +| **Benutzer / Benutzergruppe** | Läuft nur, wenn durch ausgewählte Benutzer oder Mitglieder ausgewählter Benutzergruppen ausgelöst. | + +## Aktionen + +Ein Flow hat mindestens eine Aktion; mehrere laufen der Reihe nach von oben nach unten. + +| Aktion | Beschreibung | +| --- | --- | +| **Objekt anlegen** | Legt ein neues Objekt der gewählten Klasse an; der Titel kann Platzhalter enthalten, Attribute werden über den Attribut-Picker gesetzt. | +| **Objekt aktualisieren** | Setzt Attribute am Auslöser-Objekt oder an ausgewählten Objekten. Eine Mehrwert-Kategorie erhält pro Lauf einen neuen Eintrag. | +| **Objekt einstufen** | Ändert den Lifecycle-Zustand eines Objekts (normal, archiviert, gelöscht). | +| **E-Mail senden** | Sendet eine E-Mail (Markdown-Text mit Vorschau) an einen oder mehrere Empfänger. SMTP wird serverseitig konfiguriert. | +| **API aufrufen** | Sendet eine HTTP-Anfrage (GET, POST, PUT, PATCH, DELETE) an eine externe API; der Body kann Platzhalter enthalten, optional über einen Proxy. | + +## Platzhalter + +Mehrere Aktionsfelder akzeptieren `{{ … }}`-Platzhalter, die zur Laufzeit durch echte Werte ersetzt werden. +Das Menü **Variable einfügen** unter dem jeweiligen Feld fügt sie an der Cursorposition ein. + +| Platzhalter | Bedeutung | +| --- | --- | +| `{{object-name}}` | Name des auslösenden Objekts | +| `{{object-id}}` | ID dieses Objekts | +| `{{object-link}}` | Direktlink zur Objekt-Übersicht | +| `{{users-name}}` | Vor- und Nachname des auslösenden Benutzers | +| `{{users-e-mail}}` | E-Mail-Adresse dieses Benutzers | +| `{{counter}}` | Eine automatisch hochzählende, bei jeder Verwendung eindeutige Nummer | +| `{{date}}` | Das Datum der Ausführung | +| `{{time}}` | Die Uhrzeit der Ausführung | +| `{{date-time}}` | Datum und Uhrzeit der Ausführung | + +Platzhalter stehen im Objekttitel einer Aktion **Objekt anlegen**, in Textwerten einer Aktion +**Objekt aktualisieren**, im Betreff und Text einer Aktion **E-Mail senden** sowie im Body einer Aktion +**API aufrufen** zur Verfügung. + +## Weiterführende Themen + +- [Flows-Überblick](index.md) +- [Auslöser – Anwendungsfälle](triggers.md) +- [Aktionen – Anwendungsfälle](actions.md) diff --git a/docs/de/user/flows/triggers.md b/docs/de/user/flows/triggers.md new file mode 100644 index 00000000..a41f3a6f --- /dev/null +++ b/docs/de/user/flows/triggers.md @@ -0,0 +1,68 @@ +--- +title: Auslöser – Anwendungsfälle +description: Beispiel-Anwendungsfälle für jeden Flows-Auslöser, mit Screenshots +lang: de +--- + +# Auslöser – Anwendungsfälle + +Ein Flow kann durch einen **Button**, einen **zeitbasierten** Zeitplan, ein **Objekt-Ereignis** oder ein +**Kategorie-Ereignis** gestartet werden. Jedes Beispiel zeigt ein realistisches Szenario und die passende +Konfiguration. Die vollständige Referenz finden Sie unter +[Auslöser, Bedingungen und Aktionen](reference.md). + +## Button: Notebook an einem Personen-Objekt anlegen + +**Szenario:** Beim Onboarding möchte das IT-Team an einem Personen-Objekt mit einem Klick ein neues Notebook +anlegen. + +- Wählen Sie den Auslöser **Button** und setzen Sie **Button-Name** auf „Notebook ausgeben“. +- Vergeben Sie optional eine Button-Gruppe („IT-Onboarding“) und ein Icon. +- Legen Sie unter **Wo der Button erscheint** die Sichtbarkeit fest: alle Objekte, ausgewählte Objektklassen oder ausgewählte Objekte — und optional bestimmte Kategorie-Ansichten. + +[![Der Button-Auslöser mit Name, Icon, Gruppen und Platzierungsoptionen](../../img/screenshots/flows/trigger-button.png)](../../img/screenshots/flows/trigger-button.png) +**Button-Auslöser:** Name, Icon, Gruppen sowie Platzierungs- und Sichtbarkeitsoptionen. + +## Zeitbasiert: ein wöchentlicher Wartungsbericht + +**Szenario:** Jeden Montag um 08:00 soll eine automatische Erinnerung an den Service-Desk gehen. + +- Wählen Sie den Auslöser **Zeitbasiert** und setzen Sie **Datum der ersten Ausführung** und **Uhrzeit der Ausführung**. +- Aktivieren Sie **Wiederholen alle** mit Intervall **1** und Einheit **Woche**; bei Wochen erscheint eine Wochentagsauswahl. +- Für einen einmaligen Lauf lassen Sie stattdessen **Nicht wiederholen**. + +[![Der zeitbasierte Auslöser mit Datum, Uhrzeit und Wiederholung](../../img/screenshots/flows/trigger-time.png)](../../img/screenshots/flows/trigger-time.png) +**Zeitbasierter Auslöser:** Datum und Uhrzeit mit optionaler Wiederholung (Tag, Woche, Monat oder Jahr). + +## Objekt-Ereignis: jedes neue Objekt an ein anderes System melden + +**Szenario:** Sobald irgendwo ein Objekt angelegt wird, soll ein externes Compliance-System benachrichtigt +werden. + +- Wählen Sie den Auslöser **Objekt-Ereignis** und das Ereignis **Angelegt** (weitere: geändert, gelöscht, archiviert, wiederhergestellt). +- Legen Sie unter **Ereignis anwenden auf** den Geltungsbereich fest: alle Objekte, ausgewählte Objektklassen oder ausgewählte Objekte (Letzteres nicht bei **Angelegt**). + +[![Der Objekt-Ereignis-Auslöser mit Ereignistyp und Objektumfang](../../img/screenshots/flows/trigger-object.png)](../../img/screenshots/flows/trigger-object.png) +**Objekt-Ereignis-Auslöser:** der Ereignistyp und der betroffene Objektumfang. + +## Kategorie-Ereignis: auf Änderungen einer Kategorie reagieren + +**Szenario:** Wenn ein Eintrag in der Netz-Kategorie angelegt oder geändert wird, soll ein Folgeschritt +laufen. + +- Wählen Sie den Auslöser **Kategorie-Ereignis** und die Ereignisse (angelegt, geändert, gelöscht) unter **Wenn ein Kategorie-Eintrag …**. +- Begrenzen Sie **Kategorien** (leer bedeutet jede Kategorie); ergänzen Sie danach einzelne **Attribute** als Bedingung (bei angelegt und geändert). + +[![Der Kategorie-Ereignis-Auslöser mit Ereignissen und Kategorie- oder Attributumfang](../../img/screenshots/flows/trigger-category.png)](../../img/screenshots/flows/trigger-category.png) +**Kategorie-Ereignis-Auslöser:** Ereignisse und der Kategorie- oder Attributumfang. + +!!! warning + Vermeiden Sie Endlosschleifen. Ein Ereignis-Flow, der Objekte anlegt oder ändert, erzeugt neue + Ereignisse. Das Add-on ignoriert die soeben selbst verursachte Änderung, dennoch sollten Sie + Ereignis-Flows mit Bedingungen eingrenzen. + +## Weiterführende Themen + +- [Bedingungen – Anwendungsfälle](conditions.md) +- [Aktionen – Anwendungsfälle](actions.md) +- [Durchgängiges Beispiel](end-to-end.md) diff --git a/docs/en/img/screenshots/flows/action-callapi.png b/docs/en/img/screenshots/flows/action-callapi.png new file mode 100644 index 00000000..fbe46577 Binary files /dev/null and b/docs/en/img/screenshots/flows/action-callapi.png differ diff --git a/docs/en/img/screenshots/flows/action-create.png b/docs/en/img/screenshots/flows/action-create.png new file mode 100644 index 00000000..6931409b Binary files /dev/null and b/docs/en/img/screenshots/flows/action-create.png differ diff --git a/docs/en/img/screenshots/flows/action-email.png b/docs/en/img/screenshots/flows/action-email.png new file mode 100644 index 00000000..34c365da Binary files /dev/null and b/docs/en/img/screenshots/flows/action-email.png differ diff --git a/docs/en/img/screenshots/flows/action-rank.png b/docs/en/img/screenshots/flows/action-rank.png new file mode 100644 index 00000000..901ee820 Binary files /dev/null and b/docs/en/img/screenshots/flows/action-rank.png differ diff --git a/docs/en/img/screenshots/flows/action-update.png b/docs/en/img/screenshots/flows/action-update.png new file mode 100644 index 00000000..c5644309 Binary files /dev/null and b/docs/en/img/screenshots/flows/action-update.png differ diff --git a/docs/en/img/screenshots/flows/condition-object.png b/docs/en/img/screenshots/flows/condition-object.png new file mode 100644 index 00000000..18eb4b38 Binary files /dev/null and b/docs/en/img/screenshots/flows/condition-object.png differ diff --git a/docs/en/img/screenshots/flows/condition-time.png b/docs/en/img/screenshots/flows/condition-time.png new file mode 100644 index 00000000..49c31e35 Binary files /dev/null and b/docs/en/img/screenshots/flows/condition-time.png differ diff --git a/docs/en/img/screenshots/flows/condition-user.png b/docs/en/img/screenshots/flows/condition-user.png new file mode 100644 index 00000000..0861b71b Binary files /dev/null and b/docs/en/img/screenshots/flows/condition-user.png differ diff --git a/docs/en/img/screenshots/flows/end-to-end-flow.png b/docs/en/img/screenshots/flows/end-to-end-flow.png new file mode 100644 index 00000000..cc2f5f8a Binary files /dev/null and b/docs/en/img/screenshots/flows/end-to-end-flow.png differ diff --git a/docs/en/img/screenshots/flows/end-to-end-logs.png b/docs/en/img/screenshots/flows/end-to-end-logs.png new file mode 100644 index 00000000..b63353e4 Binary files /dev/null and b/docs/en/img/screenshots/flows/end-to-end-logs.png differ diff --git a/docs/en/img/screenshots/flows/overview.png b/docs/en/img/screenshots/flows/overview.png new file mode 100644 index 00000000..c70c3b57 Binary files /dev/null and b/docs/en/img/screenshots/flows/overview.png differ diff --git a/docs/en/img/screenshots/flows/placeholders.png b/docs/en/img/screenshots/flows/placeholders.png new file mode 100644 index 00000000..d88d9285 Binary files /dev/null and b/docs/en/img/screenshots/flows/placeholders.png differ diff --git a/docs/en/img/screenshots/flows/trigger-button.png b/docs/en/img/screenshots/flows/trigger-button.png new file mode 100644 index 00000000..5d5b2c70 Binary files /dev/null and b/docs/en/img/screenshots/flows/trigger-button.png differ diff --git a/docs/en/img/screenshots/flows/trigger-category.png b/docs/en/img/screenshots/flows/trigger-category.png new file mode 100644 index 00000000..09445d40 Binary files /dev/null and b/docs/en/img/screenshots/flows/trigger-category.png differ diff --git a/docs/en/img/screenshots/flows/trigger-object.png b/docs/en/img/screenshots/flows/trigger-object.png new file mode 100644 index 00000000..71e6da3a Binary files /dev/null and b/docs/en/img/screenshots/flows/trigger-object.png differ diff --git a/docs/en/img/screenshots/flows/trigger-time.png b/docs/en/img/screenshots/flows/trigger-time.png new file mode 100644 index 00000000..7fc1ea58 Binary files /dev/null and b/docs/en/img/screenshots/flows/trigger-time.png differ diff --git a/docs/en/user/flows/actions.md b/docs/en/user/flows/actions.md new file mode 100644 index 00000000..c5b24167 --- /dev/null +++ b/docs/en/user/flows/actions.md @@ -0,0 +1,70 @@ +--- +title: Action use cases +description: Example use cases for every Flows action, with screenshots +lang: en +render_macros: false +--- + +# Action use cases + +An action can create, update, or rank an object, send an e-mail, or call an external API. Several actions run +in order. See [Triggers, conditions, and actions](reference.md) for the full reference. + +## Create object: a notebook with a meaningful name + +**Scenario:** the button flow creates a notebook whose title contains a counter and the trigger object. + +- Choose the **Create object** action and pick the **Object class** from the searchable list (each option shows its type icon). +- Set the **Object title** with placeholders, for example `Notebook {{counter}} for {{object-name}}`. +- Use **Add attributes** to set fields (the attribute picker groups them by category). + +[![The Create object action with class, title, and attributes](../../img/screenshots/flows/action-create.png)](../../img/screenshots/flows/action-create.png) +**Create object:** object class, a title with placeholders, and the attribute selection. + +## Update object: stamp a review date + +**Scenario:** on a category change, a "last reviewed" date should be set. + +- Choose the **Update object** action. Under **Apply action to**, pick **Object referred to in trigger** (default) or **Selected objects**. +- Select attributes through the picker; for date fields, tick **Use date of execution**. A multi-value category gains a new entry per run. + +[![The Update object action with target and attributes](../../img/screenshots/flows/action-update.png)](../../img/screenshots/flows/action-update.png) +**Update object:** the target (trigger object or selected objects) and its attributes. + +## Rank object: archive a retired device + +**Scenario:** a button sets a retired device to the "archived" lifecycle state. + +- Choose the **Rank object** action and pick the target (trigger object or selected objects). +- Set **Set state to** — normal, archived, or deleted. + +[![The Rank object action with the lifecycle state](../../img/screenshots/flows/action-rank.png)](../../img/screenshots/flows/action-rank.png) +**Rank object:** the lifecycle state (normal, archived, or deleted). + +## Send e-mail: notify the service desk + +**Scenario:** a time-based flow sends a formatted reminder. + +- Choose the **Send e-mail** action and set **Recipients** (comma-separated) and a **Subject** (both required). +- Write the **Body** in the Markdown editor — input on the left, live preview on the right. Subject and body accept placeholders. + +[![The Send e-mail action with a Markdown editor and preview](../../img/screenshots/flows/action-email.png)](../../img/screenshots/flows/action-email.png) +**Send e-mail:** recipients, subject, and a Markdown editor with preview. + +!!! note + SMTP delivery is configured server-side (`SMTP_URL` and `MAIL_FROM`); there is no per-instance setting. + +## Call API: inform an external system through a webhook + +**Scenario:** a newly created object is reported to another system with an HTTP POST. + +- Choose the **Call API** action and set the **Method** (GET, POST, PUT, PATCH, DELETE) and the **URL**. +- Fill the **Body** with placeholders, for example `{"new":"{{object-name}}","id":"{{object-id}}"}`. Outbound calls can be routed through a proxy. + +[![The Call API action with method, URL, and body](../../img/screenshots/flows/action-callapi.png)](../../img/screenshots/flows/action-callapi.png) +**Call API:** the method, URL, and an optional body with placeholders. + +## Further readings + +- [Trigger use cases](triggers.md) +- [End-to-end example](end-to-end.md) diff --git a/docs/en/user/flows/conditions.md b/docs/en/user/flows/conditions.md new file mode 100644 index 00000000..5bcb72c7 --- /dev/null +++ b/docs/en/user/flows/conditions.md @@ -0,0 +1,51 @@ +--- +title: Condition use cases +description: Example use cases for every Flows condition, with screenshots +lang: en +--- + +# Condition use cases + +Conditions are optional and must _all_ be met. When one is not met, the run is recorded as _Skipped_ with a +reason in the Logs. See [Triggers, conditions, and actions](reference.md) for the full reference. + +## Object-based: only for objects in operation + +**Scenario:** a flow should run only when the trigger object has a specific CMDB status or attribute value. + +- Choose the **Object-based** condition. +- Build a rule in the filter builder with **Add filter** and **Select operation** (for example, "CMDB status is in operation"); several filters are joined with _And_. + +[![The object-based condition with a visual filter builder](../../img/screenshots/flows/condition-object.png)](../../img/screenshots/flows/condition-object.png) +**Object-based condition:** a visual filter builder with _And_ logic and operations. + +## Time-based: only during business hours + +**Scenario:** the flow should run only Monday to Friday between 08:00 and 16:00. + +- Choose the **Time-based** condition. +- Select the weekdays (no selection means every day) and set the **From** and **To** times. +- Add more windows with **Add time window**. + +[![The time-based condition with weekdays and a from/to window](../../img/screenshots/flows/condition-time.png)](../../img/screenshots/flows/condition-time.png) +**Time-based condition:** weekdays plus a from/to time window. + +## User / user group: allow only certain people to trigger + +**Scenario:** the flow should run only when a member of the "IT team" group triggers it. + +- Choose the **User / user group** condition. +- Select users and user groups from the list (group membership is resolved automatically). + +[![The user and user-group condition](../../img/screenshots/flows/condition-user.png)](../../img/screenshots/flows/condition-user.png) +**User / user group condition:** restrict who may trigger the flow. + +!!! note + For button flows, the button is hidden for people who can never meet the person condition. For + object-based and time-based conditions, the button stays visible but inactive, with a tooltip that + explains why. + +## Further readings + +- [Trigger use cases](triggers.md) +- [Action use cases](actions.md) diff --git a/docs/en/user/flows/end-to-end.md b/docs/en/user/flows/end-to-end.md new file mode 100644 index 00000000..c3011685 --- /dev/null +++ b/docs/en/user/flows/end-to-end.md @@ -0,0 +1,66 @@ +--- +title: End-to-end example +description: A complete Flows example from creation to a logged execution +lang: en +render_macros: false +--- + +# End-to-end example + +This chapter walks through a complete flow, from creation to a logged execution. + +**Scenario:** a **Report incident** button appears on every object view. A click reports the incident to an +external ticket system through a webhook (HTTP POST) and passes the object name, object ID, the reporting +person, and a running ticket number. + +## Step 1: create the flow + +In the overview, select **Add flow**, enter the name "Report incident to ticket system", and add a +description. + +## Step 2: configure the trigger + +Choose the **Button** trigger with **Button name** "Report incident", the button group "Service desk", and +placement **Any object** (the button appears on every object). + +## Step 3: configure the action + +Choose the **Call API** action, method **POST**, the ticket-system URL, and a body with placeholders: + +```json +{ "object": "{{object-name}}", "id": "{{object-id}}", "reported_by": "{{users-name}}", "ticket": "#{{counter}}" } +``` + +## Step 4: save and activate + +The finished flow shows the linear chain **Trigger → Conditions → Action → End**. Select **Activate** to make +it live (status _Active_). + +[![The finished, activated end-to-end flow](../../img/screenshots/flows/end-to-end-flow.png)](../../img/screenshots/flows/end-to-end-flow.png) +**Activated flow:** the end-to-end flow with a button trigger and a Call API action. + +## Step 5: trigger and check the result + +A click on the **Report incident** button on an object starts the flow. Under **Logs**, the run appears with +status _Success_; the detail panel shows the time, the triggering person, the trigger object, and the action +that ran. + +[![The successful run in the Logs](../../img/screenshots/flows/end-to-end-logs.png)](../../img/screenshots/flows/end-to-end-logs.png) +**Logged run:** a successful button-triggered Call API run, recorded with its trigger object and the +triggering user. + +## Activation, test mode, and logs + +A saved flow starts as _Inactive_. In the detail view, **Activate** makes it live and **Switch to test mode** +runs it in a neutral state where actions are only simulated. Every run is recorded under **Logs** with its +time, status (success, skipped, or error), and reason. + +!!! note + Actions that change the CMDB (create, update, or rank an object) run as the _flow user_. For them to + take effect, that user needs the required object rights once (opt in under **Flow users**). Webhook and + e-mail actions like the one above need no CMDB write rights. + +## Further readings + +- [Flows overview](index.md) +- [Action use cases](actions.md) diff --git a/docs/en/user/flows/index.md b/docs/en/user/flows/index.md new file mode 100644 index 00000000..8837ebe9 --- /dev/null +++ b/docs/en/user/flows/index.md @@ -0,0 +1,56 @@ +--- +title: Flows +description: Automate repetitive tasks in i-doit up with triggers, conditions, and actions +lang: en +--- + +# Flows + +Flows is an add-on that automates repetitive tasks in i-doit up. Every flow is a strictly linear chain: + +**Trigger → Conditions (optional) → Action(s)** + +- **Trigger** — what starts the flow (exactly one, required). +- **Conditions** — extra requirements that must _all_ be met, otherwise the run is skipped (optional). +- **Actions** — what the flow does (at least one; multiple actions run top to bottom). + +The add-on interface follows the interface language of i-doit up (English or German) and appears under +**Add-ons** in the top navigation. + +## Overview and interface + +Open the add-on from **Add-ons > Flows**. The start page is the overview with a search-and-filter bar +(status, trigger type, creator), per-row actions (open, test, menu), and the **Add flow**, **Export**, and +**Import** buttons. The left sidebar switches between **All flows**, **Logs**, and **History**. + +[![The Flows overview lists every flow with its status and trigger type](../../img/screenshots/flows/overview.png)](../../img/screenshots/flows/overview.png) +**Flows overview:** every flow with its status, trigger type, and per-row actions. + +## Create a flow + +Select **Add flow** to open the editor. A **Name** is required; a **Description** and **Flow groups** are +optional. Build the body with **Add trigger**, **Add condition**, and **Add action** — each opens a dialog +with a type list on the left and the form on the right. + +You can save an unfinished flow as a draft (status _Inactive_); required fields are checked on save. If you +hold the **Select Flow Operator** right, you can also choose which flow user the flow runs as. + +## Access and rights + +Access is governed by the standard i-doit up rights system under **User management > Rights > Add-on rights > +Flows**. The add-on contributes two rights: + +- **Manage Flows** — full access to the add-on. Without it, the **Flows** entry is hidden and the add-on API answers with a permission error. The admin role receives this right automatically on installation. +- **Select Flow Operator** — lets a user choose which flow user a flow runs as, and opens the **Flow users** settings page. + +The **Manage Flows** right governs access to the interface only. Whether an active flow runs depends solely +on its trigger, regardless of who triggers it. + +## Further readings + +- [Triggers, conditions, and actions](reference.md) +- [Trigger use cases](triggers.md) +- [Condition use cases](conditions.md) +- [Action use cases](actions.md) +- [End-to-end example](end-to-end.md) +- [Add-ons](../../admin/addons.md) diff --git a/docs/en/user/flows/reference.md b/docs/en/user/flows/reference.md new file mode 100644 index 00000000..80e86c9d --- /dev/null +++ b/docs/en/user/flows/reference.md @@ -0,0 +1,72 @@ +--- +title: Triggers, conditions, and actions +description: Reference of every Flows building block with a short description +lang: en +render_macros: false +--- + +# Triggers, conditions, and actions + +The tables below list every available trigger, condition, and action with a short description. Detailed use +cases with screenshots follow in [Trigger use cases](triggers.md), [Condition use cases](conditions.md), and +[Action use cases](actions.md). + +## Triggers + +A flow has exactly one trigger; it determines _when_ the flow starts. + +| Trigger | Description | +| --- | --- | +| **Button** | Adds a button to object detail views; the flow starts on click. Visibility can be limited to all objects, selected object classes, or selected objects (and to category views). | +| **Time-based** | Starts at a set date and time — once or repeating (every N days, weeks, months, or years; a weekday picker appears for weeks). | +| **Object event** | Starts on object events: created, updated, deleted, archived, or restored. Can be limited to object classes or selected objects. | +| **Category event** | Starts when a category entry is created, updated, or deleted. Can be limited to selected categories and attributes. | + +## Conditions + +Conditions are optional. Several can be combined, and they must _all_ be met, otherwise the run is skipped. + +| Condition | Description | +| --- | --- | +| **Object-based** | Runs only when the trigger object matches the visual filter (several filters joined with _And_). | +| **Time-based** | Runs only inside the defined time windows (weekdays plus a from/to range; several windows possible). | +| **User / user group** | Runs only when triggered by selected users or members of selected user groups. | + +## Actions + +A flow has at least one action; several actions run in order, top to bottom. + +| Action | Description | +| --- | --- | +| **Create object** | Creates a new object of the chosen class; the title can use placeholders and attributes are set through the attribute picker. | +| **Update object** | Sets attributes on the trigger object or on selected objects. A multi-value category gains a new entry per run. | +| **Rank object** | Changes the lifecycle state of an object (normal, archived, deleted). | +| **Send e-mail** | Sends an e-mail (Markdown body with preview) to one or more recipients. SMTP is configured server-side. | +| **Call API** | Sends an HTTP request (GET, POST, PUT, PATCH, DELETE) to an external API; the body can use placeholders, optionally routed through a proxy. | + +## Placeholders + +Several action fields accept `{{ … }}` placeholders that are replaced with live values when the flow runs. +The **Insert variable** control below each field inserts them at the cursor. + +| Placeholder | Meaning | +| --- | --- | +| `{{object-name}}` | Name of the triggering object | +| `{{object-id}}` | ID of that object | +| `{{object-link}}` | Direct link to the object overview | +| `{{users-name}}` | First and last name of the triggering user | +| `{{users-e-mail}}` | E-mail address of that user | +| `{{counter}}` | An automatically increasing number, unique on each use | +| `{{date}}` | The date the flow runs | +| `{{time}}` | The time the flow runs | +| `{{date-time}}` | The date and time the flow runs | + +Placeholders are available in the object title of a **Create object** action, in text values of an +**Update object** action, in the subject and body of a **Send e-mail** action, and in the body of a +**Call API** action. + +## Further readings + +- [Flows overview](index.md) +- [Trigger use cases](triggers.md) +- [Action use cases](actions.md) diff --git a/docs/en/user/flows/triggers.md b/docs/en/user/flows/triggers.md new file mode 100644 index 00000000..77576f19 --- /dev/null +++ b/docs/en/user/flows/triggers.md @@ -0,0 +1,64 @@ +--- +title: Trigger use cases +description: Example use cases for every Flows trigger, with screenshots +lang: en +--- + +# Trigger use cases + +A flow can be started by a **Button**, a **Time-based** schedule, an **Object event**, or a +**Category event**. Each example below shows a realistic scenario and the matching configuration. See +[Triggers, conditions, and actions](reference.md) for the full reference. + +## Button: create a notebook from a person object + +**Scenario:** during onboarding, the IT team wants to create a new notebook from a person object with a +single click. + +- Choose the **Button** trigger and set **Button name** to "Issue notebook". +- Optionally assign a button group ("IT onboarding") and an icon. +- Under **Where the button appears**, choose the visibility: all objects, selected object classes, or selected objects — and optionally limit it to specific category views. + +[![The Button trigger with name, icon, groups, and placement options](../../img/screenshots/flows/trigger-button.png)](../../img/screenshots/flows/trigger-button.png) +**Button trigger:** name, icon, groups, and placement and visibility options. + +## Time-based: a weekly maintenance report + +**Scenario:** every Monday at 08:00, an automatic reminder should reach the service desk. + +- Choose the **Time-based** trigger and set the **Date of first execution** and **Time of execution**. +- Enable **Repeats every** with interval **1** and unit **Week**; for weeks, a weekday picker appears. +- For a one-off run, keep **Don't repeat** instead. + +[![The Time-based trigger with date, time, and repeat settings](../../img/screenshots/flows/trigger-time.png)](../../img/screenshots/flows/trigger-time.png) +**Time-based trigger:** date and time with an optional repeat (day, week, month, or year). + +## Object event: report every new object to another system + +**Scenario:** whenever an object is created anywhere, an external compliance system should be notified. + +- Choose the **Object event** trigger and select the **Created** event (others: updated, deleted, archived, restored). +- Under **Add event to**, set the scope: all objects, selected object classes, or selected objects (the last option is not offered for **Created**). + +[![The Object event trigger with event type and object scope](../../img/screenshots/flows/trigger-object.png)](../../img/screenshots/flows/trigger-object.png) +**Object event trigger:** the event type and the affected object scope. + +## Category event: react to changes in a specific category + +**Scenario:** when an entry in the network category is created or updated, a follow-up step should run. + +- Choose the **Category event** trigger and select the events (created, updated, deleted) under **Run when a category entry is…**. +- Limit **Categories** (empty means any category); then add individual **Attributes** as a condition (for created and updated events). + +[![The Category event trigger with events and category or attribute scope](../../img/screenshots/flows/trigger-category.png)](../../img/screenshots/flows/trigger-category.png) +**Category event trigger:** events and the category or attribute scope. + +!!! warning + Avoid self-triggering loops. An event flow that creates or updates objects produces new events. The + add-on ignores the change it made, but you should still narrow event flows with conditions. + +## Further readings + +- [Condition use cases](conditions.md) +- [Action use cases](actions.md) +- [End-to-end example](end-to-end.md) diff --git a/i18n/de/mkdocs.yml b/i18n/de/mkdocs.yml index 27abc20e..c4fda452 100644 --- a/i18n/de/mkdocs.yml +++ b/i18n/de/mkdocs.yml @@ -65,6 +65,13 @@ nav: - Documents Creator: user/documents-creator.md - Importe: - CSV: user/imports/csv.md + - Flows: + - Überblick: user/flows/index.md + - Auslöser, Bedingungen und Aktionen: user/flows/reference.md + - Auslöser – Anwendungsfälle: user/flows/triggers.md + - Bedingungen – Anwendungsfälle: user/flows/conditions.md + - Aktionen – Anwendungsfälle: user/flows/actions.md + - Durchgängiges Beispiel: user/flows/end-to-end.md - Anwendungsfälle: - Wie fange ich an?: user/usecases/how-to-start.md - Dokumentation und Namenskonventionen: user/usecases/it-documentation-and-naming-conventions.md diff --git a/i18n/de/spelling.txt b/i18n/de/spelling.txt index 33fcf567..e5a1bfaf 100644 --- a/i18n/de/spelling.txt +++ b/i18n/de/spelling.txt @@ -241,3 +241,19 @@ Tournamen Validierungsfehler Verlaufsansicht WSL +flow +flows +trigger +webhook +markdown +onboarding +lifecycle +desk +compliance +attributauswahl +kommagetrennt +auslösertyp +wochentagsauswahl +begrenzbar +sichtbarkeitsoptionen +attributumfang diff --git a/i18n/en/mkdocs.yml b/i18n/en/mkdocs.yml index 7e433f15..2e8e5778 100644 --- a/i18n/en/mkdocs.yml +++ b/i18n/en/mkdocs.yml @@ -65,6 +65,13 @@ nav: - Documents Creator: user/documents-creator.md - Imports: - CSV: user/imports/csv.md + - Flows: + - Overview: user/flows/index.md + - Triggers, conditions, and actions: user/flows/reference.md + - Trigger use cases: user/flows/triggers.md + - Condition use cases: user/flows/conditions.md + - Action use cases: user/flows/actions.md + - End-to-end example: user/flows/end-to-end.md - Use cases: - How to Start: user/usecases/how-to-start.md - Documentation and naming conventions: user/usecases/it-documentation-and-naming-conventions.md diff --git a/i18n/en/spelling.txt b/i18n/en/spelling.txt index f915565e..7725a71c 100644 --- a/i18n/en/spelling.txt +++ b/i18n/en/spelling.txt @@ -115,3 +115,6 @@ von VSCode YAML Accounty +webhook +markdown +onboarding