Tải bản đầy đủ (.pdf) (652 trang)

Packt oracle SOA suite developers guide mar 2009 ISBN 1847193552 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (17.79 MB, 652 trang )


Oracle SOA Suite Developer's
Guide

Design and build Service-Oriented Architecture
Solutions with the Oracle SOA Suite 10gR3

Matt Wright
Antony Reynolds

BIRMINGHAM - MUMBAI

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


Oracle SOA Suite Developer's Guide
Copyright © 2009 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval
system, or transmitted in any form or by any means, without the prior written
permission of the publisher, except in the case of brief quotations embedded in
critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of
the information presented. However, the information contained in this book is sold
without warranty, either express or implied. Neither the authors, Packt Publishing,
nor its dealers or distributors will be held liable for any damages caused or alleged to
be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all the
companies and products mentioned in this book by the appropriate use of capitals.
However, Packt Publishing cannot guarantee the accuracy of this information.



First published: March 2009

Production Reference: 1120309

Published by Packt Publishing Ltd.
32 Lincoln Road
Olton
Birmingham, B27 6PA, UK.
ISBN 978-1-847193-55-1
www.packtpub.com

Cover Image by Vinayak Chittar ()

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


Credits
Authors
Matt Wright

Production Editorial Manager
Abhijeet Deobhakta

Antony Reynolds
Project Team Leader
Reviewers

Lata Basantani


Jason Jones
Phil McLaughlin

Project Coordinator
Rajashree Hamine

Acquisition Editor
Bansari Barot

Indexer
Rekha Nair

Development Editor
Swapna V. Verlekar

Proofreader
Laura Booth

Technical Editor
Gagandeep Singh

Production Coordinator
Rajni R. Thorat

Editorial Team Leader
Akshara Aware

Cover Work
Rajni R. Thorat


This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


Foreword
Over the past several years, we have seen a growing momentum in the adoption
of Service-Oriented Architectures, which continues to accelerate. At this point in
its evolution, SOA has started to cross the chasm between the early-adopter,
bleeding-edge IT architects and the mainstream IT and software development
community. And what enables this progression to continue gathering steam is
the sharing of knowledge, experiences, and lessons learned between the early
adopters in the community and those following their footsteps. As such, I am
very enthusiastic about Oracle SOA Suite Developer Guide because Matt Wright and
Antony Reynolds are exactly the right people to share this knowledge with us.
I joined Oracle in 2004 through the acquisition of Collaxa, which is where the Oracle
BPEL Process Manager came from. At Collaxa, I was responsible for all the interfaces
between our SOA products and our customers and the developer community. It
was very clear, shortly after the acquisition, that the Oracle field was going to be a
tremendous asset to the adoption of our products, our customers' success, and to
the advancement of SOA in general.
As Oracle became a leader in the SOA space over the next several years, building
out a full SOA platform through continued development and further acquisitions,
Antony and Matt continued to stand out as leaders among the special community
of Oracle SOA field representatives. Along the way, they built a knowledge base
that enabled customers to get over (and better yet, avoid…) common hurdles,
and feed customer requirements back into the engineering organization. We are
highly appreciative of the fact that they have undertaken the monumental task of
incorporating this knowledge into a book that is built on the existing documentation,
and will provide great value to experienced SOA practitioners and newbies alike.

SOA is about more than just tools, a fact that is clear even to those of us who work
for software vendors. However, to be effective with any software development
products, requires detailed knowledge of the products, APIs, features, and
capabilities. Antony and Matt cover these basics in this book in great detail.

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


But even more importantly, developers need to know about edge cases, design
patterns, and how these products fit into the full development life cycle. This
information comes best from real-world experiences with the products, even more
than from the people who build a product. It is particularly valuable that Antony
and Matt focus the majority of the content in this book on deeper topics such as
SOA exception handling, full life cycle support for testing, security, and migration
across environments. If I had a quarter for every customer who has asked me, over
the past eight years, about best practices to move their SOA composites from dev
to test to production… well, let's just say you can save your quarters and read
Chapter 18 instead.
Finally, even as SOA adoption matures, it is still important to understand why you
are adopting SOA, what the expected benefits are, and to measure your progress
toward those as objectively as possible. Today, most people state goals such as:


Developer productivity for system-to-system integration



Greater interoperability between systems




Flexibility and agility that reduces the costs associated with maintenance and
changing requirements



Service re-use



Scalability



Enhanced business visibility and administration

I believe that this book, coming from pragmatic practitioners in the field, will
specifically help developers realize these benefits from their SOA implementations
by providing clear and useful information on Oracle's SOA platform.
On behalf of the Oracle SOA Engineering and Product Management team, as well
as all the customers and partners who have asked for this book, we heartily thank
Antony and Matt for the investment of their time and energy, and hope that this
book helps you achieve your SOA goals.
David Shaffer
Vice President, Product Management
Oracle Integration


This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009

2205 hilda ave., , missoula, , 59801


About the authors
Matt Wright has been involved with standards-based Service-Oriented

Architecture (SOA) since shortly after the initial submission of SOAP 1.1 to the
W3C in 2000, and has worked with some of the early adopters of BPEL since its
initial release in 2002. Since then, he has been a passionate exponent of SOA and
has been engaged in some of the earliest SOA-based implementations across EMEA
and APAC.
He is currently a Director of Product Management for Oracle Fusion Middleware
in APAC, where he is responsible for working with organizations to educate and
enable them in realizing the full business benefits of SOA in solving complex
business problems. As a recognized authority on SOA, Matt is also responsible
for evangelizing the Oracle SOA message and is a regular speaker and instructor
at private and public events. He also enjoys writing and publishes his own blog
(). Matt holds a B.Sc. (Eng) in Computer Science
from Imperial College, University of London.

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


It seems a long time ago that I first suggested to Antony that we
write this book. Since that day there have been numerous twists
and turns, not least the acquisition of BEA which resulted in many
revisions and re-writes. Having Antony as my co-author throughout
this process was invaluable; Antony's continued conviction and
enthusiasm throughout was instrumental in ensuring the book

finally made the light of day.
Throughout this process, everyone at Oracle has been very
supportive. I would like to make a special mention to Andy Gale
for guiding us in the right direction when we first suggested the
idea and to John Deeb for his continual support and encouragement
throughout. I would also like to express my gratitude to everyone in
the SOA Development team; in particular to David Shaffer, Demed
L'Her, Manoj Das, Neil Wyse, Ralf Mueller, and Mohamed Ashfar
who contributed to this book in many ways.
A major part in the quality of any book is down to the reviewers, so
I would like to say a big thank you to Phil McLaughlin, Jason Jones,
and James Oliver for all their incredibly valuable feedback, which
has made this a clearer and simpler book to read.
The staff at Packt Publishing Pvt. Ltd. helped a great deal to make
this book a reality. I would like to thank Rajashree Hamine the
Project Coordinator, Swapna Verlekar the Development Editor,
and Gagandeep Singh the Technical Editor.
Finally, writing a book is challenging at the best of times, to do
it whilst re-locating half way round the world from the UK to
Australia probably isn't the best timing! So I would like to say a
special thank you to my wife Natasha and my children Elliot and
Kimberley for their constant support and understanding throughout
this period.

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


Antony Reynolds has worked in the IT industry for more than 24 years,
since getting a job to maintain yield calculations for a Zinc smelter while still an

undergraduate. After graduating from the University of Bristol with a degree in
Maths and Computer Science he worked first for a software house, IPL in Bath,
England, before joining the travel reservations system Galileo as a development
team lead. At Galileo he was involved in development and maintenance of
workstation products before joining the architecture group. Galileo gave him the
opportunity to work in Colorado and Illinois where he developed a love for the
Rockies and Chicago style deep pan pizza. He joined Oracle in 1998 as a sales
consultant and has worked with a number of customers in that time, including
a large retail bank's Internet banking project for which he served as chief design
authority and security architect.
Antony currently is lucky to work with customers on the early stages of many
interesting projects, providing advice on sizing models and architecture for the
SOA Suite.
Outside of work Antony is a bishop in the Church of Jesus Christ of Latter Day Saints
(Mormons) and is responsible for a congregation of 350. His wife and four children
make sure that he also spends time with them, playing games, watching movies, and
acting as an auxiliary taxi service.

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


I would like to thank my wife Rowan, and my four very patient
children, who have put up with their husband and father
disappearing into his office in the roof far too often. Several
reviewers have provided invaluable advice and assistance. Phil
McLaughlin of Oracle has been a constant source of encouragement
and constructive criticism as the book has homed in on its target
platform. Iswarya Dhandapani of Luton Borough Council took the
time to try out all my code samples and identify ones which didn't

work as well as providing feedback on my chapters from the view of
someone who has to use SOA Suite to provide real solutions. Oracle
ACE Jason Jones came a little late to the reviewing but managed
to review every chapter and made clear what worked for him and
what didn't. Simone Geib of Oracle Product Management provided
valuable feedback on the sections covering Oracle Service Bus. I
particularly appreciated the way all the reviewers not only pointed
out the problems in the book but also identified the positive parts.
Edwin Khodabachian is no longer with Oracle, but his team created
the BPEL Process Manager at Collaxa, which was bought by Oracle
and became under Edwins guidance the foundation of the SOA
Suite. Finally, I would like to express appreciation to Thomas Kurian
at Oracle who had the vision of a single integrated product suite, the
Oracle SOA Suite, and has always been willing to listen to provide
advice and guidance to me.

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


About the reviewers
Jason Jones is a software architect specializing in SOA and Java technologies.

Since 2003, Jason has worked for Zirous, an Oracle Certified Partner, where he
currently holds the position of Senior System Architect. In 2007, Jason was named an
Oracle ACE Director, a prestigious international group of Oracle experts. Jason has
been accepted as a speaker at Oracle OpenWorld, IOUG COLLABORATE, ODTUG
Kaleidoscope, and has a published article on OTN.
Jason's more than 8 years of experience in IT that includes SOA technologies such
as BPEL, ESB, SOAP, WS-Security, XML, and Enterprise Java technologies such

as Spring, Struts, JMS, JPA, Hibernate, and EJBs among many others. Jason is a
Sun Certified Java Programmer (SCJP), Sun Certified Web Component Developer
(SCWCD), and holds a BS in Computer Science from Iowa State University.
Jason's blog can be found at realjavasoa.blogspot.com.

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


Phil McLaughlin has 20 years of early adopter experience with the technologies
associated with SOA, working with architectural models such as object orientation
before they were mainstream. In the late 1980s and early 1990s this was largely
with the Smalltalk programming language and associated tools but he was asked
to investigate and teach Java in 1997. Since then, he has maintained his interest in the
development of distributed composite applications intially with CORBA, then J2EE
and more recently SOA itself.
Phil's experience of SOA spans the theoretical and practical, having been a senior
lecturer in academia until 1997 specializing in object oriented software (which
could reasonably be argued as providing the foundations of the SOA architectural
model), and how to transfer the requisite skills to developers often struggling with
new and different architectural paradigms. Since 1997, he has worked in a number
of specialist consultancies covering topics such as analysis and design methods,
development and implementation from the OO/SOA perspective.
Phil Joined Oracle Corporation (UK) in 2002 when Oracle acquired the TopLink
persistence management framework from WebGain and since then has specialized
in working with Partners/System Integrators to educate them on best practice
around the use of Oracle Java technology and more recently the Oracle SOA Suite.
Phil currently holds the position of Master Principal Sales Consultant in the UK SOA
pre-sales team where he provides initial advice and solution mapping to customers
and partners about Oracle's SOA offerings.

Phil has worked with both authors for a number of years and is very pleased that
thay have decided to share their wealth of knowledge and practical experience with
the wider community. For anyone working with Oracle SOA suite, this is a 'must
have' book.

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


Table of Contents
Preface
Chapter 1: Introduction to Oracle SOA Suite

1
9

Service-oriented architecture in short
Service
Orientation
Architecture
Why SOA is different
Terminology
Inter-operability
Extension and evolution
Reuse in place
SOA Suite components

Services and adapters
ESB—service abstraction layer
Service orchestration—BPEL Process Manager
Rules
Security and monitoring—OWSM
Active monitoring–BAM
Business to business—B2B
Complex Event Processing—CEP
SOA Suite architecture
Top level
Component view
Implementation view
A recursive example
JDeveloper
Other components
Service repository and registry

9
9
10
11
12
13
13
13
14
14
14
15
16

18
18
19
19
20
20
20
21
21
22
22
23
23

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


Table of Contents

BPA Suite
BPM Suite
Portals and WebCenter
Enterprise manager SOA management pack
Summary

Chapter 2: Writing Your First Service
Installing SOA Suite
Writing our first BPEL process
Creating an application

Creating a BPEL project

23
24
24
24
24

25
25
26
27
29

Assigning values to variables

32

Deploying the process
Testing the BPEL process
Writing our first proxy service
Writing the Echo proxy service
Creating a change session
Creating a project

34
35
39
40
41

42

Creating project folders

43

Creating service WSDL

44

Importing a WSDL

45

Creating our business service
Creating our proxy service

48
51

Creating message flow
Activating the Echo proxy service
Testing our proxy service

53
54
55

Summary


59

Chapter 3: Service Enabling Existing Systems

61

Types of systems
Web service interfaces
Technology interfaces
Application interfaces
Java Connector Architecture
Creating services from files
A payroll use case
Reading a payroll file

61
62
62
64
64
64
65
65

Starting the wizard
Naming the service
Identifying the operation
Defining the file location
Selecting specific files
Detecting that the file is available

Message format
Finishing the wizards

65
66
67
69
70
71
72
81
[ ii ]

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


Table of Contents

Throttling the file and FTP adapter

81

Creating a dummy message type
Adding an output message to the read operation
Using the modified interface

Writing a payroll file

Selecting the FTP connection

Choosing the operation
Selecting the file destination
Completing the FTP file writer service

Moving, copying, and deleting files
Generate an adapter
Modify the port type
Modify the binding
Add additional header properties

81
82
82

82

82
83
84
85

85

85
86
86
87

Adapter headers
Testing the file adapters

Creating services from databases
Writing to a database

88
89
90
90

Selecting the database schema
Identifying the operation type
Identifying tables to be operated on
Identifying the relationship between tables
Under the covers

Summary

90
92
93
94
94

95

Chapter 4: Loosely Coupling Services
Coupling
Number of input data items
Number of output data items
Dependencies on other services
Dependencies of other services on this service

Use of shared global data
Temporal dependencies
Reducing coupling in stateful services
Oracle Service Bus design tools
Oracle workshop for WebLogic
Oracle Service Bus Console
Service Bus overview
Service Bus message flow
Virtualizing service endpoints
Moving service location
Selecting a service to call
Virtualizing service interfaces
Physical versus logical interfaces

97
97
98
98
99
99
100
100
101
105
105
106
106
107
107
108

116
119
119

[ iii ]

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


Table of Contents

Mapping service interfaces
Applying canonical form in the service bus
An important optimization

120
126
127

Summary

127

Chapter 5: Using BPEL to Build Composite
Services and Business Processes
Basic structure of a BPEL process
Core BPEL process
Variables


129

130
130
131

Partner Links
Messaging activities

132
132

Synchronous messaging
Asynchronous messaging

132
133

A simple composite service
Creating our Stock Quote service

134
135

Import StockService schema

136

Calling the external web services


138

Calling the web service
Assigning values to variables
Testing the process
Calling the exchange rate web service
Assigning constant values to variables
Using the Expression builder

140
142
144
144
144
145

Asynchronous service

150

Using the Wait activity

152

Improving the stock trade service

154

Creating the while loop
Checking the price

Using the Switch activity

154
156
157

Summary

160

Chapter 6: Adding in Human Workflow
Workflow overview
Leave approval workflow
Creating our workflow process

Defining the workflow task
Specifying task parameters
Creating the user interface to process the task
Running the workflow process

Processing tasks with the worklist application
Improving the workflow
Dynamic task assignment
Assigning tasks to multiple users or groups

Cancelling or modifying a task

161

161

162
162

163
165
169
170

171
173
173
175

176

Withdrawing a task

176
[ iv ]

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


Table of Contents
Modifying a task
Difference between task owner and initiator

Requesting additional information about a task
Managing the assignment of tasks

Reassigning reportee tasks
Reassigning your own task
Delegating tasks
Escalating tasks

176
176

177
178
178
180
181
181

Using rules to automatically manage tasks
Setting up a sample rule

181
182

Summary

184

Chapter 7: Using Business Rules to Define Decision Points
Business Rule concepts
Leave approval rule
Using the Rule Author
Creating a Rule Repository

Creating a dictionary
Defining facts
Creating XML Facts
Using aliases
Hiding facts and properties
Saving the rule dictionary

185

186
186
186
187
188
188
189
192
192
192

Creating a rule set

193

Adding a rule to our rule set
Defining the test for the pattern

194
196


Creating a Decision Service
Creating a Rule Engine Connection
Using a file based repository
Using a WebDAV repository

Creating a Decision Service
Adding a Decide activity

199
200

200
201

202
204

Assigning facts

205

Using functions
Importing Java classes as facts
Creating a function
Invoking a function from within a rule
Summary

Chapter 8: Building Real-time Dashboards

How BAM differs from traditional business intelligence

Oracle BAM scenarios
BAM architecture
Logical view
Physical view

206
207
208
210
212

213

213
214
215
215
215

[v]

This material is copyright and is licensed for the sole use by Richard Ostheimer on 18th June 2009
2205 hilda ave., , missoula, , 59801


Table of Contents
Capture
Store
Process
Deliver


216
216
217
217

BAM platform anomaly
User interface
Monitoring process state
Defining data objects

218
218
219
220

Instrumenting BPEL
Testing the events
Creating a simple dashboard
Monitoring process status
Monitoring KPIs
Summary

224
231
231
233
237
239


Chapter 9: oBay Introduction

241

A digression on populating data object fields

oBay requirements
User registration

224

242
242

User login

242

Selling items

243

List a new item
Cancel listing
Completing the sale
View account

243
245
245

246

Buying items

247

Search for items
Bidding on items

247
247

Defining our blueprint for SOA
Architecture goals
Typical SOA architecture

249
249
250

Application services layer
Virtual services layer
Business services layer
Business process
User Interface layer

252
253
254
257

258

One additional layer

259

oBay high-level architecture
oBay Application services

262
262

Where the SOA Suite fits

260

Workflow services
External web services
oBay developed services

263
263
263

oBay internal virtual services
oBay business services

263
264
[ vi ]



Table of Contents
oBay business processes

264

oBay user interface
Downloading and installing oBay application
Summary

264
265
265

Chapter 10: Designing the Service Contract

267

Using XML Schema to define business objects
Modelling data in XML
Data decomposition
Data hierarchy
Data semantics
Use attributes for metadata

268
268
268
269

270
270

Schema guidelines

271

Element naming
Namespace considerations

271
273

Partitioning the canonical model

279

Single namespace
Multiple namespaces
Chameleon namespaces

280
281
282

Using WSDL to define business services
Use document (literal) wrapped
Building your abstract WSDL document
WSDL namespace
Defining the 'wrapper' elements

Defining the 'message' elements
Defining the 'portType' element

Using XML Schema and the WSDL within BPEL PM
Sharing XML Schemas across BPEL processes
Deploying schemas to the BPEL server
Importing schemas
Updating the schema URL

286
286
287
287
287
289
289

290
290

290
291
291

Importing the WSDL document into BPEL PM

Adding the PartnerLink definition to the abstract WSDL

Sharing XML Schemas in the service bus
Importing the WSDL document into the service bus

Strategies for managing change
Major and minor versions
Service implementation versioning

291

293

294
294
297
297
298

Schema versioning

298

Change schema location
Update schema version attribute
Resist changing the schema namespace

WSDL versioning

299
299
299

300


Incorporating changes to the canonical model
Changes to the physical contract
[ vii ]

300
301


Table of Contents
Updating the service endpoint
Managing the service lifecycle

301
302

Summary

303

Chapter 11: Building Business Services
Build versus reuse
Adapters and web service wrappers
Adapters
Service wrappers

305

305
306
306

306

Reusing existing functionality directly
Exposing a PL/SQL stored procedure as a service
Launching the PL/SQL web service wizard
Choosing the level of Java Enterprise Edition support
Selecting a database connection and defining service bindings
Determine message style
Select stored procedures and functions to expose

Modifying existing functionality using service bus
Converting an existing service to canonical form
Create a new service interface
Adding the non-canonical service
More complex conversions

307
307
308
308
309
310
310

313
313
314
319
321


Exposing a Java class as a service
Wrapping the Java code
Launching the Web Service wizard
Select deployment platform
Select service name
Select message format
Provide custom serializers
Mapping
Select methods

321
321
322
323
323
324
325
326
326

Creating services from scratch
Creating a Java service from a WSDL
Starting the wizard
Choosing the WSDL
Choosing the mapping options
The generated Java

327
328
328

329
329
331

Summary

332

Chapter 12: Building Validation into Services
Using XML Schema validation
Strongly typed services
Loosely typed services
Combined approach
Using schema validation within BPEL PM
Validation of inbound documents
Validation of outbound documents
Validation between BPEL processes

333
334
334
336
337
338
338
338
338

[ viii ]



Table of Contents
Setting validateXML for a BPEL domain
Setting validateXML for a PartnerLink

340
341

Using schema validation within the service bus

341

Validation of inbound documents
Validation of outbound documents

341
344

Using Schematron for validation
Overview of Schematron

344
345

Assertions
Rules
Patterns
Namespaces
Schema


346
347
348
348
348

Intermediate validation

348

Using Schematron within BPEL PM

351

Cross field validation
Date validation
Element present

349
350
350

Creating a Partner Link for the Validation Service
Creating a Schematron file
Invoking the validate operation
Sharing a Schematron between processes

351
352
352

355

Using Schematron with the service bus
Putting validation in the underlying service
Using Business Rules for validation
Coding in validation
Returning validation failures in synchronous services

355
356
356
357
357

Layered validation considerations
Dangers of over validation
Dangers of under validation
Negative coupling of validation
Summary

360
360
361
361
362

Defining faults
Custom fault codes
Validation failures in asynchronous services


Chapter 13: Error Handling

Business faults
Defining faults in synchronous services
Defining faults in asynchronous services
Handling business faults in BPEL
Catching faults
Adding a catch branch
Throwing faults

358
358
359

363

364
364
365
365
366
367
369

Compensation

370

Defining compensation


371

[ ix ]


Table of Contents
Triggering a compensation handler
Adding a compensate activity

372
372

Returning faults

373

Asynchronous considerations

374

Using the fault management framework
Defining a fault policy
Defining fault policy conditions
Defining fault policy actions

Binding fault policies

375
375


376
378

382

Binding fault polices at the process level
Binding fault policies at the domain level
Binding resolution

382
383
384

Human intervention in BPEL Console

384

Change the input variable contents and retry
Set the output variable and continue

385
386

Handling faults within the service bus
Handling faults in synchronous proxy services
Raising an error
Defining an error handler
Getting the qualified fault name
Handling unexpected faults
Returning a SOAP Fault

Adding a Service Error Handler
Handling permanent faults
Handling transient faults

387
388
388
389
392
393
394
395
396
399

Handling faults in one-way proxy services
Summary

Chapter 14: Message Interaction Patterns
Message routing
WS-Addressing

400
401

403
403
404

Request message with WS-Addressing

Response message with WS-Addressing
Additional message exchanges

405
405
406

Using BPEL correlation sets
Using correlation sets for multiple process interactions

406
407

Message aggregation
Message routing

415
417

Defining a correlation set property
Defining correlation set
Using correlation sets
Defining property aliases

Correlating the callback
Specifying the reply to address

407
409
410

412

417
418

Creating a proxy process

418

Using the pick activity

419
[x]


Table of Contents
Defining the correlation sets

421

Completing the aggregation
Scheduling services
Defining the schedule file
Using FlowN

421
423
423
425


Accessing branch specific data in FlowN

426

Dynamic Partner Links

427

Define common interface
Define Job Partner Link
Create endpoint reference
Update Endpoint

427
428
428
429

Re-cycling the scheduling file
Summary

430
431

Chapter 15: Workflow Patterns

Managing multiple participants in a workflow
Using multiple assignment and routing policies
Determining the outcome by a group vote


Using multiple Human Tasks

433

433
434
434

437

Linking individual Human Tasks

437

Using the workflow API
Defining the order fulfillment Human Task

438
440

Specifying task parameters
Specifying the routing policy
Notification settings

440
442
443

Querying task instances


444

Getting task details
Updating a task instance

455
456

Defining a Partner Link for the Task Query Service
User authentication
Querying tasks
Flex fields
Populating Flex Fields
Accessing Flex fields

Defining a PartnerLink for the Task Service
Using the updateTask operation

Summary

444
447
448
450
451
452

457
458


460

Chapter 16: Using Business Rules to Implement Services
How the rule engine works
Asserting facts
Executing the ruleset

461
461
462
462

Rule activation
Rule firing

462
463

Retrieve result

463
[ xi ]


Table of Contents

Session management
Debugging a ruleset

464

464

Using DM.println to add additional logging

Using business rules to implement an auction
Defining our XML Facts
Defining the decision service
Using a global variable to reference the result set
Defining a global variable
Defining a rule to initialize a global variable
Writing our auction rules
Evaluating facts in date order
Checking for non-existent fact
Using Calendar functionality
Updating the bid status

466

466
466
469
470
470
471
472
472
473
473
474


Using inference

474

Processing the next valid bid

476

Using functions to manipulate XML Facts
Asserting a winning bid
Retracting a losing bid
Rules to process a new winning bid
Validating the next bid
Rule to process a losing bid

476
477
479
480
480
482

Complete ruleset
Performance considerations

483
484

Managing state within the BPEL process


Summary

484

486

Chapter 17: The Importance of Bindings

487

The web services stack
Logical view of web services stack
Physical view of web services stack
Understanding Web Service Description Language (WSDL)
How to read WSDL

487
487
488
489
489

The case for different bindings
Connectivity
Transactionality
Performance
JCA bindings

494
494

495
495
495

<definitions>
<types>
<message>

<binding>
<service>

[ xii ]

490
491
492
492
493
494


×