Fault Handler

Innerhalb eines Scopes oder einer invoke Activity können Fault Handler deklariert werden. Ein Fault Handler reagiert auf eine benannte Ausnahme, oder, wenn keine Ausnahme benannt ist, auf alle Ausnahmen mit Daten, die zu seiner Fehlervariablen passen.

Wenn eine Ausnahme von einem Scope nicht explizit behandelt wird, dann werden die Compensation Handler der eingeschlossenen Scopes in umgekehrter Ausführungsreihenfolge aufgerufen. Danach wird die Ausnahme in den umfassenden Scope propagiert. Wenn auch der Process Scope den Fehler nicht explizit behandelt, dann endet die Process Instance, als ob die Activity terminate aufgerufen wurde.

Für die Behandlung eines Fehlers können Compensation Handler angestoßen werden. Der Compensation Handler für einen Scope ist ab dem Zeitpunkt verfügbar, ab dem sein zugehöriger Scope erfolgreich beendet wurde.

Generell werden beim Auftreten einer Ausnahme alle aktiven Activities der Arten wait, receive, reply und invoke sowie alle strukturierten Activities im Scope und allen beliebig tief eingeschachtelten enthaltenen Scopes vorzeitig beendet. Scopes können auf das vorzeitige Ende reagieren, indem sie einen Fault Handler für die Ausnahme bpws:forcedTermination definieren.

<faultHandlers>?
<!-- there must be at least one fault handler or default -->
<catch faultName="qname"? faultVariable="ncname"?>*
activity
</catch>
<catchAll>?
activity
</catchAll>
</faultHandlers>