In this pattern, the boundary event is an exception event.
Element construct
<scope ="ncname"
variableAccessSerializable="yes|no"
standard-attributes>
<faultHandlers>
<catch faultName="qname" faultVariable="ncname"/>
Target Process
</catch>
<catchAll>
Target Process
</catchAll>
</faultHandlers>
Source Process
</scope>
BPEL comments
1 A <scope> element is created and all subsequent constructs for this pattern reside within the scope.
2 The ncname of the scope attribute is taken from the name of the process that has the boundary event attached to it. "BPMN Process".name
3 The value of the <variableAccessSerializable attribute is determined from the process symbol that the boundary event is attached to "Process"."Access Serializable" The value will be either a "yes" or "no"
4 The boundary event definition is obtained from the sequence flow definition. "Sequence Flow". "Initiating Event"
5 The boundary event stereotype must be ONLY be "exception" and its value determined from "BPMN Event".Stereotype
6 The standard-attributes are determined from the process symbol that the boundary event is attached to.
7 A <faultHandlers> element is created.
8 If the boundary event definition property "BPMN Event"."Exception Code" is populated then a <catch> element is created.
9 The qname for the faultName attribute in the <catch> element is obtained from "BPMN Event"." Fault Name"
10 The ncname for the faultVariable attribute in the <catch> element is determined from "BPMN Event"."Fault Variable"
11 If the boundary event definition property "BPMN Event"."Exception Code" is empty then a <catchAll> element is created.
12 The sequence flow flowing out from the boundary event must connect to another symbol. All the subsequent activities sit within the <catchAll> element occupying the position indicated by the "Target Process"
13 In case the Source Process itself has detail by way of children diagrams or embedded activities, these will occupy the placeholder position indicated by "Source Process".