Stufe 2 — Aktionen und Prozesse

Status-Workflow, Benachrichtigungen, Subformen und Hintergrund-Jobs

Aktionen
🎯 Ziel dieser Stufe: Aufträge durchlaufen einen Freigabe-Workflow. Benachrichtigungen werden automatisch verschickt. Hintergrund-Jobs erinnern an Fälligkeiten.
Rollen-Erweiterung in dieser Stufe
RolleNeue Fähigkeiten
Sachbearbeiter Auftrag einreichen (Entwurf → Offen), Positionen hinzufügen
Teamleiter Auftrag freigeben (Offen → In Bearbeitung) oder ablehnen
Vertriebsleiter Erhält Benachrichtigung bei Freigabe

Überblick: Der Auftrags-Workflow

In Stufe 1 konnte jeder den Auftragsstatus frei ändern. Jetzt führen wir einen kontrollierten Workflow ein:

                          Sachbearbeiter            Teamleiter
                          klickt                    klickt
                          "Einreichen"              "Freigeben"
   +-----------+          +-----------+             +-----------------+
   |           |          |           |             |                 |
   |  ENTWURF  | ------> |   OFFEN   | ---------> | IN BEARBEITUNG  |
   |           |          |           |             |                 |
   +-----------+          +-----------+             +-----------------+
        ^                      |                           |
        |                      |                           |
        |    Teamleiter        |    Sachbearbeiter         |
        |    klickt            |    klickt                 |
        |    "Ablehnen"        |    "Abschliessen"         |
        |                      v                           v
        |               +-----------+             +-----------+
        '-------------- | ABGELEHNT |             |  ERLEDIGT |
                        +-----------+             +-----------+

   Zu jedem Zeitpunkt möglich:
   +-----------+
   | STORNIERT |   (nur Teamleiter)
   +-----------+

Der Auftrags-Workflow: Jeder Statusübergang ist an eine Rolle und Aktion gebunden.

Datenmodell erweitern

🎯 Auftragspositionen und Status-Historie ergänzen das Datenmodell.

Entity „Positionen“

Ein Auftrag kann mehrere Positionen (Einzelposten) enthalten:

FeldnameDatentypPflichtHinweis
ArtikelbezeichnungTextJa
MengeZahlJaStandard: 1
EinzelpreisZahl (Dezimal)Ja
GesamtpreisZahl (Dezimal)Berechnet: Menge × Einzelpreis
AuftragIdVerweisJaFK → Auftraege

Entity „StatusHistorie“

Jede Statusänderung wird protokolliert:

FeldnameDatentypHinweis
AuftragIdVerweisFK → Auftraege
AlterStatusText
NeuerStatusText
GeaendertVonTextAutomatisch: aktueller Benutzer
GeaendertAmDatumAutomatisch: aktueller Zeitstempel
KommentarTextOptional, z. B. Ablehnungsgrund

Neue Felder am Entity „Auftraege“:

PrioritaetText (Auswahl: Niedrig / Normal / Hoch)
   KUNDEN          AUFTRÄGE          POSITIONEN        STATUS-HISTORIE
   +--------+      +----------+      +------------+      +---------------+
   |        |<-----|Kunde(FK) |<-----|Auftrag(FK) |      |Auftrag(FK)    |
   |        |      |Status    |      |Artikel     |      |Alter Status   |
   |        |      |Priorität |      |Menge       |      |Neuer Status   |
   |        |      |Zugewies. |      |Einzelpreis |      |Geändert von   |
   |        |      |          |      |Gesamtpreis |      |Geändert am    |
   +--------+      +----------+      +------------+      |Kommentar      |
                         ^                                +---------------+
                         |________________________________|

Erweitertes Datenmodell: Positionen und Status-Historie kommen hinzu.

Subformen: Positionen im Auftragsdialog

🎯 Im Auftragsformular können Positionen direkt hinzugefügt, bearbeitet und gelöscht werden.
Was ist eine Subform? Stellen Sie sich ein Rechnungsformular vor: Oben stehen die Kundendaten, darunter eine Tabelle mit Einzelposten. Die Subform ist diese eingebettete Tabelle — sie zeigt die zugeordneten Positionen direkt im Auftragsformular an.
  1. Auftragsdialog öffnen

    Öffnen Sie den Dialog „Auftrag bearbeiten“ im Admin Client.

  2. Subform hinzufügen

    Fügen Sie ein neues Element vom Typ „Subform“ hinzu:

    NameAuftragspositionen
    EntityPositionen
    FK-FeldAuftragId
  3. Spalten der Subform festlegen

    Definieren Sie die sichtbaren Spalten: Artikelbezeichnung, Menge, Einzelpreis, Gesamtpreis.

    Screenshot: Subform „Positionen“ im Auftragsdialog
Tipp: Benutzer können in der Subform neue Zeilen hinzufügen, Mengen ändern oder Positionen löschen — alles inline, ohne den Dialog zu verlassen.

Aktion: „Auftrag einreichen“

🎯 Der Sachbearbeiter kann einen Auftrag im Status „Entwurf“ per Knopfdruck einreichen.
Was ist eine UDM-Aktion? Ein Button, der beim Klick einen oder mehrere Schritte ausführt — z. B. einen Status ändern, eine Nachricht verschicken oder Daten kopieren. Aktionen können an Bedingungen geknüpft werden: Der Button erscheint nur, wenn die Bedingung erfüllt ist.
  1. Neue Aktion anlegen

    Navigieren Sie zu Automatisierung → Aktionen. Klicken Sie auf „Neu“.

    NameAuftrag einreichen
    TriggerInteraktiv (UI-Button)
    AnsichtselementAuftragsliste
  2. Bedingung festlegen (CanExecute)

    Die Aktion soll nur verfügbar sein, wenn der Status = „Entwurf“ ist:

    FeldStatus
    Operatorist gleich
    WertEntwurf
    Was bewirkt die Bedingung? Der Button „Einreichen“ ist nur klickbar, wenn der ausgewählte Auftrag im Status „Entwurf“ ist. Bei allen anderen Status ist er ausgegraut.
  3. Aktionsschritte konfigurieren

    Fügen Sie zwei Schritte hinzu:

    Schritt 1: Status ändern

    TypWriteData
    Ziel-EntityAuftraege
    Feld „Status“Setzen auf Offen

    Schritt 2: Status-Historie schreiben

    TypWriteData (neuer Datensatz)
    Ziel-EntityStatusHistorie
    AlterStatusEntwurf
    NeuerStatusOffen
    GeaendertVon[Aktueller Benutzer]
    Screenshot: Aktions-Konfiguration „Auftrag einreichen“

Aktion: „Auftrag freigeben“ (nur Teamleiter)

🎯 Der Teamleiter kann offene Aufträge freigeben. Der Vertriebsleiter wird automatisch benachrichtigt.
  1. Aktion anlegen
    NameAuftrag freigeben
    TriggerInteraktiv
    BerechtigungNur Rolle Teamleiter
  2. Bedingung

    Status = Offen

  3. Aktionsschritte

    Schritt 1: WriteData → Status auf In Bearbeitung

    Schritt 2: WriteData → StatusHistorie-Eintrag

    Schritt 3: SendMessage → Benachrichtigung an Vertriebsleiter

Aktion: „Auftrag ablehnen“ (nur Teamleiter)

  1. Aktion anlegen
    NameAuftrag ablehnen
    BedingungStatus = Offen
    BerechtigungNur Rolle Teamleiter
  2. Aktionsschritte

    Schritt 1: WriteData → Status auf Entwurf

    Schritt 2: WriteData → StatusHistorie (mit Kommentar)

    Schritt 3: SendMessage → Sachbearbeiter informieren

Nachrichtenvorlagen einrichten

🎯 Automatische Benachrichtigungen informieren die richtigen Personen bei Statusänderungen.
Wie ein Briefvorlagen-Ordner: Sie definieren einmal die Vorlage mit Platzhaltern („Sehr geehrter {Kundenname}...“). Beim Versand werden die Platzhalter automatisch durch die echten Daten ersetzt.

Vorlage „Auftrag freigegeben“

  1. Navigieren Sie zu Kommunikation → Nachrichtenvorlagen
  2. Neue Vorlage anlegen
    NameAuftrag freigegeben
    KanalUDM-intern (Posteingang)
    EmpfängerRolle: Vertriebsleiter
    BetreffAuftrag {Auftragsnr} freigegeben
    TextDer Auftrag {Auftragsnr} „{Bezeichnung}“ für {Kunden.Firmenname} wurde freigegeben.

Vorlage „Auftrag abgelehnt“

NameAuftrag abgelehnt
EmpfängerDynamisch: ZugewiesenAn (Ersteller)
BetreffAuftrag {Auftragsnr} abgelehnt
TextIhr Auftrag {Auftragsnr} wurde abgelehnt. Grund: {Kommentar}
Screenshot: Nachrichtenvorlage mit Platzhaltern

Aktion: „Auftrag abschließen“

  1. Aktion anlegen
    NameAuftrag abschliessen
    BedingungStatus = In Bearbeitung
  2. Aktionsschritte

    WriteData → Status auf Erledigt

    WriteData → StatusHistorie-Eintrag

Hintergrund-Job: Fälligkeits-Erinnerung

🎯 Jeden Morgen prüft ein automatischer Job, ob Aufträge bald fällig sind, und erinnert den zuständigen Sachbearbeiter.
Wie ein automatischer Kalender-Alarm: Statt dass jeder manuell seine Fälligkeiten prüft, läuft im Hintergrund ein Job, der jeden Morgen alle bald fälligen Aufträge findet und die Verantwortlichen per Nachricht erinnert.
  1. Neuen Hintergrund-Job anlegen

    Navigieren Sie zu Automatisierung → Hintergrund-Jobs.

    NameFälligkeits-Erinnerung
    Trigger-TypZeitgesteuert (Time)
    ZeitplanTäglich um 08:00 Uhr
  2. Trigger-Bedingung definieren

    Der Job soll nur Aufträge finden, die:

    • Status = „In Bearbeitung“
    • Fällig am ≤ Heute + 3 Tage
    Relativer Datumsfilter: UDM unterstützt relative Datumswerte wie „Heute“, „Diese Woche“ oder „In 3 Tagen“. So bleibt der Filter immer aktuell, ohne dass Sie ein festes Datum eingeben müssen.
  3. Job-Aktion: Erinnerung senden
    TypSendMessage
    VorlageFälligkeits-Erinnerung (neu erstellen)
    EmpfängerDynamisch: ZugewiesenAn
    Screenshot: Hintergrund-Job mit Zeitplan und Bedingung

Ergebnis: Workflow testen

Testen Sie den kompletten Workflow:

  1. Als Sachbearbeiter: Neuen Auftrag anlegen (Status: Entwurf) → Positionen hinzufügen → „Einreichen“ klicken
  2. Als Teamleiter: Offene Aufträge sehen → „Freigeben“ oder „Ablehnen“ klicken
  3. Als Vertriebsleiter: Benachrichtigung im Posteingang prüfen
  4. Als Sachbearbeiter: Freigegebenen Auftrag „Abschließen“
✅ Kontrollpunkt — Stufe 2 abgeschlossen!
  • Datenmodell erweitert um Positionen und Status-Historie
  • Subform für Inline-Bearbeitung von Auftragspositionen
  • 4 Aktionen mit Bedingungen und Rollenberechtigungen
  • Nachrichtenvorlagen mit dynamischen Platzhaltern
  • Hintergrund-Job für automatische Fälligkeits-Erinnerung
  • Vollständiger Workflow: Entwurf → Offen → In Bearbeitung → Erledigt
Was kommt als Nächstes? In Stufe 3 erweitern wir die App um KPI-Ampeln, Diagramme, ein Management-Dashboard, Datenimport aus Excel und PDF-Berichte.