Fehlerbehandlung in Prozessen
Ereignis | Beschreibung |
---|---|
Fehlerzwischenereignis ![]() |
|
Fehlerereignisunterprozess, der mit einem Fehlerstartereignis beginnt ![]() |
|
Fehlerendereignis ![]() |
Löst einen Fehler aus. |
Fehler mithilfe von Fehlerzwischenereignissen abfangen
Bei Prozessen können Sie einer Aktivität ein Fehlerzwischenereignis zuordnen (anhängen) und dieses Ereignis mit einem Fehlerbehandlungsablauf oder einer Aktivität verbinden. Das angehängte Fehlerereignis wird als Fehlergrenzereignis bezeichnet.
Berücksichtigen Sie bei der Entscheidung für bzw. gegen die Verwendung von Fehlerzwischenereignissen die folgenden Punkte:
- Tritt ein Fehler auf, während ein Prozess eine Aktivität mit einem an die Aktivitätsgrenze angehängten Fehlerereignis ausführt, läuft der Prozess entlang der an das Fehlerereignis angehängten Sequenzlinie ab. Fehler werden in dem Ablauf behandelt, und anschließend wird die normale Verarbeitung fortgesetzt.
- Fehlerzwischenereignisse müssen an eine Aktivität angehängt sein.
- Eine Aktivität kann mehrere Fehlerereignisse enthalten, aber nur eines dieser Ereignisse fängt den Fehler ab.
- Ziehen Sie in Betracht, die Fehlerdaten anzugeben, um bestimmte Fehler abzufangen,
den Fehlercode nach den abgefangenen Fehlertypen zu filtern und die abgefangenen Fehler
einer Variablen zuzuordnen. Wenn alle Fehler abgefangen werden oder wenn nur ein
Fehlercode angegeben ist, werden die Fehlerdaten in einem Element
XMLElement
in der Variablentw.system.step.error
erfasst. - Fangen Sie, um Gültigkeitsfehler in einem Speicherservice für gemeinsam genutzte Geschäftsobjekte zu verarbeiten, den Fehler BPMBOSaveFailedError ab, der in der Liste der speziellen Fehler verfügbar ist. Dieser Fehler ist nur auf Knoten verfügbar, die den Ausführungskontext speichern, entweder automatisch (beispielsweise Coaches) oder explizit durch Aktivieren der Option Ausführungskontext speichern. Weitere Informationen finden Sie unter Services für gemeinsam genutzte Geschäftsobjekte speichern.
Fehler mithilfe von Fehlerereignis-Unterprozessen abfangen
Ein Ereignisunterprozess ist ein spezialisierter Typ von Unterprozess, der nicht Teil des regulären Sequenzablaufs des ihm übergeordneten Prozesses ist. Ein Fehlerereignis-Unterprozess ist ein Ereignisunterprozess, der ein Fehlerstartereignis enthält. Der Ereignisunterprozess ist durch keinen Sequenzablauf verbunden und wird nur ausgeführt, wenn das Startereignis in dem Ereignisunterprozess ausgelöst wird. Sie können Fehlerereignis-Unterprozesse verwenden, um Fehler in Ihrem Prozess zu behandeln.
- Erstellen Sie einen lesbaren Prozess, indem Sie das Fehlerereignis im Ereignisunterprozess platzieren, anstatt es im Prozess zu definieren.
- Verwenden Sie Ereignisunterprozesse, um den Fehlerbehandlungsablauf für mehrere Tasks in Ihrem Prozess wiederzuverwenden. Um einen Fehlerbehandlungsablauf mit angehängten Ereignissen wiederzuverwenden, müssen Sie für jede der Tasks ein Zwischenereignis anhängen und diese Ereignisse anschließend mit dem Fehlerbehandlungsablauf verbinden.
- Definieren Sie Datenobjekte, auf die Sie Zugriff haben, nur innerhalb des Ereignisunterprozesses. Sie können nur solche Datenobjekte definieren, die zu einem Unterprozess gehören. Die Übersichtlichkeit des übergeordneten Prozesses wird nicht durch unnötige Variablen beeinträchtigt.
Weitere Informationen zu Ereignisunterprozessen finden Sie unter Ereignisunterprozesse modellieren.
Beispiel einer Ausnahmebedingungsbehandlung auf Prozessebene
Mit der schreibgeschützten Systemvariablen tw.system.step.error können Sie auf die Informationen zugreifen, die zu einer Ausnahmebedingung gespeichert sind, die in einem Prozess aufgetreten ist.
Die Variable ist in einem Geltungsbereich zu einem Schritt und nicht in einem Prozess vorhanden. Sie kann daher im nächsten Schritt nicht abgerufen werden. Sie müssen sie stattdessen im Abschnitt der Nachzuweisungen zugreifen, der das Grenzzwischenausnahmebedingungsereignis enthält.
In der folgenden Abbildung wird dargestellt, wie eine Ausnahmebedingung modelliert und bearbeitet wird:
- Deklarieren Sie eine private Variable des Typs XMLElement, zum Beispiel tw.local.error. Weisen Sie ihr einen neuen Wert zu, zum Beispiel
tw.object.XMLElement("abc")
. - Erstellen Sie eine Nachzuweisung für das angehängte temporäre Ausnahmebedingungsereignis. Weisen Sie der Systemvariable der in Schritt 1 erstellten
Variable zu. Beispiel:
tw.local.error = tw.system.step.error
.Sie können den Wert in der lokalen Variable in den nächsten Schritten Ihres Prozess verwenden.
Fehler auslösen
Sie können ein Fehlerendereignis in Ihrem Prozess verwenden, um einen Fehlercode anzugeben und einen Fehlertyp für Fehler zuzuordnen, die von dem Ablauf eines Prozesses oder Service ausgelöst werden.
Berücksichtigen Sie beim Arbeiten mit Fehlerereignissen bzw. Ereignisunterprozessen auch, ob Fehler sofort behandelt werden können und danach die normale Verarbeitung fortgesetzt werden kann, oder ob ein anderer Fehler auf einer anderen Ebene ausgelöst werden kann. Implementieren Sie anschließend die Fehlerbehandlung von unten nach oben. In anderen Fällen kann es effizienter und übersichtlicher sein, wenn Unterprozesse wiederverwendet werden können. Legen Sie jeden verlinkten Prozess und Service so an, dass Fehler erfasst und behoben werden können. Ist auf der niedrigsten Ebene der Implementierung keine Korrektur möglich, können Sie zulassen, dass der Fehler um eine Ebene eskaliert wird, indem Sie entweder kein Fehlerereignis einfügen oder ein Fehlerereignis, das den Fehler in dem aufrufenden Service oder Prozess erneut auslöst, wie im folgenden Abschnitt gezeigt.
Wenn Sie beispielsweise sicherstellen möchten, dass jeder während der Laufzeit des Prozesses auftretende Fehler erfasst wird, können Sie einen übergeordneten Prozess erstellen, der eine Aktivität zum Aufrufen des Hauptprozesses als verlinkten Prozess enthält, und dann eine weitere Aktivität mit einem zugrunde liegenden Service zum Implementieren der Fehlerbehandlung, wie in der folgenden Abbildung dargestellt:
Dieser Designtyp stellt sicher, dass alle durch zugrunde liegende Prozesse und Services ausgelösten Fehler nach oben weitergegeben und entsprechend behandelt werden.