Zum Inhalt

Zeit, Fehler und Signale

Ein Prozess braucht neben Aufgaben und Gateways drei weitere Dinge: warten können, mit Fehlern umgehen und anderen Bescheid sagen. Dafür gibt es die Zwischen- und Randereignisse des Designers; alles, was sie nicht abdecken, löst der Process Explorer von Hand.

Warten

Das Timer-Zwischenereignis (Schraubenschlüssel an einem Zwischenereignis → Timer Intermediate Catch Event) hält den Vorgang an. Einziges Feld ist Wartezeit (Sekunden), auch als Platzhalter $(wartezeit); 86400 ist ein Tag. Typisch: „Erinnerung nach drei Tagen“, indem nach der Aufgabe ein Timer und danach eine E-Mail folgen, oder eine Pause vor dem nächsten Abruf einer Schnittstelle.

Zeitgrenzen für Aufgaben setzt das Zeitlimit der Benutzeraufgabe und der externen Aufgabe: nach Ablauf entweder Abbruch (Fehler) oder Weiter mit $$context.timedOut.

Fehler

Service-Aufgabe mit angehängtem Fehler-Randereignis, von dem ein Fluss zu einer Benutzeraufgabe Fehler prüfen führt
Ein Fehler-Randereignis leitet den Vorgang um, statt ihn scheitern zu lassen.

Scheitert ein Schritt, etwa weil ein Service eine Datei nicht lesen kann oder ein Ausdruck kein Ergebnis liefert, gibt es zwei Wege:

  • Ohne Vorsorge ist der Vorgang fehlgeschlagen. Der Process Explorer zeigt den Schritt und die Meldung; nach einer Korrektur geht es mit Ab letzter Aktivität fortsetzen, Mit nächster Aktivität fortfahren oder Gesamten Prozess neu starten weiter. Das ist für seltene Fehler der einfachste Weg.
  • Mit Fehler-Randereignis: Ein Zwischenereignis wird auf den Rand der Aufgabe gezogen und über den Schraubenschlüssel zum Error Boundary Event. Jeder Fehler dieser Aufgabe, auch ein Zeitlimit mit Abbruch (Fehler) und ein gescheiterter Teilprozess, verlässt die Aufgabe über diesen Weg; es gibt keine Fehlercodes. Der Weg dahinter läuft mit der Nachricht, wie sie vor der Aufgabe war; die Fehlermeldung selbst steht nur im Explorer („Fehler (gefangen)“). Dahinter folgen etwa eine Benutzeraufgabe „Fehler prüfen“ oder eine E-Mail an den Support.

Scheitert ein Vorgang endgültig, bekommt der Prozessverantwortliche (Prozess-Eigenschaften) die E-Mail „Fehler im Prozess ‹Name›“ mit Links in Explorer und Designer, sofern im Profil Fehler in meinen Prozessen eingeschaltet ist, siehe E-Mail-Benachrichtigungen.

Service-Aufgaben wiederholen vorübergehende Fehler von selbst bis zu dreimal (Zeitüberschreitung, kurz nicht erreichbar); fachliche Fehler nicht. Die HTTP-Anfrage (REST) hat eigene Felder retry und failOnStatus, siehe Vordefinierte Services. Fehler in Input- und Output-Ausdrücken stehen unter Daten im Prozess.

Signale

Das Signal-Zwischenereignis (Signal Intermediate Throw Event) sendet Signalname und Signal-Daten (JSON) an die Oberfläche, ohne den Vorgang anzuhalten. Empfänger sind die geöffneten Dashboards, die diesen Vorgang gestartet haben: Das Widget Prozess starten und die Planungstafel laden bei passendem Signalnamen neu, etwa bestellungGespeichert direkt nach dem Datenbank-Schritt, damit die Tabelle daneben die neue Zeile zeigt. Ein Empfangen von Signalen im Prozess gibt es nicht; Prozesse sprechen über Teilprozesse, Sende-Aufgaben oder Webhooks miteinander.

Nicht vorhanden

Die Menüs bieten Timer Boundary Event und Error End Event an; beide haben derzeit keine Wirkung. Für „Aufgabe nach x Tagen anders weiterführen“ das Zeitlimit mit Weiter nutzen, für ein abweichendes Ende ein normales Endereignis mit eigener Vorgangskennung.

Beispiel

Rechnungslauf der Musterfirma: Die Service-Aufgabe „PDF erstellen aus Template“ hat ein Fehler-Randereignis, das zur Benutzeraufgabe „Rechnung prüfen“ für die Buchhaltung führt. Nach dem Versand wartet ein Timer 14 Tage; danach liest ein Datenbank-Schritt den Status, und ein Gateway entscheidet, ob eine Erinnerung nötig ist.

Häufige Fragen

Ein Vorgang steht seit Tagen in einer Benutzeraufgabe.

Niemand hat sie erledigt; nach dem Zeitlimit (Standard 30 Tage) scheitert sie oder läuft weiter, je nach Einstellung. Vorher im Process Explorer mit Mit nächster Aktivität fortfahren weitersetzen oder die Zuweisung prüfen.

Soll jeder Service ein Fehler-Randereignis bekommen?

Nein. Nur dort, wo ein fachlicher Umgang sinnvoll ist. Alles andere landet als fehlgeschlagener Vorgang im Explorer und wird dort behoben.

Kann ein Timer auf eine Uhrzeit warten?

Das Zwischenereignis wartet nur Sekunden. Die Sekunden bis zu einem Zeitpunkt rechnet ein Ausdruck im Input eines vorherigen Schritts aus, etwa ($toMillis(faellig_am) - $toMillis($now())) / 1000.

Nächster Schritt

Beispiel: Urlaub beantragen: alle Elemente in einem vollständigen Prozess.