Abbrechen
Ereignisaktion - Kurzfassung
Zweck: Bricht Ereignisbehandlungen sofort mit oder ohne Anzeige einer Fehlermeldung ab und führt einen Rollback für die Transaktion aus. In einem Client Workflow-Verhalten wird ein "Fehlerinformation"-Objekt an die Aktionen bei "falsch" übergeben.
Das Ausführen der Abbrechen-Ereignisaktion beendet die Ereignisverarbeitung sofort. Abhängig vom Kontext hat dies unterschiedliche Auswirkungen:
Wirkung |
in einem Client Workflow-Verhalten (Formular) |
|
Workflow |
Abbruch der Ereignisverarbeitung und |
Abbruch des Client Workflow-Verhaltens und Ausführen der Aktionen bei "falsch" mit einer "Fehlerinformation" (ErrorInfo) als Rückgabewert. |
Rückmeldung |
Abhängig vom Parameter Fehlertyp (AbortType) wird eine Fehlermeldung in der Mimik für den ausgewählten Typ angezeigt oder "unterdrückt" (s. "Parameter", unten). |
Unabhängig vom ausgewählten Fehlertyp und erscheint keine Meldung. ►HINWEIS◄ Eine Benachrichtigung kann entweder durch eine vorab im Client Workflow ausgeführte Hinweis anzeigen (Popup)-Ereignisaktion oder per Hinweis anzeigen-Aktion unter den Aktionen bei "falsch" erfolgen. Dabei können Felder des ErrorInfo-Objekts ausgewertet werden, die teilweise abhängig von den Parametern für die Abbrechen-Ereignisaktion belegt sind. |
Der Text für die ggf. ausgegebene Fehlermeldung (errorText) wird durch eine der folgenden Methoden bestimmt:
Direkteingabe im Parameter Standardfehlermeldung (ohne Rücksicht auf die Aktuelle Sprache)
Wert-Konfiguration für den Parameter Standardfehlermeldung (ggf. lokalisierbar über den Wert aus Sprachverwaltung-Wertauflöser)
Verweis auf einen Fehlercode, der in der Sprachverwaltung (Bundle: error, Resource: <Fehlercode>) oder über Firmenspezifische Sprachanpassungen lokalisiert ist.
Optional kann die Konfiguration Parameter definieren, die zur Laufzeit - sofern vorhanden - Platzhalter ({0}, {1}, ...) in der Standardfehlermeldung oder im Lokalisierungstext für den angegebenen Fehlercode ersetzen.
►HINWEIS◄ Die Werte der Parameter können wahlweise durch statische Direkteingabe oder per Wert-Konfiguration bestimmt sein. Bei Bedarf kann auch hier der Wert aus Sprachverwaltung-Wertauflöser eingesetzt werden, um lokalisierte Texte als Parameterwert zurückzugeben.
Parameter
Fehlertyp
Die optionale Auswahl für den Parameter Fehlertyp bestimmt in Ereignisbehandlungen und in einem Client Workflow den Wert für das Feld errorLevel (s. Tabellenspalte) im beim Abbrechen zurückgegebenen "Fehlerinformation"-Objekt (ErrorInfo).
Die Auswahlmöglichkeiten für den Fehlertyp sind durch die statische Aufzählung "Abbruchtyp" (AbortType) vordefiniert.
Ohne Auswahl wird der Standard-Fehlertyp "Process Exception" (ProcessException) ausgelöst bzw. der errorLevel-Wert 1 zugeordnet.
Fehlertyp |
errorLevel |
Beschreibung |
Darstellung |
Semantic Exception |
0 |
Die Fehlermeldung wird als Hinweis-Dialog angezeigt, der per Klick auf den Button "OK" oder das "X"-Symbol rechts oben geschlossen werden kann. |
|
Process Exception |
1 |
Die Fehlermeldung wird als Fehler-Dialog angezeigt, der per Klick auf den Button "OK" oder das "X"-Symbol rechts oben geschlossen werden kann. Per Klick auf "Mehr" können Details zum Fehler (bzw. Abbruch) eingeblendet werden. Neben anderen Informationen erscheint dort auch Textwert des Parameters Fehlercode (sofern verwendet). Per Klick auf den Button "Fehlerbericht erstellen" können diese Daten auch als Fehlerbericht (html-Dokument) heruntergeladen werden. |
|
Notification: Erfolg |
2 |
Am rechten Bildschirmrand erscheint die Fehlermeldung für einige Sekunden als Notification vom Typ "Erfolg" mit dem Titel "Hinweis". |
|
Notification: Warnung |
3 |
Am rechten Bildschirmrand erscheint die Fehlermeldung für einige Sekunden als Notification vom Typ "Warnung" mit dem Titel "Warnung". |
|
Notification: Fehler |
4 |
Am rechten Bildschirmrand erscheint die Fehlermeldung für einige Sekunden als Notification vom Typ "Fehler" mit dem Titel "Fehler". |
|
Notification: Info |
5 |
Am rechten Bildschirmrand erscheint die Fehlermeldung für einige Sekunden als Notification vom Typ "Info" mit dem Titel "Hinweis". |
|
Unterdrücken |
6 |
Der Workflow ohne jegliche Benachrichtigung abgebrochen. |
(keine Rückmeldung für den Anwender) |
►HINWEISE◄
Unabhängig von der Auswahl für den Fehlertyp wird das Ausführen der Abbrechen-Ereignisaktion zur Laufzeit immer als "Process Exception" gewertet. Im Kontext von Ereignisbehandlungen wird daher immer ein Rollback ausgelöst.
Die konfigurierte Rückmeldung erscheint nicht beim Ausführen von Tests. Stattdessen erscheint als Ergebnis immer ein "Fehlerinformation"-Objekt (ErrorInfo). Der Fehlertyp wird spiegelt sich in dessen errorLevel-Feld (s. a. Tabellenspalte oben).
Wird die Abbrechen-Ereignisaktion innerhalb einer Try-Catch-Aktion ausgeführt, steht dasselbe "Fehlerinformation"-Objekt (ErrorInfo) im "Catch"-Block zur Verfügung.
Wurde die abgebrochene Ereignisverarbeitung durch ein Lobster_data-Profil (z. B. einen Import) ausgelöst, wird dort immer eine "Process Exception" gemeldet.
Wird als Rückmeldung eine Notification eines beliebigen Typs angezeigt, öffnet ein Mausklick auf die Benachrichtigung die Fehlermeldung als Dialog wie beim Fehlertyp "Process Exception".
Fehlercode
Wenn für den optionalen Parameter Fehlercode ein statischer Textwert eingetragen wird, wird zur Laufzeit geprüft, ob ein Lokalisierungseintrag für diesen Text als Resource Name im Bundle error existiert (Sprachverwaltung bzw. Firmenspezifische Sprachanpassungen).
Existiert ein Lokalisierungseintrag für den Fehlercode im Bundle error, wird als Fehlermeldung die Lokalisierung für die Aktuelle Sprache aus diesem Lokalisierungseintrag verwendet. Der Parameter Standardfehlermeldung wird dann ignoriert.
Sind im Wertauflöser Parameter konfiguriert, werden diese ggf. auf Platzhalter im Lokalisierungstext für den Fehlercode abgebildet.
Beispiel:
Der Fehlercode CORESYSTEM_BaseDataManager_failedToDelete ist per Standard in der Sprachverwaltung wie folgt lokalisiert:
Resource Bundle |
Resource Name |
Deutsch |
Englisch |
... |
error |
CORESYSTEM_BaseDataManager_failedToDelete |
Löschen nicht möglich: {0} |
Failed to delete: {0} |
|
Die Fehlermeldung kann über den Platzhalter {0} per Parameter individualisiert werden:
Konfiguration:
|
Laufzeitbeispiel: Aktuelle Sprache: "Deutsch"
Laufzeitbeispiel: Aktuelle Sprache: "Englisch" |
►ANMERKUNG◄ In der Praxis wäre anstelle des simplen statischen Texts ("Sorry!") im ersten Parameter ({0}) sicher eher eine Wert-Konfiguration anzutreffen, etwa um zu spezifizieren, welches Objekt nicht gelöscht werden könnte und/oder warum.
Standardfehlermeldung
Im Parameter Standardfehlermeldung kann per Direkteingabe ein statischer Klartext eingegeben oder - nach einem Klick auf den kleinen grauen Pfeil links unten - eine Wert-Konfiguration vorgenommen werden:
Direkteingabe |
Wert-Konfiguration |
|
|
Laufzeitbeispiel: mit Fehlertyp "Notification: Warnung"
|
Laufzeitbeispiel: mit Fehlertyp "Notification: Warnung"
|
Die Standardfehlermeldung definiert den Text, der genau dann als Fehlermeldung ausgegeben wird bzw. im errorText-Feld erscheint, wenn die folgende Bedingung erfüllt ist:
Es wurde kein Fehlercode angegeben oder für das Bundle error wird kein Lokalisierungseintrag gefunden, dessen Resource Name mit dem angegebenen Fehlercode exakt übereinstimmt.
Sofern der statisch eingegebene oder zur Laufzeit per Wert-Konfiguration zur ermittelte Text Platzhalter enthält, können diese durch Parameter (s. u.) gefüllt werden.
►HINWEIS◄
Liefert der Fehlercode einen Lokalisierungseintrag, für den als Lokalisierung für die Aktuelle Sprache eine leere Zeichenfolge gilt, wird nicht die Standardfehlermeldung als Fehlermeldung gesetzt sondern die leere Zeichenfolge.
Parameter
Der Konfiguration können per Klick auf das
-Symbol optional Definitionen für Parameter hinzugefügt werden.
Jeder Parameter definiert einen Text, für den Platzhalter im Text für die Fehlermeldung, der sich auf die Indexnummer des Parameters in der Konfiguration bezieht.
Der erste Parameter adressiert den Platzhalter {0}, der nächste den Platzhalter {1}, usw.
Derselbe Parameter kann in der Fehlermeldung mehrfach adressiert werden, indem der Platzhalter wiederholt eingesetzt wird.
Platzhalter können sowohl im Lokalisierungstext für einen Fehlercode (s. o.) als auch in der Standardfehlermeldung (s. o.) enthalten sein.
Für jeden Parameter kann wahlweise per Direkteingabe ein statischer Klartext eingegeben oder - nach einem Klick auf den kleinen grauen Pfeil links unten - eine Wert-Konfiguration vorgenommen werden.
In den folgenden Beispielen werden jeweils beide Optionen (Direkteingabe, Wert-Konfiguration) für je einen Parameter genutzt.
Standardfehlermeldung mit Platzhaltern im statischen Text |
Fehlercode mit Platzhaltern im Lokalisierungstext |
►HINWEIS◄ Der Objekt-Feld-Wertauflöser für den ersten Parameter liefert das Feld "ID" (id) des Bezugsobjekts im Kontext der Abbrechen-Ereignisaktion.
|
Lokalisierung für Fehlercode:
|
Laufzeitbeispiel: mit Fehlertyp "Notification: Fehler"
|
Laufzeitbeispiel: mit Fehlertyp "Notification: Fehler"
|
►ANMERKUNG◄ Die Direkteingabe des Texts "LÖSCHEN" mag im linken Fall Sinn machen, weil die Fehlermeldung insgesamt keine Lokalisierung berücksichtigt. Rechts dagegen ist die Verwendung von "LÖSCHEN" kritisch, wenn eine andere Aktuelle Sprache als "Deutsch" verwendet wird. Denn dann würde zwar die Fehlermeldung lokalisiert aber nicht der Text für den Platzhalter {1}.
Sonderfall
Falls die Wert-Konfiguration für einen Parameter insgesamt den Wert einer Dynamischen Aufzählung zurückgibt, greift AUSNAHMSWEISE auch im Kontext von Ereignisbehandlungen ausnahmsweise die Lokalisierung für die Aktuelle Sprache.
Beispiele
Einfacher Anwendungsfall: Client Workflow ohne Meldung abbrechen
Im Kontext eines Formulars (s. Portale bzw. Erfassungsmasken) soll ein Client Workflow-Verhalten abgebrochen werden, wenn die initial ausgeführte Suche (Ereignisaktion) kein Ergebnis liefert, die auf ein Benutzerkonto (s. Benutzer) zugreifen soll.
Konfiguration:
Die Aktionen im Client Workflow-Verhalten werden wie rechts abgebildet konfiguriert:
|
|
Laufzeitverhalten:
Sofern der Zugriff auf das "gesuchte" Benutzerkonto scheitert, bricht die Ereignisverarbeitung innerhalb des Client Workflow-Verhaltens sofort ab:
Sofern unterhalb der oben dargestellten Wenn Dann Sonst-Ereignisaktion weitere Ereignisaktionen konfiguriert sind, werden diese nicht ausgeführt.
Auf der Ebene des Client Workflow-Verhaltens (s. Verhalten) werden außerdem die Aktionen bei "falsch" ausgeführt (sofern vorhanden) und nicht die Aktionen bei "wahr".
Als Eingabewert ($input) wird den Aktionen bei "falsch" ein "Fehlerinformation"-Objekt (ErrorInfo) übergeben, dessen Feld errorLevel mangels Auswahl für den Fehlertyp in der Abbrechen-Ereignisaktion den Standardwert 1 für den Fehlertyp "Process Exception" (ProcessException) angibt.
►HINWEIS◄ Über das "Fehlerinformation"-Objekt als Rückgabewert kann in den Aktionen bei "falsch" eine Hinweis anzeigen-Aktion ausgeführt werden.
Konfiguration:
Im Verhalten mit oben gezeigten Client Workflow wird unter den Aktionen bei "falsch" wie rechts abgebildet eine Hinweis anzeigen-Aktion eingerichtet, die durch die Abbrechen ausgelöste Fehlermeldung sichtbar macht:
Laufzeitbeispiel:
|
|
|
|
►ANMERKUNG◄ Der Fehlertyp (bzw. der errorLevel kann zwar nicht dynamisch auf die Auswahl für den Typ in der Hinweis anzeigen-Aktion abgebildet werden. Bei Bedarf könnte man allerdings abhängig vom errorLevel-Wert das "Fehlerinformation"-Objekt an eines von mehren Verhalten übergeben, in denen jeweils ein spezifischer Typ für die Hinweis anzeigen-Aktion verwendet wird. Lediglich das Erscheinungsbild für den Standard-Fehlertyp mit den oben beschriebenen erweiterten Interaktionsmöglichkeiten kann so nicht simuliert werden.
Konfiguration:
Die Kondfiguration für das bestehende Verhalten ("userSearch") wird wie rechts gezeigt angepasst:
►ANMERKUNG◄ Die spezifischen Prüfausdrücke sollten so definiert werden, dass jeder errorLevel-Wert immer genau einen (oder keinen) Prüfausdruck erfüllt, damit nicht mehrere Meldungen gleichzeitig erscheinen. |
|
Diese Art der "Fallunterscheidung" ist nur dann wirklich sinnvoll, wenn ein Client Workflow mehrere Instanzen der Abbrechen-Ereignisaktion beinhaltet und sich diese auf zu unterscheidende Fehlertypen beziehen.
►HINWEIS◄ Vergleichbare Ergebnisse kann man auch erzielen, wenn man im Client Workflow unmittelbar vor der Abbrechen-Ereignisaktion eine Hinweis anzeigen (Popup)-Ereignisaktion ausführt, die als Fehlermeldung parametriert wird. Dann erübrigt sich die Parametrierung der Abbrechen-Ereignisaktion und die Konfiguration von Aktionen bei "falsch" eventuell komplett.