Unit 11: Faults. BPEL Fundamentals, Part 1

Similar documents
Unit 16: More Basic Activities

Unit 20: Extensions in ActiveBPEL

Middleware for Heterogeneous and Distributed Information Systems Exercise Sheet 8

BPEL4WS (Business Process Execution Language for Web Services)

We recommend you review this before taking an ActiveVOS course or before you use ActiveVOS Designer.

ActiveBPEL Fundamentals

ActiveBPEL Fundamentals

Bachelor s Thesis. Scope-based FCT-Handling in WS-BPEL 2.0

Composing Web Services using BPEL4WS

Lesson 10 BPEL Introduction

Business Process Execution Language


BPEL Business Process Execution Language

C IBM. IBM Business Process Manager Advanced V8.0 Integration Development

02267: Software Development of Web Services

Copyright Active Endpoints, Inc. All Rights Reserved 1

Lecture 20. Java Exceptional Event Handling. Dr. Martin O Connor CA166

Web Services Business Process Execution Language Version 2.0

Implementing a Business Process

Lesson 11 Programming language

ActiveVOS Fundamentals

ActiveWebflow Designer User s Guide

Stack of Web services specifications

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far

Developing BPEL processes. Third part: advanced BPEL concepts and examples

Internal Classes and Exceptions

Exception Handling Introduction. Error-Prevention Tip 13.1 OBJECTIVES

Enterprise System Integration. Lecture 10: Implementing Process-Centric Composite Services in BPEL

Translating BPEL Processes into Open Workflow Nets GNU BPEL2oWFN Version 2.0.2, 15 June 2007 User s Manual. Niels Lohmann

Building E-Business Suite Interfaces using BPEL. Asif Hussain Innowave Technology

Oracle SOA Suite 10g: Services Orchestration

BPEL Research. Tuomas Piispanen Comarch

D Fault Handling. Note: The solution for this chapter can be found in c:\po\solutions\apd

Consolidation of Interacting BPEL Process Models with Fault Handlers

Chapter 7 - Web Service Composition and E-Business Collaboration

Object oriented programming. Instructor: Masoud Asghari Web page: Ch: 7

Java How to Program, 10/e. Copyright by Pearson Education, Inc. All Rights Reserved.

The role of semantic analysis in a compiler

Syntax Errors; Static Semantics

KillTest. 半年免费更新服务

About this exam review

WS-BPEL 2.0 Features and Status Overview

Betsy - A BPEL Engine Test System

11Debugging and Handling. C# Programming: From Problem Analysis to Program Design 2nd Edition. David McDonald, Ph.D. Director of Emerging Technologies

Designing Robust Classes

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End

VIDYAA VIKAS COLLEGE OF ENGINEERING AND TECHNOLOGY TIRUCHENGODE UNIT I

Project Compiler. CS031 TA Help Session November 28, 2011

This presentation is a primer on WSDL Bindings. It s part of our series to help prepare you for creating BPEL projects. We recommend you review this

Adapter Technical Note Technical Note #004: Adapter Error Management

These are notes for the third lecture; if statements and loops.

Advanced BPEL. Variable initialization. Scope. BPEL - Java Mapping. Variable Properties

MTAT Enterprise System Integration. Lecture 10. Process-Centric Services: Design & Implementation

Software Design and Analysis for Engineers

WS-BPEL Standards Roadmap

Classes, interfaces, & documentation. Review of basic building blocks

Comp 249 Programming Methodology Chapter 9 Exception Handling

BBM 102 Introduction to Programming II Spring Exceptions

Vendor: IBM. Exam Code: C Exam Name: IBM Business Process Manager Advanced V8.0 Integration Development. Version: Demo

Administration Console

Investigation of BPEL Modeling

JavaScript: Sort of a Big Deal,

Cpt S 122 Data Structures. Introduction to C++ Part II

BBM 102 Introduction to Programming II Spring 2017

The University of Melbourne Department of Computer Science and Software Engineering Software Design Semester 2, 2003

Business Process Modeling Language

Compensations in Orchestration Languages

WPF and MVVM Study Guides

CS 3 Introduction to Software Engineering. 3: Exceptions

Programming Languages Third Edition. Chapter 9 Control I Expressions and Statements

Chapter 14. Exception Handling and Event Handling

An Async Primer. By Bill Wagner August Introduction

Java Loose Ends. 11 December 2017 OSU CSE 1

Lezione 15 BPMN-BPEL Mapping

Object Oriented Programming. Week 7 Part 1 Exceptions

CS11 Introduction to C++ Fall Lecture 6

ApacheCon NA How to Avoid Common Mistakes in OFBiz Development Presented by Adrian Crum

CATCH Me if You Can Doug Hennig

Exceptions in Java

A Technical Comparison of XPDL, BPML and BPEL4WS

Asynchronous Functions in C#

Oracle SOA Suite 12c: Build Composite Applications

Chapter 9: Dealing with Errors

JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1)

엄현상 (Eom, Hyeonsang) School of Computer Science and Engineering Seoul National University COPYRIGHTS 2017 EOM, HYEONSANG ALL RIGHTS RESERVED

Handling Exceptions. Introduction. Using the Program Halt Handler CHAPTER 10

7. BPMN by Example. BPMN Working Draft. Figure 121 Voting Process. Copyright 2004, BPMI.org All Rights Reserved 201 / 281.

An overview of this unit. Wednesday, March 30, :33 PM

Laboratorio di Tecnologie dell'informazione

TMQL issues. October 14, slide 1

Nested Classes in Java. Slides by: Alon Mishne Edited by: Eran Gilad, Eyal Moscovici April 2013

Chapter 9. Exception Handling. Copyright 2016 Pearson Inc. All rights reserved.

Oracle SOA Suite 11g: Build Composite Applications

Declarations and Access Control SCJP tips

Exception Handling. Sometimes when the computer tries to execute a statement something goes wrong:

Assoc. Prof. Marenglen Biba. (C) 2010 Pearson Education, Inc. All rights reserved.

Supplemental Handout: Exceptions CS 1070, Spring 2012 Thursday, 23 Feb 2012

Exception Handling. Run-time Errors. Methods Failure. Sometimes when the computer tries to execute a statement something goes wrong:

Implementing BPEL4WS: The Architecture of a BPEL4WS Implementation.

JBoss Enterprise SOA Platform 5

Transcription:

Unit 11: Faults BPEL Fundamentals, Part 1 This is Unit #11 of the BPEL Fundamentals I course. In past Units we ve looked at ActiveBPEL Designer, Workspaces and Projects and then we created the Process itself. Next, we looked at declaring Imports, PartnerLinks and Variables and how to create Interaction Activities in various ways. Then, we looked at our first container activity, the Sequence, and at Assignments and Copies and finally, in the last two units we studied Correlation and Scopes. In this Unit we will take a look at a new topic, BPEL Faults. Endpoints, Inc. 1

Unit Objectives At the conclusion of this unit, you will be familiar with: Signaling faults Handling faults 2 Endpoints, Inc. In BPEL, a Fault is a disruption of process execution that results in a signal being sent from the system. Fault Handling is what we do when this happens. Fault Handling can be thought of as a "mode switch" from the normal processing of the scope or process. Its aim is to undo the partial and unsuccessful work of the scope in which the fault occurred. Endpoints, Inc. 2

Signaling Faults Overview During the execution of a BPEL process, an event may occur that disrupts the normal flow of a business process Business-centric faults Invoking Web services may result in a WSDL fault BPEL process may explicitly throw a fault Using the throw and rethrow activities System-centric faults Faults may be raised automatically via internal or external error conditions Includes the built-in standard BPEL faults When a fault occurs, normal processing is halted Control is transferred to the appropriate fault handler 3 Endpoints, Inc. When an event occurs that disrupts the normal flow of our business process, this is called a fault. How do we classify these faults? There are lots of ways that organizations classify faults, here is a simple one. Faults can be divided between those generated by our (or by our partner s) Business Logic and those generated by the system at Runtime, either locally or remotely. Examples: Business Faults = Use the Throw and ReThrow activities invalid Customer number (local) throws a fault defined in our WSDL credit check problems (remote) throws a fault defined in our partner s WSDL Runtime Faults = Are generated by the system and includes all standard BPEL faults invalid variable type used as a parameter (local) site of the invoked service is temporarily down (remote) When a fault is thrown, normal processing halts and control is sent to Fault Handler, if one is defined. Note: Invoked faults are those returned when we attempt to Invoke a Web Service. The BPEL 2.0 Spec differentiates faults as either internal faults or invoked faults. The ActiveBPEL Engine has a Retry setting that tells it whether to try again if an invoked site throws a runtime fault. This has settings for whether we try again and, if we do, how long to wait. (These settings can be linked to any SLAs that apply to the invoked service.) Endpoints, Inc. 3

Business Faults in WSDL Invoking synchronous operations on partnerprovided Web services may return a WSDL fault message WSDL faults are identified in BPEL by their qualified name Comprised of the WSDL's target namespace and the ncname of the fault <porttype name="calculatorporttype"> <operation name="calculatoroperation"> <input message="tns:calculatorinput"/> <output message="tns:calculatoroutput"/> <fault name="calcfault" message="tns:badargumentfault"/> </operation> </porttype> 4 Endpoints, Inc. Here we see an example of a fault that is thrown when a bad argument is used in a process. Starting at the top in the WSDL file: The porttype is CalculatorPortType, the Operation is CalculatorOperation, and there are both input and output messages, CalculatorInput and CalculatorOutput. In this example, the fault s name is calcfault and the Fault s QName is tns:badargumentfault, which is defined somewhere in one of our other WSDL files. Endpoints, Inc. 4

BPEL Standard Faults ambiguousreceive completionconditionfailure conflictingreceive conflictingrequest correlationviolation invalidbranchcondition invalidexpressionvalue invalidvariables joinfailure mismatchedassignmentfailure missingreply missingrequest scopeinitializationfailure selectionfailure sublanguageexecutionfault uninitializedparterrole uninitializedvariable unsupportedreference xsltinvalidsource xlststylesheetnotfound 5 Endpoints, Inc. Here is a list of the standard BPEL faults. We have mentioned these before and will be referring to them continuously through this Unit. Endpoints, Inc. 5

Unit Objectives At the conclusion of this unit, you will be familiar with: Signaling faults Handling faults 6 Endpoints, Inc. So, now that a fault has been signalled, what do we do? Endpoints, Inc. 6

BPEL Structure Roadmap process partnerlinks messageexchanges variables correlationsets faulthandlers catch eventhandlers catchall Global Declarations scope partnerlinks messageexchanges variables correlationsets faulthandlers catch catchall terminationhandlers compensationhandlers eventhandlers Local Declarations 7 Endpoints, Inc. We can handle them. Here we re showing the roadmap to include both scope and process level fault handlers. We can define them globally, i.e., at the process level, or we can define them locally - at a particular Scope s level - and we can define one or more Catches and a catchall within the same handler. Endpoints, Inc. 7

Fault Handler Overview Used to explicitly handle faults that might occur in a business process Fault handlers can be defined For the process For a scope Inline for the invoke activity Bound to a particular kind of fault using a catch Any fault not caught by a more specific fault handler using a catchall Once a scope receives a fault, normal processing of all nested activities are halted scope is considered to have ended abnormally 8 Endpoints, Inc. The purpose of the handler is to explicitly handle faults that occur in a process. Fault handlers can be defined for the process, for the scope level or inline for a specific Invoke activity. We ll cover inline fault handlers later on. Once thrown, a fault goes to a Catch (for a specific fault) or to a catchall (for anything not handled otherwise.) Once the scope receives a fault, all processing is halted, including nested activities, and the scope is considered to have ended abnormally. At this point the Fault Handler takes over. Endpoints, Inc. 8

Fault Handler Overview (cont.) Fault handlers provide a way to separate out normal process logic from error handling logic Makes normal processing logic less cluttered and therefore easier to read Position fault handlers strategically Catch and handle all exceptions from where you want your process to recover 9 Endpoints, Inc. Now let's step back and look at fault handlers from a higher level. We don t need Fault Handling, but we should have it. Like airbags and smoke alarms, you don t need them, but they are highly recommended. Fault Handlers separate normal process logic from fault logic, i.e., the execution of normal activities vs. error handling logic that is in the Fault Handler. You should position your Fault Handlers strategically. By doing this, you don t have to add fault logic for each individual activity, but rather only for logical units of work. This reduces the overall volume of fault handling code and makes the process less cluttered and much easier to read. Position Fault Handlers at those points where you would want the process to recover from, or to, depending on how you look at it. Endpoints, Inc. 9

Fault Handler Syntax <faulthandlers>? <!-- Note: There must be at least one faulthandler --> <catch faultname="qname"? faultvariable="bpelvariablename"? ( faultmessagetype="qname" faultelement="qname" )? >* activity </catch> <catchall>? activity </catchall> </faulthandlers> 10 Endpoints, Inc. Here is the BPEL Fault Handler syntax. If we declare a faulthandlers section we must have something inside that definition. Therefore, we need to define one or more Catches and/or a catchall. If we define a Catch, it will optionally have a single associated faultname and optionally a single associated faultvariable. The faultvariable can also optionally have data that is of the faultmessagetype or faultelement type. If you notice the * character after the closing angle bracket of the Catch, you can see that we can declare as many Catches as are needed. The catchall is optional, and if we declare a catchall, we can have only one. Both Catches and catchalls have a primary activity to handle the actual fault recovery's actions. Definitions to consider when evaluating the fault handler selection rules that follow: - The Fault is the QName (i.e., the namespace prefix + ":" + the fault name) of the Fault that is actually thrown. - The Fault Variable is an optional variable associated with the fault. It holds the fault's data. It is implicitly declared by virtue of being used as the fault handler's "fault variable" attribute and is local to the fault handler. It is not visible or usable outside of the fault handler in which it is declared. - The Fault Variable Element QName is the data that is inside the variable, i.e., its contents. It can be either a MessageType (and the attribute will be of the faultmessagetype) or an Element type (and the attribute will be of the elementtype), and there can only be one. Note that the variable data is only considered by the handler's selection process if the data is a "user-defined" i.e., non-standard - Schema Element Type. What this means is that if the variable data is a Standard Schema Type (such as a boolean or a string) then that data is not Copyright considered 2004-2007 by the Active fault handler. If it is a non-standard Schema Element Type that is Endpoints, defined Inc. one of your own Schemas (or imported by one of your WSDLs) then the 10 handler assumes that the type match is significant and therefore usable in the

catch Overview Used to handle a specific fault, based on matching: Both the Name of the fault and the type of variable associated with the fault Name of the fault Globally unique fault QName Type of variable associated with the fault Two types: WSDL Message Type (faultmessagetype) or XML Schema Element (faultelement) Fault variables must be explicitly declared in the associated catch 11 Endpoints, Inc. We will look at the "Catch" first. Each Catch is created to handle a specific fault. There are different data points used to match a Catch to particular Fault: 1.) by FaultName and faultvariable type 2.) By Fault Name only (which must be a Globally Unique QName) // otherwise it is ambiguous 3.) By faultvariable Type - WSDL Message Type (the faultmessagetype) or - XML Schema Element (the faultelement type) As was discussed earlier, Fault Variables must be explicitly defined inside the Catch that will handle that particular fault. Endpoints, Inc. 11

catchall Overview Catches any fault not caught by a more specific catch handler 12 Endpoints, Inc. The "catchall" activity is created to catch anything not handled by a catch. This activity functions like the Default Case of a Case/Switch/Select statement in other languages. You can also think of it as being like a coin sorter and the Catch is the bucket that gets the coins that don t fit into any other slot. Endpoints, Inc. 12

Fault Handler Scenario Scope Fault Handler catch catchall Assign Invoke Reply Empty Invoke 13 Endpoints, Inc. Here we have a typical Fault Handling scenario. We have an outer Sequence activity which contains a Scope, followed by an Invoke activity. The Scope s primary activity is also a Sequence, which is on the left, and has an Assign followed by an Invoke. If we a fault is thrown during the execution of the Assign, we end the activity immediately, and the Invoke that comes after it is never called. Since the Scope doesn t complete normally, control passes to the defined Fault Handler for the scope. The Fault Handler is on the right. Inside the fault handler we have one Catch for a specific fault, that calls a Reply activity. Any fault other than the one specifically associated with the Catch will not be routed to the Catch, so we have a catchall, which contains an Empty activity. Once the Fault Handling for the Scope is completed the Scope itself is completed, and then the Sequence s final activity, the Invoke, is fired. Endpoints, Inc. 13

Fault Handler Example <sequence> <scope> <faulthandlers> <catch faultname="ns1:somethingwentwrong"> <reply... /> </catch> <catchall> <empty /> </catchall> </faulthandlers> <sequence> <assign... /> <invoke... /> </sequence> </scope> <invoke... /> </sequence> 14 Endpoints, Inc. Here is the Fault Handling syntax for the previous example. We have the enclosing Sequence, and then the child Scope, and inside the scope is Fault Handler, which has one Catch and a catchall, then we see the Sequence which has an Assign and an Invoke. Below the Scope is the rest of the original Sequence, which is simply the Invoke activity at the bottom. The Catch is there to handle a specific fault called ns1:somethingwentwrong, which it will handle by executing a Reply activity. If any other Faults are encountered, they are handled by the catchall, which executes the Empty activity. Once the Fault Handling is complete, the Scope is complete, and the Invoke activity will then execute and complete the Sequence. Endpoints, Inc. 14

Fault Handler Selection Rules Review Fault with no associated fault data 1. catch handler that specifies only a matching faultname value will be selected 2. catchall handler will be selected 3. fault will be handled by the default fault handler 15 Endpoints, Inc. Here is a brief review of the Fault Handling rules in BPEL where there is a fault thrown, but there is no associated fault data. 1.) If the Fault Name matches the Fault Name in a Catch then it is handled by the Catch. 2.) If the Fault Name does not match then it is handled by the catchall. 3.) If no catchall is defined, it is handled by the Default Fault Handler. Endpoints, Inc. 15

Fault Handler Selection Rules Review (cont.) Fault has associated fault data 1. catch handler that has a matching faultname value and a faultvariable whose type matches the fault's data will be selected 2. catch handler that has a matching faultname value and a faultvariable whose element QName matches the fault's data element QName will be selected 3. catch handler that has a matching faultname and no faultvariable defined will be selected 4. catch handler with no specified faultname and with a faultvariable whose type matches the fault's data will be selected 5. catch handler with no specified faultname and a faultvariable whose element QName matches the fault's data element QName will be selected 6. catchall handler will be selected 7. fault will be handled by the default fault handler 16 Endpoints, Inc. Here are seven situations for handling a fault that is thrown when that fault has associated data. Data thrown with a fault can be either a WSDL MessageType or an XML Schema Element. As we look at these, remember that there are three things the system is evaluating at execution time: The Fault Name, the Fault Variable and the Fault Variable's Element QName. The Fault examines each case, looking for the best match, not the first match. 1. We match both the Fault name and the Fault variable s type - which will always be the best match - because it doesn t get any better. 2. The Fault Name matches, and the Fault Variable s element QName matches the Fault Data Element QName. 3. The Fault Name matches but there is no Fault Variable defined. 4. There is no Fault Name to match, but the Fault Variable s type matches the Fault's data type. 5. There is no Fault Name to match, the Fault Variable s type does not match, but the Fault Variable has an element whose QName matches the Fault s data Element QName. 6. The catchall is used if none of the above apply. 7. If no catchall is defined, we use the default Fault Handler. Endpoints, Inc. 16

Fault Handler Selection Table (with fault data) Fault Name Fault Var. Type Fault Var. Elem. QName Best Yes Yes No 2 nd Yes No Yes 3 rd Yes No No 4 th No Yes No 5 th No No Yes 6 th Worst catchall Default Fault Handler 17 Endpoints, Inc. The logic in this table comes from the BPEL 2.0 Specification. You can to go the specification's Section 12.5 to see the information on Fault Handlers. Note that there are important caveats and special cases included in the BPEL Specification s explanations. Endpoints, Inc. 17

Fault Handler Selection Rules Scenarios ord:invalidproduct ord:invalidproduct productlookup an:otherfault productlookup yet:anotherfault <faulthandlers> <catch faultname="ord:invalidproduct"> <empty /> </catch> <catch faultname="ord:invalidproduct" faultvariable="productlookup" faultmessagetype="ord:invprod"> <empty /> </catch> <catch faultvariable="productlookup faultmessagetype="ord:invprod"> <empty /> </catch> <catchall> <empty /> </catchall> </faulthandlers> 18 Endpoints, Inc. Animated slide! The Fault Handler selection rules are shown in this example. Note that Fault handling in BPEL is done using a best match algorithm, not a first match algorithm. 1 = Fault Name ord:invalidproduct matches the Fault Name in the first catch, so it goes to the first Catch. Note: the Empty activity is an activity that does nothing. It works as a placeholder for future work, or it can be used as a way to synchronize the execution of activities. 2 = Fault Name ord:invalidproduct and the Fault Variable productlookup match both the Fault Name and Fault Variable defined in the second catch, so it goes to the second Catch. 3 = Fault Variable Name does not match (because there isn t one), but the Fault Variable does match the third catch so it goes to the third Catch. 4 = Fault Name does not match and there is no fault variable, so it goes to the catchall. Endpoints, Inc. 18

Default Fault Handling When there is no fault handler present or no specific catch is selected for a given scope Default faulthandler is implicitly created Behavior is to re-throw the fault to the parent scope This process continues until the global process scope is reached If the fault occurs in (or is re-thrown to) the global process scope, and there is no matching fault handler the process terminates abnormally 19 Endpoints, Inc. Default Fault Handling is used on a fault if no existing Catch matches and no catchall is defined. In BPEL, the Default Fault Handler is implicit and does not have to be defined. It automatically re-throws the fault to the next level of scope (i.e., the parent of the current scope.) If the fault reaches the process level without being handled by a fault handler, then the process terminates abnormally. (Note that this behavior can be overridden.) Endpoints, Inc. 19

Default Fault Handling Scenario No matching Fault Handler found, process completed with Fault Process Scope A No matching Fault Handler found, rethrow Fault to parent scope Scope B No matching Fault Handler found, rethrow Fault to parent scope Fault occurs Invoke 20 Endpoints, Inc. We have a Process with a Scope A, and a Scope B that is nested inside Scope A. Inside Scope B is a Sequence, and in that Sequence is an Invoke, which throws a fault. 1.) Scope B s Invoke activity throws a fault, but there is no fault handler defined for Scope B, so the fault is thrown to the parent scope, which is Scope A. 2.) If there is no Fault Handler defined for Scope A, it throws the fault to its parent Scope, which is the process itself. 3.) If the process has no fault handler defined, then the Process is terminated abnormally. Endpoints, Inc. 20

Inline Fault Handling The invoke activity provides a special shortcut to directly handle faults related to the invoke Can handle WSDL faults for synchronous operations and other run-time related faults <invoke partnerlink="ncname" porttype="qname"? operation="ncname" inputvariable="ncname"? outputvariable="ncname"? standard-attributes> standard-elements... <catch faultname="qname"? faultvariable="bpelvariablename"? faultmessagetype="qname"? faultelement="qname"?>* activity </catch> <catchall>? activity </catchall>... </invoke> 21 Endpoints, Inc. We have seen that we can define fault handling at the scope or process levels. We can also define Inline fault handlers, which are provided specifically for the Invoke activity. This is a special shortcut to handle faults generated when Invoking a web service. If we invoke a service and the invocation returns a fault, we will use this to handle it immediately. In the syntax, we see the Invoke defined, with its partnerlink, porttype, Operation and Input and Output Variables, as well as all of the standard attributes and elements. Following the basic definitions - but still inside the Invoke - is a Catch, followed by a catchall. Note that the Catch is followed by the *, which allows multiple Catches, just as in a "normal" fault handler. Endpoints, Inc. 21

Inline Fault Handling Scenario Fault Handler catch catchall Invoke Reply Empty 22 Endpoints, Inc. Now let's look at an Inline Fault Handler scenario. If an Invoke has an inline fault handler, this is how it looks in ABD. A single Invoke activity is on the left, with a fault handler defined on the right, here containing a single Catch and one catchall. If a fault is returned on the Invoke, control passes to the fault handler, evaluating the Catch first. If it matches to it, then it fires the Reply. If it does not match the Catch, then it goes to the catchall, which will fire the Empty activity. Endpoints, Inc. 22

Inline Fault Handling Example <invoke partnerlink="calcservicepl" porttype="calc:calculatorporttype" operation="calculatoroperation" inputvariable="calculatorinput" outputvariable="calculatoroutput" > <catch faultname="calc:invalidargument"> <reply... /> </catch> <catchall> <empty/> </catchall> </invoke> 23 Endpoints, Inc. Here is the syntax for the previous example. We have a partnerlinktype calcservicepl, a porttype CalculatorPortType, and an operation called CalculatorOperation." We have both input and output variables defined and we have a single Catch defined, which will handle a fault with the Fault Name calc:invalidargument." The Catch will fire a Reply activity when this specific fault is generated. If any other type of fault is thrown, the catchall will handle it. Endpoints, Inc. 23

Working with Inline Fault Handling Modeling inline Fault Handlers using ActiveBPEL Designer Requires a scope activity which contains a single invoke activity Enable Show Fault Handlers view on scope 24 Endpoints, Inc. To add a fault handler to an Invoke activity, wrap the Invoke inside a scope, then enable fault handling for the scope. This is an otherwise normal scope with a single invoke activity. If we check the source code (on the right) you ll see that it defines a single catchall with an Empty activity. Endpoints, Inc. 24

Unit Summary Now you are familiar with: Signaling faults Handling faults 25 Endpoints, Inc. Endpoints, Inc. 25