ebook download Oracle SOA Suite 12c handbook 1st Edition Jellema - eBook PDF all chapter

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 54

Oracle SOA Suite 12c handbook 1st

Edition Jellema - eBook PDF


Go to download the full and correct content document:
https://ebooksecure.com/download/oracle-soa-suite-12c-handbook-ebook-pdf/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

Oracle 12c SQL 3rd Edition (eBook PDF)

http://ebooksecure.com/product/oracle-12c-sql-3rd-edition-ebook-
pdf/

(eBook PDF) Oracle 12c SQL 3rd Edition by Joan Casteel

http://ebooksecure.com/product/ebook-pdf-oracle-12c-sql-3rd-
edition-by-joan-casteel/

OCA Oracle Database SQL Exam Guide (Exam 1Z0-071) 1st


Edition Steve O’Hearn - eBook PDF

https://ebooksecure.com/download/oca-oracle-database-sql-exam-
guide-exam-1z0-071-ebook-pdf/

Data Communications and Networking with TCP/IP Protocol


Suite 6th Edition Behrouz A. Forouzan - eBook PDF

https://ebooksecure.com/download/data-communications-and-
networking-with-tcp-ip-protocol-suite-ebook-pdf/
Handbook of Microbial Nanotechnology 1st edition -
eBook PDF

https://ebooksecure.com/download/handbook-of-microbial-
nanotechnology-ebook-pdf/

Science for Policy Handbook 1st edition - eBook PDF

https://ebooksecure.com/download/science-for-policy-handbook-
ebook-pdf/

Handbook for Laboratory Safety 1st Edition - eBook PDF

https://ebooksecure.com/download/handbook-for-laboratory-safety-
ebook-pdf/

Handbook of Algal Biofuels 1st Edition - eBook PDF

https://ebooksecure.com/download/handbook-of-algal-biofuels-
ebook-pdf/

Saunders Nursing Drug Handbook 1st Edition - eBook PDF

https://ebooksecure.com/download/saunders-nursing-drug-handbook-
ebook-pdf/
®

Oracle SOA Suite 12c


Handbook
About the Author
Lucas Jellema is an Oracle technology expert with wide and deep experience.
He applies, extends, and shares his knowledge in his day job as solution
architecture consultant and CTO at AMIS—an Oracle, Java, and SOA boutique
technology consulting company and Oracle Platinum Partner from the
Netherlands. Lucas is an almost compulsive enthusiast who will find
opportunities to share his findings and excitement with his peers—through
brainstorms and discussions, presentations and demonstrations, blog posts,
web articles, and the book you are holding right now. Nominated Oracle ACE
Director in 2006, Lucas has presented dozens of times at conferences such as
Oracle OpenWorld, JavaOne, and Oracle user group meetings around the
world. He contributed over 1,100 articles to the popular AMIS Technology
Blog (http://technology.amis.nl). His Twitter handle is @lucasjellema.

About the Technical Editors


Guido Schmutz works for Trivadis, an Oracle Platinum Partner. He has more than
25 years of technology experience, including mainframes, integration, and SOA
technologies in financial services, government, and logistics environments. At
Trivadis, he is responsible for innovation in the areas of BigData & FastData and
leads the Trivadis Architecture Board. He has longtime experience as a developer,
coach, trainer, and architect in the areas of building complex Java EE and SOA-
based solutions. Guido is an Oracle ACE Director for Fusion Middleware, SOA,
and a regular speaker at international conferences, such as Oracle Open World,
ODTUG, SOA & Cloud Symposium, UKOUG conference, and DOAG. He is also
a coauthor of the books Oracle Service Bus 11g Development Cookbook; Do
More with SOA Integration: Best of Packt, and Service-Oriented Architecture:
An Integration Blueprint.
Ronald van Luttikhuizen Ronald van Luttikhuizen is one of the Managing Partners
at eProseed Netherlands. eProseed is an Oracle Platinum Partner with in-depth
expertise in Oracle Database, Oracle Fusion Middleware (FMW), and Oracle
Hardware including Oracle Engineered Systems. Ronald has an MSc in computer
science from Utrecht University. He has more than 15 years of experience in ICT
in various roles such as coach, (lead) architect, (lead) developer, teacher, and team
lead. Ronald focuses on architecture and security in BPM and SOA environments.
He has in-depth knowledge of Oracle Fusion Middleware. Ronald is a speaker at
(international) conferences such as Oracle OpenWorld and regularly publishes
articles on Oracle Technology Network (OTN), Java Magazine, Optimize, and
more. In 2008, Ronald was named Oracle ACE for SOA and Middleware, and in
2010 he became an Oracle ACE Director in that area. Ronald is co-author of SOA
Made Simple, and was one of the technical reviewers for the Oracle SOA Suite
11g Handbook.
®

Oracle SOA Suite 12c


Handbook

Lucas Jellema

New York Chicago San Francisco


Lisbon London Madrid Mexico City Milan
New Delhi San Juan Seoul Singapore Sydney Toronto
Copyright © 2016 by McGraw-Hill Education (Publisher). All rights reserved. Except as permitted under the United States Copyright Act of 1976, no
part of this publication may be reproduced or distributed in any form or by any means, or stored in a database or retrieval system, without the prior
written permission of the publisher, with the exception that the program listings may be entered, stored, and executed in a computer system, but they
may not be reproduced for publication.

ISBN: 978-0-07-182460-6

MHID: 0-07-182460-X

The material in this eBook also appears in the print version of this title: ISBN: 978-0-07-182455-2,
MHID: 0-07-182455-3.

eBook conversion by codeMantra


Version 1.0

All trademarks are trademarks of their respective owners. Rather than put a trademark symbol after every occurrence of a trademarked name, we
use names in an editorial fashion only, and to the benefit of the trademark owner, with no intention of infringement of the trademark. Where such
designations appear in this book, they have been printed with initial caps.

McGraw-Hill Education eBooks are available at special quantity discounts to use as premiums and sales promotions or for use in corporate training
programs. To contact a representative, please visit the Contact Us page at www.mhprofessional.com.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. All other trademarks are the property of their respective owners, and
McGraw-Hill Education makes no claim of ownership by the mention of products that contain these marks.

Screen displays of copyrighted Oracle software programs have been reproduced herein with the permission of Oracle Corporation and/or its affiliates.

Excerpts of copyrighted Oracle user documentation have been reproduced herein with the permission of Oracle Corporation and/or its affiliates.

Information has been obtained by Publisher from sources believed to be reliable. However, because of the possibility of human or mechanical error by
our sources, Publisher, or others, Publisher does not guarantee to the accuracy, adequacy, or completeness of any information included in this work and
is not responsible for any errors or omissions or the results obtained from the use of such information.

Oracle Corporation does not make any representations or warranties as to the accuracy, adequacy, or completeness of any information contained in this
Work, and is not responsible for any errors or omissions.

TERMS OF USE

This is a copyrighted work and McGraw-Hill Education and its licensors reserve all rights in and to the work. Use of this work is subject to these terms.
Except as permitted under the Copyright Act of 1976 and the right to store and retrieve one copy of the work, you may not decompile, disassemble,
reverse engineer, reproduce, modify, create derivative works based upon, transmit, distribute, disseminate, sell, publish or sublicense the work or any
part of it without McGraw-Hill Education’s prior consent. You may use the work for your own noncommercial and personal use; any other use of the
work is strictly prohibited. Your right to use the work may be terminated if you fail to comply with these terms.

THE WORK IS PROVIDED “AS IS.” McGRAW-HILL EDUCATION AND ITS LICENSORS MAKE NO GUARANTEES OR WARRANTIES AS
TO THE ACCURACY, ADEQUACY OR COMPLETENESS OF OR RESULTS TO BE OBTAINED FROM USING THE WORK, INCLUDING ANY
INFORMATION THAT CAN BE ACCESSED THROUGH THE WORK VIA HYPERLINK OR OTHERWISE, AND EXPRESSLY DISCLAIM ANY
WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE. McGraw-Hill Education and its licensors do not warrant or guarantee that the functions contained in the work will
meet your requirements or that its operation will be uninterrupted or error free. Neither McGraw-Hill Education nor its licensors shall be liable to you
or anyone else for any inaccuracy, error or omission, regardless of cause, in the work or for any damages resulting therefrom. McGraw-Hill Education
has no responsibility for the content of any information accessed through the work. Under no circumstances shall McGraw-Hill Education and/or its
licensors be liable for any indirect, incidental, special, punitive, consequential or similar damages that result from the use of or inability to use the work,
even if any of them has been advised of the possibility of such damages. This limitation of liability shall apply to any claim or cause whatsoever whether
such claim or cause arises in contract, tort or otherwise.
Contents at a Glance

PART I
Introducing Saibot Airport, SOA, and the Oracle SOA Suite
1 Saibot Airport Reaching for the Future ................................. 3
2 Overview of Oracle Fusion Middleware and SOA Suite 12c ................. 27

PART II
Elementary Services
3 Exposing SOAP and REST Services Using Service Bus ...................... 59
4 Accessing Database and File System through Outbound Technology Adapters . . . 107
5 Introducing SOA Composite Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6 One-Way Services and More Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

PART III
Composite Services
7 Composite Services with Service Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
8 Composite Services with SOA Composites Using the BPEL Component . . . . . . . . 279
9 Coherence Integration to Reduce Load and Speed Up Response . . . . . . . . . . . . . 321
10 Embedding Custom Logic Using Java and Spring Component . . . . . . . . . . . . . . . . 347
11 Business Rules to Capture Business Logic to Automate Decisions . . . . . . . . . . . . . 379

PART IV
Asynchronous Services and Events
12 Asynchronous Services with SOA Composites and Service Bus . . . . . . . . . . . . . . . 411
13 Inbound Adapters—Polling Database, Consuming JMS, and Receiving Emails . . . 451

v
vi Oracle SOA Suite 12c Handbook

14 Using the Enterprise Scheduler Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469


15 The Event Delivery Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
16 Fast Data Processing with Oracle Event Processor . . . . . . . . . . . . . . . . . . . . . . . . 515

PART V
Process Orchestration
17 The Human Task Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
18 Business Process Oriented BPEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
19 Business Process Management and Adaptive Case Management . . . . . . . . . . . . . . 605
20 Monitoring for Insight into Business Process Execution . . . . . . . . . . . . . . . . . . . . 647
21 Governance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
22 Building and Deploying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
23 Run-Time Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
24 SOA Suite and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
Contents

Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii

PART I
Introducing Saibot Airport, SOA, and the Oracle SOA Suite
1 Saibot Airport Reaching for the Future ............................. 3
Saibot Airport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Business Vision and Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Business Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
IT Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Architecture to Enable the Future . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
The Triangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Domains of Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Service-Oriented Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Event-Driven Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
On Technology and Vendor Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Selection Approach ............................................. 15
Processes and Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Service-Oriented Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Organization and Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Looking Forward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2 Overview of Oracle Fusion Middleware and SOA Suite 12c ............. 27
Oracle Technology Stack ............................................... 28
Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Oracle Fusion Middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Oracle Fusion Middleware: The Cloud Platform for Digital Business . . . . . . . . . 33

vii
viii Oracle SOA Suite 12c Handbook

Overview of SOA Suite 12c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37


SCA Engine for Running SOA Composite Applications . . . . . . . . . . . . . . . . . . . 38
Service Bus for Lean and Mean Message Processing . . . . . . . . . . . . . . . . . . . . . 39
Adapters to Bridge to Technologies and Protocols . . . . . . . . . . . . . . . . . . . . . . . 40
Event Delivery Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Other Components in the Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Fusion Middleware infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Close Associates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Getting Started with SOA Suite 12c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Quick Starting the SOA Suite 12c Development Environment . . . . . . . . . . . . . . 53
Creating the Full Blown SOA Suite 12c Run-Time Environment . . . . . . . . . . . . 54
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

PART II
Elementary Services
3 Exposing SOAP and REST Services Using Service Bus .................. 59
Introducing Service Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Developing the Temperature Conversion Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Starting a New Service Bus Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Importing the Design Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Create the Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Create the Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Run the TemperatureConversionService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Extending the Temperature Conversion Service with Validation,
Exception Handling and Reporting ..................................... 77
The V in VETRO—Adding Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Exception Handling in the Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Monitoring Service Bus Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Speed and Distance Conversions through Routing to External Services . . . . . . . . . . . . . 91
Configure a Business Service for an External Conversion Service . . . . . . . . . . . 92
Create Proxy ConversionService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Implement the Generated ConversionPipeline . . . . . . . . . . . . . . . . . . . . . . . . . 97
Run/Test Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Routing Messages to the TemperatureConversionPipeline . . . . . . . . . . . . . . . . . 101
Exposing a REST/JSON Endpoint for the Temperature Conversion Service . . . . . . . . . . . 102
Creating a REST Conversion Service Interface with JSON Response . . . . . . . . . 102
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
More about the Service Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

4 Accessing Database and File System through


Outbound Technology Adapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Introducing Technology Adapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Design Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Run Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Contents ix

Saibot Airport and Its Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110


Retrieving Information from the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Get Going with Application and Service Bus Project . . . . . . . . . . . . . . . . . . . . 113
Database Adapter—Read SQL Query Airports . . . . . . . . . . . . . . . . . . . . . . . . . 114
Configuration of Run-Time Server .................................. 119
Test Business Service ............................................ 121
Implement Proxy Service and Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Test the AirportServicePS Proxy Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Using the Database Adapter to Insert Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Simple Database Record Insert or Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Invoke Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
File Adapter for Updating Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Prepare Service Bus Project for FlightReportService . . . . . . . . . . . . . . . . . . . . . 138
Configure Outbound File Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Implement Proxy and Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Test the FlightReportService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Enhance FlightReportService to Use Dynamic Directory and File Names . . . . . 143
Reading from the File System Using the File Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Configure File Adapter for Synchronous Read . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Implement Operational Branch for getFlightHistory . . . . . . . . . . . . . . . . . . . . . 146
Run getFlightReport in FlightReportService . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Remote File Adapter—Retrieving Data from Internet Resources . . . . . . . . . . . . . . . . . . 147
Create Business Service to Retrieve File Contents . . . . . . . . . . . . . . . . . . . . . . . 147
Create the Native XML Schema Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Update Pipeline to Retrieve Remote Data into a Local XML Variable . . . . . . . . 148
Add Country Filtering to the Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

5 Introducing SOA Composite Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . 155


Service Component Architecture ......................................... 156
Some Background on SCA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
SCA Composites in Oracle SOA Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Your first composite application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Prepare the JDeveloper Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Configure the Service Binding ..................................... 164
Configure the ConversionMediator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Deploy the SOA Composite and Test the Temperature Conversion . . . . . . . . . . 167
Extending the Initial SOA Composite Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Using XQuery for XML Manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Validation of Request Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Fault Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Add Composite Sensors for Instance Identification . . . . . . . . . . . . . . . . . . . . . . 183
Add Height and Distance Conversion Support Using an External Service . . . . . . . . . . . 185
Create a Reference for the External Conversion Service . . . . . . . . . . . . . . . . . . 185
Configure Routing Rule in Mediator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Deploy and Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
x Oracle SOA Suite 12c Handbook

Exposing SOA Composites through the Service Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . 191


Create Service Bus Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Register SOA Composite as Business Service . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Expose Proxy Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Deploy and Invoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Suggested Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
More on Mediator .............................................. 196

6 One-Way Services and More Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197


Flight Updates through Email and Chat Using the UMS Adapter . . . . . . . . . . . . . . . . . . 199
Flight Updates Reported through Email Notifications . . . . . . . . . . . . . . . . . . . . 199
Add Flight Updates through Instant Messaging ........................ 203
Feeding the Financial Queue through JMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Introducing JMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Setup the JMS Destination for AircraftMovement Reports in WebLogic . . . . . . . 207
Implementation of the AircraftMovementService with the JMS Transport . . . . . . 207
Alternative Implementation Using the JCA JMS Adapter . . . . . . . . . . . . . . . . . . 210
Content-Based Routing in Service Bus Pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Switching between JMS Transport and JCA JMS
Adapter Using Conditional Branching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Using AQ instead of JMS ............................................... 218
Configure Advanced Queue in Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Configure AQ Adapter Connection in WebLogic Server . . . . . . . . . . . . . . . . . . 219
Configure AQ Adapter Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Add the AQ Path to the Conditional Branch in the AircraftMovementPipeline . . . . 221
Run and Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Invoking an Enterprise Java Bean (EJB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Prepare the Financial Enterprise Java Bean to Invoke .................... 223
Calling Out to EJBs from Service Bus Composites . . . . . . . . . . . . . . . . . . . . . . . 225
Calling Out to EJBs from SOA Composite Applications . . . . . . . . . . . . . . . . . . . 229
Expose Inbound EJB Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

PART III
Composite Services
7 Composite Services with Service Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Creating the Bare Bones FlightScheduleService .............................. 236
Set Up the FlightScheduleService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Implementing Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Add XSD Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Add XQuery-Based Constraints Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Airline Checks and Mapping with Domain Value Map . . . . . . . . . . . . . . . . . . . 248
Using Callouts for Validation and Enrichment ............................... 251
Java Callout to Execute Content-Based Logic . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Contents xi

Service Callout to a Business Service to Find the Allocated Slot . . . . . . . . . . . . 255


Service Callout to a Pipeline within the Service Bus Project . . . . . . . . . . . . . . . 257
Add a Template-Based Logging Pipeline ................................... 261
Create the Pipeline Template with Logging Capabilities . . . . . . . . . . . . . . . . . . 261
Add a Logging Pipeline to the FlightScheduleService . . . . . . . . . . . . . . . . . . . . 264
Parallel Processing Using Split-Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Implementing the Aggregator Pattern through a Static Split-Join . . . . . . . . . . . . 268
Dynamic Split-Join for Parallel Processing of Multiple Scheduled Flights ..... 272
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

8 Composite Services with SOA Composites Using the BPEL Component . . . . 279
Using BPEL to Create the Bare Bones FlightScheduleService .................... 280
Quick Introduction to BPEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
First Steps with the FlightScheduleService and with BPEL . . . . . . . . . . . . . . . . . 282
Implementing Validation on Requested Flight Schedules . . . . . . . . . . . . . . . . . . . . . . . . 287
Prepare the Multiphase BPEL Process Structure . . . . . . . . . . . . . . . . . . . . . . . . . 287
Add Schema Validation .......................................... 289
Fault Handling for Scope SchemaValidation .......................... 289
Return Processing Results upon Validation Failure or Continue ............ 292
Implement Custom Validations Using XQuery . . . . . . . . . . . . . . . . . . . . . . . . . 293
Airline Checks and Mapping with Domain Value Map . . . . . . . . . . . . . . . . . . . 297
Reusable Logic through Inline Subprocess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Create Inline Subprocess to Report a Validation Error . . . . . . . . . . . . . . . . . . . . 299
Call the Inline Subprocess from Scope AirlineValueMap . . . . . . . . . . . . . . . . . . 301
Testing the FlightScheduleService with the Subprocess
to Handle Airline Mapping Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Using Embedded Java for Validation and Enrichment . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Embedded Java Activity to Execute Content-Based Logic ................. 304
External Callouts or Invoking Services from a BPEL Process . . . . . . . . . . . . . . . . . . . . . 307
Invoke the SlotService from the BPEL Process . . . . . . . . . . . . . . . . . . . . . . . . . . 307
FinancialDepartmentAirlineCheck from the BPEL Process . . . . . . . . . . . . . . . . . . . . . . . 312
Turn BPEL Component into Component Template . . . . . . . . . . . . . . . . . . . . . . . 313
Create and Wire the BPEL Process Based on Component Template . . . . . . . . . . 314
Invoke the Financial Department Check of the Airline . . . . . . . . . . . . . . . . . . . 315
Deploy and Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Reorganizing Scope ProcessingAndRouting with Parallel Activities . . . . . . . . . . . . . . . . 317
Introducing the Parallel Flow Activity to the ProcessingAndRouting Scope . . . . 318
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

9 Coherence Integration to Reduce Load and Speed Up Response . . . . . . . . . . 321


Introducing Cross Instance Shared Memory Using Coherence . . . . . . . . . . . . . . . . . . . 322
Create Slow SOA Composite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Speed It Up with Cache Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
xii Oracle SOA Suite 12c Handbook

Add Some Coherence-Powered Memory to the FlightService . . . . . . . . . . . . . . . . . . . . 333


Introducing the FlightService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Add Cache Support ............................................. 334
Add Refresh Cache Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Leverage Service Bus Result Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Expose FlightService on the Service Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Disable Cache Support in FlightService SOA Composite . . . . . . . . . . . . . . . . . . 343
Switch on Service Result Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344

10 Embedding Custom Logic Using Java and Spring Component . . . . . . . . . . . . 347


Simple intro—First Steps with the Spring Component . . . . . . . . . . . . . . . . . . . . . . . . . . 348
The Greeter Service Based on the Java Greeter Interface . . . . . . . . . . . . . . . . . . 348
Add the Twitter Channel to the FlightNotificationService . . . . . . . . . . . . . . . . . . . . . . . 352
Prepare the Application for Twitter Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Create the Java Class to Send Twitter Direct Messages . . . . . . . . . . . . . . . . . . . . 353
Configure the Spring Context Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Engage the Spring Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Try Out the Twitter Message Master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Create Spoken Flight Status Announcement and Put in Dropbox . . . . . . . . . . . . . . . . . 359
Convert Text to Speech . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Publish File to Dropbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Compose Flight Announcement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Extend TwitterChannel to Publish Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Wiring the Pieces Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
The Complete End-to-End Audio Channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

11 Business Rules to Capture Business Logic to Automate Decisions . . . . . . . . . 379


Calculating the Airport Charge for a Flight—Round One . . . . . . . . . . . . . . . . . . . . . . . 380
Prepare SOA Composite Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Implement Business Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Test the Business Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Deploy and Test the Composite .................................... 388
Extend Business Rule with Cargo Consideration . . . . . . . . . . . . . . . . . . . . . . . . 389
Use SOA Composer for Online Manipulation of Business Rule Parameters . . . . 390
Introduction of the Decision Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Decision Table for the Daily Starbucks Decision-Making Process . . . . . . . . . . . 391
Extended Airport Charge Calculation—Using a Decision Table . . . . . . . . . . . . . . . . . . . 392
Prepare Business Rule for the Decision Table . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Create the Decision Table for Deriving the Surcharge Factor . . . . . . . . . . . . . . . 395
Update Test Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Deploy and Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Contents xiii

PART IV
Asynchronous Services and Events
12 Asynchronous Services with SOA Composites and Service Bus . . . . . . . . . . . 411
Exposing Asynchronous Services ......................................... 412
Implement the Asynchronous ThoughtfulGreeterService
with a BPEL Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Implement Asynchronous Service with Mediator . . . . . . . . . . . . . . . . . . . . . . . 417
Expose Asynchronous Service Interface with Service Bus . . . . . . . . . . . . . . . . . 419
Interacting with Asynchronous Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Invoke an Asynchronous Service from a BPEL Component—
Synchronous Interface on Top of Asynchronous Back End . . . . . . . . . . . . . . 421
Invoking an Asynchronous Service in Service Bus . . . . . . . . . . . . . . . . . . . . . . . 423
Request Proposal for Airport Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Introducing the AircraftService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Implementing the Asynchronous AircraftService with BPEL . . . . . . . . . . . . . . . . 426
Implementing the AircraftServiceOrchestrator . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Implementing the Asynchronous AircraftService with ServiceBus . . . . . . . . . . . 431
Extend the AircraftServiceOrchestrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Introduce Some Asynchronous Interaction to the BPEL Process . . . . . . . . . . . . . . . . . . . 435
Add Deadline Monitor to AircraftServiceOrchestrator . . . . . . . . . . . . . . . . . . . . 435
Use Correlation to add a Cancel Operation
to the AircraftServiceOrchestrator ................................ 436
Retrieve Current RFP Status from Running AircraftServiceOrchestrator . . . . . . . 444
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450

13 Inbound Adapters—Polling Database, Consuming JMS,


and Receiving Emails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Database Polling for Staged Slot Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Prepare Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Create SOA Composite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Deploy and Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Inbound Adapters and Exceptions .................................. 456
Scaling Inbound Adapter Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
JMS Queue Reading on Behalf of the Financial Department . . . . . . . . . . . . . . . . . . . . . 460
Create the Service Bus Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Add the Inbound JMS Adapter Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Configure JMS Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Deploy and Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
The Airport Information Desk—Receiving Emails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Create the SaibotHelpdesk SOA Composite . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Configure Email Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Deploy and Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Miscellaneous Inbound Interactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
xiv Oracle SOA Suite 12c Handbook

14 Using the Enterprise Scheduler Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469


Switch Off the Inbound Database Adapter for Processing Portal Slot Requests . . . . . . . 470
Create Schedules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Apply Schedules for Activation and Deactivation
of Inbound Database Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Test Switching Off and on of Database Adapter Binding . . . . . . . . . . . . . . . . . . 474
Schedule Daily Flight Data Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Create SOA Composite PresentFromFuture . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Create and Schedule daily execution of PresentFromFuture with ESS . . . . . . . . 476
Turn Present Flight Data Creation into an ESS PL/SQL Job . . . . . . . . . . . . . . . . . 480
Delayed Invocation of ESS Job from SOA Composite . . . . . . . . . . . . . . . . . . . . . . . . . . 484
Add BPEL Process to Composite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
Forward Response from DB Adapter to BPEL Process . . . . . . . . . . . . . . . . . . . . 485
Environment Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
Deploy and Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

15 The Event Delivery Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491


Event-Driven Architecture for Super Decoupling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Introducing the Event Delivery Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
The FlightStatusUpdate Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Define the Business Event FlightStatusUpdate . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Consume FlightStatusUpdate from EDN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Air Carrier Suspended Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Consume EDN Event into New BPEL Process . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Consume into Running BPEL Process AircraftServiceNegotiationProcessor . . . . 503
More about the Event Delivery Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
Transactions, Security, and Scalability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
Missing Event Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
Event Exchange with EDN from Other Channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
Publish FlightStatusUpdateEvent from Java Client to EDN . . . . . . . . . . . . . . . . . 507
Consume FlighStatusUpdateEvent from EDN to a Java Client . . . . . . . . . . . . . . 509
Interact with EDN from Service Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513

16 Fast Data Processing with Oracle Event Processor . . . . . . . . . . . . . . . . . . . . 515


Sorting Out the Real-Time Data Avalanche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Complex Event Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Oracle Event Processor and SOA Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Car Park Management Using Event Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Preparation of the Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . . 521
The Saibot Parking OEP Application ................................ 522
More Event Intelligence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Car Stay Duration—Derived per Car and Promoted per Car Park . . . . . . . . . . . 527
Find Towing Candidates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
Contents xv

Publish Car Park Nearly Full events to JMS Destination . . . . . . . . . . . . . . . . . . . . . . . . . 529


Calculate the Percentage Full for Each Car Park . . . . . . . . . . . . . . . . . . . . . . . . 529
Publish the CarParkNearlyFull Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
Publish from OEP to JMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Deploy and Run—and Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Publish Car Park Nearly Full Events to Event Delivery Network . . . . . . . . . . . . . . . . . . . 534
SOA Composite Application for Responding to a Nearly Full Car Park . . . . . . . 534
Extend OEP Application with EDN Integration . . . . . . . . . . . . . . . . . . . . . . . . . 535
Deploy and Test/Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Credit Card Theft Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Stream Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539

PART V
Process Orchestration
17 The Human Task Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
Introducing the Human Task Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Architecture of the Human Task Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Exploring the Task Service in Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Simple Task Seeking Human Approval for Aircraft Service Proposal . . . . . . . . . . . . . . . 548
Add Human Task to Composite Application . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Configure Task Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Actionable Email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Assign to Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Handcraft Proposal When Rejecting the Generated Proposal . . . . . . . . . . . . . . . . . . . . 559
Create Task to Manually Compose a Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . 560
Generate the Task Form .......................................... 561
Embed Task in BPEL Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Deploy and Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Update Initial Task AssessProposal to Include Workflow
for Approving Manual Proposals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Create Advanced Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
Generate the Task Form for AssessProposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Add a Second Appearance of Task AssessProposal to the BPEL Process . . . . . . . 569
Deploy and Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
Advanced Features for Human Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Business Rules for Task Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
Java and WebService API for Human Workflow Services . . . . . . . . . . . . . . . . . . 572
Database Views for Inspecting Task Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
Using Excel as an Alternative Worklist Application . . . . . . . . . . . . . . . . . . . . . . 572
Human Task Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
Custom Task Allocation and Escalation Mechanisms . . . . . . . . . . . . . . . . . . . . . 573
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
xvi Oracle SOA Suite 12c Handbook

18 Business Process Oriented BPEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575


Designing the Business Process: Security Accreditation for New Airport Personnel ... 576
Description of the Business Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
Designing the Still Abstract BPEL Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
Next Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
Interaction with the LDAP Directory Using the LDAP Adapter ................... 582
Implement Retrieve User from LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Implement Add User to LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
Deploy and Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Extending the Business Process with Business Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
The Process Implementation So Far . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
Add Business Rule to Decide on Required Internal Screening Level . . . . . . . . . 591
Add Correlation and Implement Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
Define Correlation through Properties and Property Aliases . . . . . . . . . . . . . . . 593
Implement the Event Handlers for Asynchronous Request Processing . . . . . . . . 594
Fault Handling and Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Exceptions and Fault Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Compensation for Faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603

19 Business Process Management and Adaptive Case Management . . . . . . . . . . 605


Business Process Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
BPM from an Architectural Point of View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
Design Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
Tools to Facilitate BPM Efforts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
Introducing BPMN Service Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
Comparing BPMN and BPEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
Auxiliary Applications for BPMN Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
Airport Accreditation Request Handling in a BPMN Process . . . . . . . . . . . . . . . . . . . . . 612
Outline SecurityCheck Process in Process Composer . . . . . . . . . . . . . . . . . . . . 612
Add Process Implementation Details in JDeveloper . . . . . . . . . . . . . . . . . . . . . 617
Integrate BPMN Component from BPEL Process . . . . . . . . . . . . . . . . . . . . . . . . 624
Enabling Business Users to Create the Human Task UI . . . . . . . . . . . . . . . . . . . . . . . . . 628
Adaptive Case Management to Handle Top Security Level Accreditation . . . . . . . . . . . 634
Introducing Adaptive Case Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
Introducing the Top Security Accreditation Case . . . . . . . . . . . . . . . . . . . . . . . . 636
Create the Outline of the Top Security Accreditation Case ................ 637
Case Activities and Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644

20 Monitoring for Insight into Business Process Execution . . . . . . . . . . . . . . . . . 647


BPEL Monitoring Using Sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
Monitoring AirportAccreditationProcessor with BPEL Sensors . . . . . . . . . . . . . . 650
BPEL Process Analytics Reported Using BAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
Out of the box Process Analytics with BPEL and BAM . . . . . . . . . . . . . . . . . . . 655
Custom Reports and Process Specific Business Indicators . . . . . . . . . . . . . . . . . 658
Contents xvii

Process Analytics in BPM Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666


Design Time Configuration of Process Analytics . . . . . . . . . . . . . . . . . . . . . . . . 667
Leveraging Process Analytics at Run Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
Business Activity Monitoring beyond Process Analytics . . . . . . . . . . . . . . . . . . . . . . . . 674
Introducing Business Activity Monitoring aka BAM . . . . . . . . . . . . . . . . . . . . . . 674
Real-Time Monitoring of Saibot Airport Carpark Events . . . . . . . . . . . . . . . . . . . 677
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681

21 Governance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Reuse, Dependencies, and Coexistence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Implementing Governance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
Granularity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688
Granularity of SOA Composite Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . 688
Partitions ..................................................... 692
Templates in SOA Suite ................................................ 692
Templates for SOA Composite Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
Templates for Service Bus Pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
Managing and Reusing Artifacts Using MDS and a Common Project . . . . . . . . . . . . . . 696
Using MDS to Share and Consume Resources . . . . . . . . . . . . . . . . . . . . . . . . . 697
SOA Composite Based on Resources in MDS . . . . . . . . . . . . . . . . . . . . . . . . . . 698
Service Bus, Common Project, and MDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Updating MDS Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
Updating the Service Bus Project ConversionService . . . . . . . . . . . . . . . . . . . . 710
Versioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712
Versioning of Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712
Endpoints, States, and Versions of SOA Composite Applications . . . . . . . . . . . . 713
Tools for Governance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716
Oracle Enterprise Repository ...................................... 717
Oracle API Catalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718

22 Building and Deploying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721


The Finishing Touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
Integrated Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724
SOA Composite Test Suites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
Quality Auditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
Automating the Build Pipeline Using Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
Preparation for Using Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
Automated Compilation Using Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
Packaging with Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
Deployment by Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
Testing as Part of the Maven Build Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
Using Maven for Service Bus Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
Environment Friendly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
Configuration Plans for SOA Composite Applications . . . . . . . . . . . . . . . . . . . . 745
xviii Oracle SOA Suite 12c Handbook

Global Tokens in SOA Composite Applications . . . . . . . . . . . . . . . . . . . . . . . . . 752


Configuration Files for Service Bus Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759

23 Run-Time Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761


Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
Log files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
Alerts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
Monitor through Enterprise Manager Fusion Middleware Control .......... 779
(Re)Act . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785
Dynamically Adjusting Application Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . 785
Error Hospital and Fault Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789
Prevent or Pro-Act . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
Throttling the Work Volume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
Balanced Resource Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795
Purging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798

24 SOA Suite and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799


Human Access to Run-Time SOA Suite Tooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800
Role-Based Authorization to Access Run-Time Tools . . . . . . . . . . . . . . . . . . . . . 801
Hide Sensitive Data in Logging and Consoles . . . . . . . . . . . . . . . . . . . . . . . . . . 804
Introduction of Security in the World of Web Services . . . . . . . . . . . . . . . . . . . . . . . . . 809
Some Security Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
Transport versus Message Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
Security Products around SOA Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
Introducing Oracle Web Services Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
Authentication and Authorization of Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
Authentication Using WS-Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
Authorization Using WS-Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825
Authentication and Authorization on Service Bus Proxy Services . . . . . . . . . . . 829
Confidentiality and Integrity of Message Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
Realizing and Enforcing Transport Level Security . . . . . . . . . . . . . . . . . . . . . . . 833
Implementing Message Level Confidentiality and Integrity . . . . . . . . . . . . . . . . 836
Invoke Protected Services from SOA Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
Service Bus Calls to Secured Web Services ........................... 838
SOA Composite Calls to Secured Web Services Requiring Authentication . . . . . 841
Auditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
Fusion Middleware Audit Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
WebLogic Auditing Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
Logging Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
Foreword

ntegration is the key driver for getting true return of IT investment in Enterprises.

I The advents of cloud-based applications, the proliferation of mobile devices, and


the explosion of the API ecosystem are powering a new generation of integration
requirements to solve the ever-increasing entropy and complexity in Enterprises today. The
proliferation of cloud applications has reduced the time to market for Enteprises; however,
it has clearly increased the entropy of applications. The proliferation of mobile devices
has resulted in the need for consumers and employees to demand clean and relevant
information to be pushed to their devices in real time. The advent of modern API-based
development has clearly quickened time to market for app development, but increased
the need for application integration and the simple and easy management of the
integration infrastructure as well.

It is in this context that the 12c release of Oracle SOA Suite was born. This is a major
milestone in the evolution of one of the cornerstone products in Oracle Fusion Middleware.
Oracle SOA Suite helps organizations speed up time to integration, improve developer
productivity, and lower TCO. With SOA Suite 12c, developers will be more productive and
administrators will find even more capability to run highly available and scalable
integrations for 24/7 support of the enterprise. Oracle Middleware continues to be the
foundation for all of Oracle Applications and now is the foundation for Oracle Platform-As-
A-Service in the cloud as well.
Upgrading to SOA Suite 12c is easier than ever before. Customers on the current patch
releases and meeting other criteria can complete an in-place upgrade that allows their SOA
composites to proceed right where they left off. Oracle SOA Suite 12c is truly the Service
Integration Platform to power your Enterprise Applications, Internet of Things, Mobile,
and Cloud.

xix
xx Oracle SOA Suite 12c Handbook

The author of the book you are holding—Oracle ACE Director Lucas Jellema—has been
publishing on Oracle SOA products for more than a decade. From blog posts on the initial BPEL
Process Manager as early as 2004 and his widely used Oracle SOA Suite 11g Handbook in 2010,
he now delivers the tome you are holding today. Maybe even more important: he brings a decade
of practical experience to the table of utilizing Oracle Fusion Middleware in various challenging
business environments. This experience shines through in the many examples and useful
guidelines that Lucas provides in this book.
This book covers most areas of Oracle SOA Suite 12c. It starts from simple synchronous
services and straightforward integration patterns and then gradually works its way through
asynchronous interactions, event-driven exchanges to the implementation of complex business
processes and human tasks. It discusses the technology adapters that provide essential integration
with databases, queues, and other technology components. Run-time administration, DevOps,
and Security are some areas touched upon as well.
The case of the airport that Lucas uses as the backdrop for the examples in this book is a fine
example of an organization that has clear business objectives and an enterprise architecture to help
realize those objectives. Lucas makes it quite clear how many pivotal aspects of the IT architecture
of this airport can be implemented using the Oracle SOA Suite. The airport is imaginary—but the
same applies to many organizations around the world, probably including yours.
I know that your organization can take important steps and make significant progress toward
your main business objectives by applying service-oriented principles using Oracle SOA Suite 12c.
I am convinced that this book, the many examples and practical tips provided by the author, will
help you get started and become proficient with Oracle SOA Suite 12c.
I wish you the best as you embark on your journey to add value to your business. I know that
Oracle SOA Suite 12c will power your innovation and that this book will provide you with expert
guidance to make your project a success. We look forward to hearing from you as you use our
products and services and are grateful that you chose Oracle to be your partner!

Inderjeet Singh
Executive Vice President,
Oracle Fusion Middleware Development
Acknowledgments

S
uccess has many fathers, failure is an orphan. Many people contributed to this book
and therefore its imminent success—including several who did so unconsciously and
perhaps very indirectly. For example, during the OTN Yathra Tour of India in 2013, I
met with two Oracle DBAs in Bangalore. They related to me how, by using my Oracle SOA
Suite 11g Handbook, they had been introduced to Middleware in general and Oracle
SOA Suite in particular. They thanked me for the book because of how it had propelled them
in their career. They also could not stress enough how they would appreciate a successor
describing the 12c release of SOA Suite. Although at the time I had no intention of committing
to another book, this unexpected and heartwarming, if not outright flattering, conversation did
much to convince me to get started on the book you have now in your hands.

Essential for the production of the book obviously has been the collaboration with the
staff at Oracle Press/McGraw-Hill: Paul Carlstroem, Amanda Russell, and Brandi Shailer. The
copy editing process was managed by Tanya Punj at Cenveo Publisher Services.
The support from within various teams at Oracle has been tremendous—through beta
programs and early previews, frank discussions, and friendly banter, I have been given
insights that helped me write the book and provide many details and clarification. Simone
Geib has been my primary point of contact for SOA Suite. Vikas Anand, Robert Wunderlich,
Ram Menon, Jay Kasi, Dave Berry, Ralf Müller, Lloyd Williams, Robin Smith, and Edwin
Biemond are some of my other friends at Oracle who supported my efforts. Jürgen Kress is
the tireless sponsor of AMIS and peer companies in his capacity as EMEA Oracle Fusion
Middleware partner enabler. His energy, initiatives, and sometimes bold moves have
frequently been motivating and helpful.
The Oracle ACE program is another constant source of inspiration. Discussions with my
fellow ACEs and ACE Directors are invariably valuable and stimulating. I am grateful to the
program’s management: Victoria (Vikki) Lira, Lillian Buziak, and Jennifer Nicholson and the

xxi
xxii Oracle SOA Suite 12c Handbook

facilities they provide to us. I hope this book is up to the extremely high-quality expectations of
the Oracle ACE(D)s.
I was fortunate to have two esteemed members of the Oracle ACE community as technical
reviewers for this book. Ronald van Luttikhuizen and Guido Schmutz possess a great combination
of technical expertise, patience, and willingness to share insights and to offer constructive
feedback. Both of them are accomplished authors and helped me not just with the technical
content but also with many other aspects of the book. Any mistakes, of course, are my own—and
many things that are good about the book are so because of Guido and Ronald. Thanks so much
for working on this together!
The trust from my colleagues at AMIS, the support from the entire company, and the many
encouragements, contributions, and constructive criticisms have been wonderful. Thanks for
13 great years (so far) and your help in my endeavors. A special word of thanks to Chiel Ham,
who tried out most of the samples introduced in the book and provided me with many corrections
along the way.
Madelon has been crucial for the realization of this book. She came up with the airport
case—mainly to shut me up so she could go to sleep, but still. More importantly, she is there for
me. Our two sons—Lex and Tobias—are another wonderful constant in my life. Their curiosity
into the book project provided a persistent drive and challenge.
Introduction

ervice-Oriented Architecture is one of the major trends of our time in enterprise and

S IT architecture. The promise that SOA presents to business of business agility, lower
costs, and improved quality of operations, based on concepts such as loose coupling,
reuse, encapsulation, and interoperability, attracts many organizations. Complemented with
Business Process Management (BPM) and Event-Driven Architecture (EDA), SOA can add
real and sustained business value to enterprises.

Adopting SOA in an organization is a serious challenge that will require major efforts at
various levels, from business to IT infrastructure. Crucial to the success of SOA adoption are
sometimes intangible elements, including mindset, collaboration across departments and
lines of business, communication, process orientation, and business analysis—in terms of
interfaces and contracts, with focus on reuse and loose coupling and the implementation of
proper governance.
When it comes to the actual implementation of the services and components that have
been analyzed and designed, there is a need for an SOA platform—a run-time infrastructure
that executes the applications and processes, handles service calls, and provides facilities
around security, exception handling, and management. Enter Oracle SOA Suite 12c.
SOA Suite 12c is one of the key components in Oracle Fusion Middleware, a prominent
platform to create and run agile and intelligent business applications and to maximize IT
efficiency by exploiting modern hardware and software architectures—both on premises
and in the cloud.
This book explains what SOA Suite 12c is and how its many features and components
can be used to develop, deploy, and manage service-oriented artifacts.

About This Book


The book is primarily targeted at software developers and to some extent administrators and
application or solution architects. Ideally, the reader has some knowledge of XML, SQL,

xxiii
xxiv Oracle SOA Suite 12c Handbook

Java, and perhaps PL/SQL, but these are not required to benefit from most of the book’s content.
Readers with administrative responsibilities will find a lot of material supporting them in these
tasks. Testers and (technical) architects will also learn a lot from large sections in this book. IT
management staff and business analysts will mainly benefit from Part I; if they have a technical
background, then others parts will prove worthwhile as well.
The book is organized into the following six parts.
Part I, “Setting the Stage,” introduces the case of Saibot Airport and the business and IT
challenges it faces. The path the airport has laid down for itself in order to create its future and the
IT architecture and technology it has selected are discussed along with the core concepts that
make up Service-Oriented Architecture. The history of Oracle Fusion Middleware is described as
well as its current status. The focus then moves to a detailed overview of SOA Suite 12c, its main
constituents, and closely associated products such as Managed File Transfer, API Catalog, API
Manager, B2B, and Healthcare. This part concludes with a very quick start-up instruction which
includes the installation of SOA Suite 12c development environment, ready for the creation and
deployment of the HelloWorld equivalent in SOA applications.
Part II, “Elementary Services,” provides the first iteration through Service Bus and SOA
Composite applications using the Mediator component. This part discusses design and
implementation of fairly simple services that are synchronous, single purpose, and short running,
both with SOAP/XML and with REST/JSON style interfaces. The part introduces a number of
outbound adapters: File, Database, UMS (for interaction with humans using email and chat), JMS,
AQ, and EJB. The same services are implemented using both Service Bus and SOA Composites—
to highlight the similarities and differences between the two approaches in SOA Suite 12c for
service development.
In Part III, “Composite Services,” more complex services are discussed that leverage more
advanced facilities in the SOA Suite. The business process execution language BPEL is introduced
as well as the Business Rule component. Complex message validation, making service call-outs
for validation and enrichment, performing value lookups, and performing bulk operations in
parallel are some mechanisms discussed in this part. Templates are introduced, providing reuse at
various levels. Integration of custom Java in both Service Bus (Java Call Outs) and SOA
Composites (Spring Java component) is demonstrated—demonstrated using interactions from SOA
Suite with the Twitter and DropBox APIs. This part also discusses the use of the Coherence
Adapter to improve response times and scalability and reduce load on backend systems.
Up to this point, all activities in SOA Suite were started and completed from a synchronous
call on a single thread. In Part IV, “Asynchronous Services and Events,” we discuss the
asynchronous side of things. Asynchronous service interfaces that return a response through a
callback at a later point in time are both consumed and published using both Service Bus and
SOA Composite. Subsequently, the use of inbound technology adapters is discussed. These
adapters cause services to be executed as a result of events detected in external components,
such as database tables or advanced queues, JMS destinations, an email folder, or a file system
directory. A time event can be another trigger to execute a service—as the chapter on the
Enterprise Scheduling Service (ESS) explains. The ultimate decoupling mechanism in SOA Suite is
the Event Delivery Network (EDN) that is introduced next. With EDN, we can implement the
extreme decoupling concepts of Event-Driven Architecture for business events that are published
and consumed from and by Mediator and BPEL inside the SOA Suite, and Java and PL/SQL
components outside of it. How Service Bus can be made to interact with EDN is explained as well.
Introduction xxv

The last chapter in this part discusses Oracle Event Processor (OEP), a component that is included
in the SOA Suite license, integrated with the Event Delivery Network, and implemented outside of
the SOA Suite runtime, in its own container. With OEP, lightweight applications can be created
that monitor and analyze signals across many run-time processes in real time. Using OEP, we can
automate much of the human responsibility for observation, interpretation, and reaction.
In Part V, “Processes,” we introduce the human actor into the mix. Recognizing that not all
activities can be executed by automated service components, the SOA Suite is capable of
engaging people. Through the Human Workflow Service, the SOA Suite can have tasks assigned,
whose result—produced by the human actor(s)—is fed back into the automated process. An
end-to-end business process—either true STP (straight through processing) or involving human
activities—is implemented in SOA Suite using the BPEL component. As part of the process that
gets implemented, interaction with a user directory is achieved using the LDAP adapter. User
accounts are searched and new accounts get created.
A common consideration for organizations with a strong emphasis on automated business
process execution is to acquire the Oracle BPM Suite on top of the SOA Suite and use Business
Process Management and Adaptive Case Management (defined through BPMN and CMMN). This
Part V makes a little excursion from its main scope—Oracle SOA Suite 12c—to discuss the BPM
Suite and demonstrate how it facilitates the implementation of complex business processes as
well as the notion of unstructured, content, and expert-driven processes through case
management. Insight into the execution of business processes is usually highly desirable—for
operational resource management and problem detection and intervention as well as for longer
term process analysis and optimization. This chapter discusses how process analytics can be
produced from both BPEL and BPMN processes and how these analytics are reported in
Enterprise Manager Fusion Middleware Control and in Business Activity Monitoring (BAM). BAM
is a standalone product that is included in the SOA Suite 12c license. It can be used to report on
the analytics produced from SOA Suite and BPM Suite as well as on other data sources, as is
demonstrated in this part.
In the final part, Part VI, “DevOps & Run-Time Administration,” we switch gear a little. In
parts II through V, we have primarily discussed the design and development of custom software
to be deployed on the SOA Suite. In this part, we focus on the supporting software engineering
processes that help govern and facilitate the creation of the custom software components as well
as their delivery from development through test to production. This part discusses reuse of artifacts
through MDS (the Meta Data Services), the mechanisms available for versioning, and some
suggested practices for governance. Subsequently, the facilities are discussed for automated
building, testing, and deploying of SOA Suite artifacts—for example, using Maven. Administrative
responsibilities are an important topics in this chapter. The Enterprise Manager Fusion Middleware
Control and its features to support run-time operations are introduced—for example, monitoring
of SLAs, workload and performance, exception handling, metadata purging, and the extensive
logging infrastructure in SOA Suite and WebLogic. The final subject in this part—and indeed the
book—is security. The security of the SOA Suite run-time infrastructure and protection of its
metadata is one aspect that is discussed. The protection of services from unauthorized access and
the confidentiality and integrity of the messages that are exchanged is another one, both for the
services exposed from the SOA Suite and for those invoked from it. The interaction with OPSS
(Oracle Platform Security Services) and the OWSM (Oracle Web Services Manager) features
prominently in this discussion.
xxvi Oracle SOA Suite 12c Handbook

Saibot Airport
Implementing SOA is meaningless without a tangible business context. Services address business
requirements, as do composite applications and business processes. To illustrate SOA and Oracle
SOA Suite, this book uses the case of a made-up airport, called Saibot Airport and located in
the great city of Lexville. The exact location of the airport remains uncertain—hovering between
the Netherlands and the USA, I would surmise.
The airport and its challenges, both at a business level and in terms of technology, provide the
backdrop throughout the book against which SOA Suite features are discussed, examples are
designed, and the implementation is done. This airport represents a series of business challenges
that are found in organizations across industries and countries. It has interactions with external
parties (including customers and business partners), strives to create more efficient business
processes across departments that combine automated actions and manual tasks, needs to
implement security, continually faces changing requirements with ever shorter times-to-market,
and hopes to gain more real-time insight into the current state of affairs.
Many of the solutions discussed in this book for Saibot Airport set useful examples for similar
requirements in other organizations. And at the very least, the airport provides a context that most
readers from many different countries will be able to relate to.

How to Use the Book


This book is not intended as a reference manual that is used to look up specific details on an
operation or feature in the SOA Suite, even though I suppose it could be used for that too.
This book is primarily a guide that invites you to come along and explore the SOA Suite. It
introduces concepts and real-life requirements, using the imaginary Saibot Airport as the concrete
example. It describes the functionality and features in particular components in the SOA Suite and
applies them to actual business challenges. Through step-by-step cases that go beyond the archetypical
Hello World and introductory order-processing examples, it demonstrates the application of product
features, provides hints and tips for using them, and suggests best practices.
Even though you can read and practice individual chapters (in random order), be aware that
they will often refer to decisions made in earlier chapters or features discussed in a previous
stage. The chapters and topics are logically ordered in the sequence that feels most natural to
me—adding scope and complexity as we work our way from simple synchronous interactions to
asynchronous services and long-running business processes.
Most is gained from this book by not only browsing and reading it but also getting your feet
wet by following along with the hands-on instructions in the book and the online resources. By
having your hands do what your eyes are reading and your brain is processing, you will have a
multichannel learning experience that delivers the most thorough and lasting results.
The Saibot Airport case provides the main storyline throughout the book. However, the
examples discussed in each chapter stand on their own. You do not have to work your way
through all chapters in order to implement the examples for a specific chapter. The environment
in which the sources for any chapter run contains just whatever is discussed in that chapter
without complex setup or dependencies on stuff from previous chapters.

Supporting Online Resources


Even though this is a sizable book, it does not contain all the SOA Suite 12c wisdom in the world.
In fact, it does not even contain all information that is associated with the book itself. To allow the
full breadth of the SOA Suite’s functionality to be discussed in the book, some of the instructions in
Introduction xxvii

the book itself have been provided in summarized form or with a reduced number of illustrations.
More detailed step-by-step instructions and full-color, higher-resolution screenshots, additional
clarifications and links to videos, the official Oracle documentation, and alternative internet
resources are provided on the book’s website at www.soasuitehandbook.org.
xxviii Oracle SOA Suite 12c Handbook

The menu structure on the blog section is organized according to the parts and chapters in
the book. Each chapter has a dedicated page with relevant resources that support the content
in the book. At specific points in the chapters, you will find references to the online resources
on the book’s website. These references apply to chapter-specific pages on this website.
The source codes for the examples in the book—the Saibot Airport case—are published from
Github at the following URL: https://github.com/lucasjellema/soasuitehandbook.

You can use the regular Git tooling to get hold of these sources in your local development
environment. You can also make use of the Git support in JDeveloper to fetch the sources, use the
option Clone in Desktop or simply download all sources in a single zip file.
If you want to provide any feedback on the book or ask questions related to the book’s contents,
you can post a comment on the blog or send a direct Twitter message to @lucasjellema.
PART
I
Introducing Saibot Airport,
SOA, and the Oracle
SOA Suite
Another random document with
no related content on Scribd:
The engine, with a full tank of the best coal, had already been run
out of the roundhouse, and the train-dispatcher had the freights
safely side-tracked, and satisfactory “meets” with the passenger-
trains about figured out, when he was interrupted in his study of the
train-sheet by a nervous ring at the telephone. The dispatcher
answered it himself, and the foreman of the roundhouse announced
that Pearson was sick, and unable to take the special out.
“That’s bad,” mused the dispatcher, but added, a moment later:
“Well, send the next best man, and get a move on; they’ll be here in
ten minutes.”
“They ain’t none,” replied the roundhouse.
“No other engineer?” shouted the dispatcher.
“Well, there’s only Perkins on the yard-engine and Hard Luck just
in on Scott’s work-train—might double him out again—that’s all.”
The dispatcher rushed into the adjoining room to consult the
superintendent.
It was in the midst of the busiest season, and every available
engineer was out upon the road.
“Hard Luck? nonsense!” said the superintendent when he was
informed of the situation. “Tell Pearson he must take the special out
—this is a nice time for him to get sick!”
The roundhouse was notified, and replied that Pearson was
“foamin’ awful—his wife’s got him jacked up and two doctors workin’
on him,” yelled the foreman.
“This is terrible! terrible!” groaned the superintendent. “Perkins is
only a boy, we can’t put him on, and Hosselkus will never get over
the division without something happening—never in the world!” and
the perspiration started upon his forehead. The whistle of the special
aroused him to the necessity of immediate action.
“Tell them to put Hosselkus on, and get him out as quick as
possible—we are in the hands of Providence anyway, I suppose,” he
added to himself.
All was hurry and excitement when the special pulled in. The
engine that brought it in was cut off and hurried out of the way, while
the huge, well-groomed “Three-Sevens” backed slowly down in
charge of Hosselkus, whose heart swelled chokingly as the brazen
clangor of her bell pealed out.
But the beginning was ominous. The engine was unfamiliar to him
and worked more stiffly than he had expected, so that when he
backed down to be coupled on, he struck the train with a momentum
that jarred its occupants uncomfortably.
“Lord! Lord!” moaned the superintendent as he wiped his clammy
brow and sought to divert the directors’ attention from the mishap by
suggesting some needed improvements in the “Company’s” water
supply.
Presently he excused himself and went ahead to the engine to
interview Hard Luck. He found him with an oil-can in one hand and a
bunch of waste in the other, engaged in the important duty of “oiling
’round.”
Hosselkus had had no time to change his greasy jumper and
overalls for cleaner ones; his hasty wash had merely imparted a
smeary look to his countenance, and the badge on his cap was
upside down, but his eyes sparkled beneath their shaggy brows, his
mustache bristled savagely, and the whole man was nervously alert
as, with a squirt of oil here, a dab of the waste there, and feeling
carefully each key and bearing to detect any signs of heating, he
worked his way around the mighty racer. He was just finishing his
round when the superintendent came up.
“Now, Hosselkus,” said the latter, appealingly, “do be careful and
try and get us over the division in some kind of shape—make time,
and, for heaven’s sake, don’t break down on the road. If you make a
first-class run, I’ll see what we can do about getting a passenger run
for you.”
Hosselkus put away his tallow-pot, wiped his hands on the bunch
of waste, which he then carefully placed in his pocket to serve as a
handkerchief, and at length spoke: “Colonel,” he said, “don’t you lose
no sleep over this excursion—we’ll git there in the biggest kind of
shape—this mill has got it in her, an’ if I can’t coax a move out of her,
I’ll run a stationary the rest of my life. Now, these kid-engineers of
yours, they ain’t up in mechanics like they’d oughter be—not but
what they’re good boys—mind you, I’m not sayin’ a word agin ’em—
but they waste her stren’th—they don’t really savvy the theory. Now
——”
“Yes, yes,” hurriedly interrupted the superintendent; “I know, but
we must be getting out of here, and don’t forget that passenger run
—it’s manslaughter, if not murder in the first degree,” he said to
himself, as he hastened back; “but if we escape with our lives, he
shall have the run.”
The conductor waved his hand, Hosselkus opened the throttle
slightly and the steam shrilled through the cylinder-cocks as the
special moved down the yard. Slowly he threaded the network of
tracks, cut-offs, and blind switches, and then more rapidly by the
long siding opposite the row of cottages, where the families of the
conductors and engineers lived. And instinctively he felt the eyes of
the women upon him, and that they were saying: “Well, if there ain’t
that crazy fool on Pearson’s Three-Sevens, with a passenger
special! Wouldn’t that kill you?” for women are jealous divinities—
they would not that man should have any other gods or goddesses
before them, and, as Hosselkus worshiped only a locomotive, a thing
of steel and iron, they made of him a by-word and a reproach. But at
that moment, Hard Luck cared but little for their disdain; he only
thought of his triumph, and the discordant clanging of the bell of the
Three-Sevens sounded in his ears as a pæan of victory. “At last—at
last,” seemed to say its brazen tongue.
The last switch was passed, and Hosselkus, forgetting the
lightness of his train, opened the throttle so suddenly that the engine
fairly leaped forward, while passengers’ necks received a violent
wrench.
“This engineer of yours, colonel,” said the general superintendent,
spitting out the end of a cigar he had involuntarily swallowed, “is just
off a pile-driver, is he not?”
The colonel laughed a joyless laugh. “The fact is,” he replied, “the
regular man was taken sick at the last moment, and we had no one
but this fellow to put on. He is an old engineer, but not used to the
engine. I think he will improve when he gets the hang of it.”
“I hope so—I hope so,” said the general, fervently, as he lit a fresh
cigar; “there is evidently room for improvement.”
But presently even the anxious superintendent was forced to
admit they were moving. Telegraph-poles, that had appeared and
disappeared with majestic deliberation, began to flit by the windows
with a frequency and abruptness very unusual in those stately
objects; quicker and less rhythmic came the click of the wheels as
each rail was passed, and the leaps of the engine at each revolution
of the driving-wheels were merged into a continuous, convulsive
shudder. The passengers no longer experienced the sensation of
being drawn along, but felt as though projected through space, and
the more timid clung to their seats to avoid soaring off through the
roof. Trainmen who could traverse undisturbed the reeling roofs of a
fast freight, made their way through the swaying cars with difficulty.
Old Hard Luck was evidently “getting there,” and the
superintendent prayed silently that he might maintain the speed to
the end.
At the first stop he went forward to congratulate the engineer. The
fireman was under the engine “hoeing out,” and Hosselkus, sooty but
triumphant, was “oiling ’round.”
“How’d’s that suit you, colonel?” he cried, as his superior
approached; “the old girl’s a-crawlin’, ain’t she?”
“You’re doing fine, Hosselkus—fine, but keep it up—pound her on
the back, for the porter tells me the wine is getting low and they’re
liable to see something to beef about. Keep ’em a-rollin’, and the
passenger run is yours.” The colonel had risen from the ranks, and
at times, unconsciously, lapsed into the old dialect.
“Don’t you worry none, we’ll git there. Gimme this mill, colonel, an’
none of the other boys on the division ’ud ever get a smell of my
smoke. An’ she does it so easy, reminds of your maw’s old rocker—
just handle her right, don’t crowd her, that’s the main point. Now my
theory’s like this, we’ll say the cylinder receives so much——”
But the colonel had fled. Hard Luck carried his theory with him, for
he never succeeded in obtaining a listener to whom he could
expound it.
No accident occurred, however; the speed was maintained, and
the special reached Oleson’s Siding so far in advance of the train-
dispatcher’s calculations that quite a wait was necessary while
Number Three, the east-bound express, toiled up the grade.
Hosselkus lit the headlight, for the sun was impaled upon one of
the peaks of the distant Sierras, whose eastern slopes were already
purpling with shades of evening.
It was the last stop. Below him wound the tortuous Goose-Neck
Grade, with the division terminus at its foot. The run was nearly
ended.
Having finished oiling, Hosselkus leaned against the cylinder-head
and gazed abstractedly down the track. A brakeman was seated on
the head-block of the switch, throwing stones at an adjacent
telegraph-pole, and moodily speculating upon the probabilities of
“getting in” in time for supper, while an occasional breath of wind
from the valley brought with it, from far down the grade, the puffing of
the engines on Number Three.
He had succeeded. The record would be broken beyond a doubt;
but as the cool breeze of sunset blew in his face, he suddenly
became aware of the fact that he was tired, and he remembered
then that he had been on the road for over forty-eight hours.
The smell of heated tallow struck him, for the first time, as being a
singularly unappetizing odor, and he looked over the huge machine
with something akin to dissatisfaction in the expression of his face.
He sighed, and the brakeman asked if she was coming—meaning
the train.
“No,” replied Hard Luck; “she ain’t showed up ’round the bend yet
—I’uz just thinkin’.”
“Well, here she’s a-comin’.”
Hosselkus clambered to his seat, and as soon as the express-
train had cleared the switch it was opened by the brakeman, and the
special was once more under way.
Leaning uncomfortably now to this side, now to that, and with
angry grinding of flange on rail, it swept around the curves with ever-
increasing speed. A crashing roar, a flare of yellow sunset light
reflected from rocky walls, told of a cutting safely passed, while
bridge, and culvert, and trestle bellowed again as the engine cleared
them at a bound.
The Three-Sevens devoured the way. Again and again Hosselkus
proved the correctness of his theory by the terrific bursts of speed
with which the mighty engine responded to his every impulse; but his
nerves were no longer responsive to the exultant thrill of triumph. A
sickening foreboding griped his heart; yet, whenever he would have
shut off steam and slackened speed, an unconquerable impulse
restrained him; for, in the exhaust of the engine and the roar of
wheels, he fancied he heard one word repeated over and over again,
with maddening persistency: “Hurry! hurry! hurry! hurry!” And the
fireman, as he shoveled in coal and struggled to maintain his difficult
footing, noted with wonder, not unmixed with uneasiness, that
Hosselkus was working steam on grades where it was usual to “let
them down” under the restraining pressure of the air-brakes.
The lagging summer twilight gradually deepened until the
illuminated faces of clock and steam-gauge stood out with pallid
distinctness in the gloom of the cab. Lights in lonely section-houses
shot past, and occasionally a great flare of red rushed upward from
the momentarily opened door of the fire-box. The dazzling light of the
furnace revealed old Hard Luck crouching forward on his seat, one
hand on the throttle, the other grasping the reversing lever. His
features were set and sharpened, and so pale that through its grimy
enameling his face looked positively blue. An occasional swift,
comprehensive glance took in clock, steam-gauge, and water-glass,
and then his eyes were again fixed upon the arrowy torrent of ties
that streamed into the glare of the headlight and disappeared
beneath the pilot with unbroken, dizzying swiftness. At last a white
post flitted by and Hosselkus relaxed. He glanced at the clock, and
the next moment a long, wailing blast of the whistle warned the
yardmen at the division’s end.
The record was broken; the passenger run was his at last; old
Hard Luck had actually got over the division without a mishap and in
time never before equaled; but instead of exulting over it, as he shut
off steam, he found himself marveling how faint and far away the
whistle had sounded; had he not felt the vibration of the escaping
steam, he would hardly have believed it was the Three-Seven’s
stentorian voice. Undoubtedly there was something wrong; he would
have to fix it the first thing in the morning. The engine lurched over
the switches, and Hosselkus cursed the sudden fog that had dimmed
the switch-lamps so he could hardly tell red from white, but at length
he pulled up before the Railway Hotel—fortune favored him to the
last, he made a splendid stop.
With a great sigh of relief he leaned back on his seat, while the
eating-house gong banged and thundered a hospitable welcome to
the belated guests.
“You made a magnificent run, Hosselkus. I’ll fix it with the master-
mechanic—you go out on Number Three to-morrow,” called out the
superintendent, as he hurried by.
Presently a yardman uncoupled the engine and waved his lantern.
“All right!” called out the fireman, who was standing in the gangway.
The engineer made no move.
“What’s the matter?” inquired the switchman, climbing into the
cab; “Why in——” The light of his lantern fell upon the engineer’s
face; he paused suddenly, for it was white beneath the grime.
Hard Luck was taken from the engine, laid upon a bench, and a
physician hastily summoned. Engineers, with smoky torches, and
trainmen, with lanterns, crowded around with bated breath, while the
doctor listened long and attentively for a sound of life, but only the
air-pump on the Three-Sevens sighed softly, as the light rings of
smoke from her stack floated up, and up, and up in the quiet air,
where still a tinge of twilight lingered.
“Dead!” said the doctor, and the tension was relaxed.
Then they all praised their late comrade, and all agreed that the
old fellow had a good heart in him, anyway—that is, all but the
doctor, who, as he rose and carefully wiped his spectacles, muttered
something about “Organic weakness—told him so.”
The next day, as the superintendent had promised, Hard Luck
went out on Number Three—but he went in a box, lashed to the
platform of the baggage-car.
THE DOTTED TRAIL
By W. H. Irwin
The first time that Dudley Latimer kissed Belle Sharp, the half-
Spanish “help” at the P. L. Ranch, he was not in earnest; he would
have been the last to say that there was any serious intention in it.
He did it partly in a spirit of pure bravado, and partly because the
morning was as warm and white as new milk, and she, smiling back
over her shoulder as she emptied her pails, looked a part of it.
Equally innocent of any harmful intent, she let him after a formal
struggle. He was tall and clean, and as handsome as a young
Englishman can be when he is in perfect condition, and has a fine,
red coat of tan. Then he bade her good-by. He had been at the ranch
a week, ranging the hills in a vain hunt for antelope, already then, in
the early eighties, becoming scarce. His canvas-covered wagon and
his “side partner,” the Hon. Justin Weymouth, waited by the gate.
The Hon. Justin was taking a parting nip with the “Old Man,” and
did not see the diversion, and none of the four noticed that Emilio
Gonolez, horse trainer and man-of-all-work, was coming in through
the kitchen yard carrying an antelope so freshly killed that its throat
was not yet cut. Emilio stood and watched. He saw the struggle,
heard the girl cry “The gall of you!” saw her color turn as she lifted
her face with unwilling willingness, saw her throw at young Latimer,
walking away, a look of admiration that he took for something else.
Then Emilio slipped round the barn with his quarry, and came upon
the wagon in front. Dudley was smiling across the fence at Belle,
who had found business in the front yard. For half a minute, Emilio
looked what he felt; then smiled as he slipped into view, and said: “I
make-a present you thees antelope. He ees fresh. Myself, I shoot
heem. He come ver’ close.”
“Careful how you tie it, Emmy,” said the Old Man. “Dump it in for
’em. Well, boys, stacking in the north field. Good-by, and luck to
you.”
While Dudley chatted across the fence with Belle, Emilio was
explaining to the Hon. Justin how an antelope should be tied and
hung for a journey. “Head down so he bleed—the dust bother ver’
leetle—oh, yes, a lee-tle cut on the throat so he bleed slow. That ees
bes’. I cut heem.” A slow, red stream trickled over snowy throat and
gray jaws. The wagon drove on. Down the road behind it trailed an
irregular line of wet dots, the centres for an army of noisy flies.
“Awfully jolly girl,” said Dudley, as they bowled easily along
through the red dust. The Hon. Justin puffed at his pipe, and made
no answer. He might have said that he hastened their going just
because his companion was very young and the girl very pretty. A
flock of sage-hens started from the olive-green brush to one side.
Justin pulled up, took out his shotgun and followed, Dudley throwing
stones to make them rise. A right and left shot brought down a
brace. They gathered up the birds, and turned to the wagon, and as
they did so, the elder man looked back. Just level with the ranch
house, two miles behind, a cloud of red dust veiled the road and
lapped far over its edge. Through the thin atmosphere came a
muffled rumble, and then a few dots, followed at an interval by
another, heaved out of the mass.
“Cattle!” said Dudley. “That’s jolly. I always wanted to see one of
those big droves on the foot. Shall we wait for them to pass?”
“I think not,” said the Hon. Justin. “Not until we get to the next
ranch. They say that those wild range cattle do singular things.” But
still they stood and watched, fascinated by the shimmering, shifting,
red cloud, the distant rumble, the glint of a blazing sun on the sabred
heads of a thousand Texas long-horns.
Of a sudden the dust-cloud, which had spilled over the road only
to the right, away from the ranch fence, widened out, shifted to the
left. They had passed the fence corner, and were on open range. No
dust arose on that wing; it was hard prairie, tied close by sagebrush.
And inexperienced as were their eyes, the two Englishmen could see
some commotion running through the mass; the units composing it
were spreading hither and thither; two compound dots, mounted
men, were swinging wide about them. The rumble grew louder,
lulled, rose again, and above the noise came the sound of a dozen
shots, fired in quick succession. Away back in his consciousness,
Dudley began to regret that they had chosen, in their young British
insolence, to travel without a guide, who might explain to them the
strange happenings of this incomprehensible country.
Justin started at the sound of a frightened snort in his ear. He
turned to see his horses quivering in every nerve. Almost before he
could catch its bridle, the near one was plunging and pitching.
“Get the reins!” yelled Justin; “we’d best be out of here.”
The team broke into a dead run. Looking back, Justin saw the
cloud ominously, frightfully near. A struggling advance-guard of long-
horns heaved out before, and ahead of them were two men, riding
like demons, yet ever beating backward as they rode. Then the red
veil fell, and there was nothing but a dust-cloud, rolling on nearer
and nearer.

When the Englishmen were gone, Belle looked after their


retreating wagon, and sighed. She was just realizing, now that the
week was past and these clean, courteous, easy-moving beings of
another world were gone, that she had been dreaming dreams.
Emilio looked also, sometimes after the wagon, sometimes after the
girl. When he bent his gaze on Belle he was serious enough, but
when his eye ran down the track of bloody dots, he drew his lips
back from his white teeth, and smiled. He was holding the reins of
his roan bronco; he dropped them to lean over the fence, and looked
up the road, away from the wagon.
“What is it that you see up there?” she asked, carelessly, in
Spanish.
“Something that your white-haired friend will be glad to see,” he
answered. She looked, saw the dust-cloud coming, saw the little,
caking pool of blood, and went white in a moment.
“That,” she cried, “that is what your antelope meant! You knew
that cattle were coming this way to-day.”
“A thousand head passing up to the White River country. And wild,
very wild.”
“They will trample them; kill them!”
“You thought about that when you kissed him,” he sneered; “the
blood goes straight, and the wind is right. He will have a run for it—
your lover.”
Then the roar of padding feet was louder, and the herd was
coming. They were fifty yards away—and a great, white steer,
horned in splendor, lowered his muzzle, and bellowed, and tore the
earth, and shot out in advance. Another followed, and still another,
each breaking into that rocking run, each one stretching out his
nostrils to taste the polluted air. They plunged together over the little
pool of blood; they rolled over and over, horns tossing, feet
stamping, throats acclaim. The leaders crowded against the corral
until its foot-wide posts bent and cracked. A deafening roar, the
bellow of a thousand mad cattle, and then nothing but a tangled riot,
speeding on down the scent, a thousand great, horned hounds after
their quarry.
It was the blood stampede that makes half-wild cattle wholly
demons. A clap of lightning, a sudden shot, even the appearance of
a dismounted man, will send the mercurial herd rushing in panic fear;
but let them once scent blood, and all hell is loosed in them. No pack
of wolves follows with the relentless fury of range cattle on the trail of
blood. Huddled by the barn, still showing his teeth, but half in fright,
at the box of demons that he had opened, the man who laid the trail
knew all this. And the girl knew it best of all.
She was between him and his horse as she turned on him.
“You did this—you murderer!”
“I will go,” he said; “I will cut it loose—it will stop the cattle.”
“Yes—you! I will go myself.” He jumped at her as she sprang into
his saddle. She saw the movement. His lariat hung at the saddle-
horn. She brought it down on his wrist. The same movement started
the high-strung little roan, already a-quiver with fear. His heels
clattered against the bars; Belle, astride like a man, her calico skirts
tucked about her hips, was riding after the red cloud, swinging wide
into the sage-brush to pass them.
The roan had a dash of the thoroughbred. He was the swiftest
thing coursing that day in the four-cornered race between cattle,
cowboys, hunted team, and woman, yet he had two hundred yards
the worst of his start. But, like a thoroughbred, he caught the bit and
shook out his dapple mane, and laid his belly to the earth as he
skimmed. Over sage-brush, over treacherous ant-hills, tangling
gopher-holes he sped, the reins loose, for he knew his work. Two
cowboys, caught in the press, fighting, swearing, striking brutally at
heads and horns as they were borne on, called to her in warning; but
the roan rounded the pack, shook himself free, and galloped on.
And then Belle saw what she had feared. Knowing their peril, but
ignorant of the cause, the two Englishmen were hurrying on ahead,
with the carcass still bumping from the tail-board. The cattle in the
road, where the running was freer, had gained upon those on the
flanks. They were going in a wedge, with the speed of an express
train. The cows, fleeter and fiercer than the males, were leading on.
Half a dozen cowboys skirmished before, shooting and lashing out
desperately, trying to back-fire by a counter-panic, taking chances of
life with every gopher-hole. But there was no checking that mass;
when a steer flinched before the heavy whip, he was pushed on from
behind. And ever they bellowed, with a note of tigers in their voices.
A moment Belle ran before the herd; then calling to the roan, who
understood as only a cow-horse can understand, she cut an oblique
course across the herd’s face. She gained the road; the herd was
behind her, and the roan, gathering his nerve for a final spurt, made
for the wagon. She shouted, but the roar behind drowned her voice,
and so she reached for the holster, where Emilio kept his knife. As
she whipped it out and drew even, reaching for the carcass, the
wagon slackened and stopped. Her own horse swerved in his
course, and shot past before she could check him.
The off-horse, what with fear and exhaustion, had stumbled and
fallen dead. And the wedge was coming on, now but a quarter of a
mile away.
Deadly as was their fear, the two Englishmen, who had jumped to
the ground, stood and stared to see her turn in beside the standing
horse and, without any ceremony, cut his traces and reins. He reared
and plunged; Justin caught his bridle.
“Mount quick!” she shouted. And before he could grasp the
situation she had pushed Dudley to her roan, almost thrown him into
the saddle, and mounted behind.
As the snorting horses bounded away, the roar was almost on
their flanks. It rose to its climax in a great, dull crash. Looking back,
the girl saw that they were no longer followed. The dust-cloud was a
whirlpool that rolled and tumbled over the spot where the wagon had
been. For only a minute; the cowboys closed in, and the panic was
over. Slowly the men beat back the sullen, sated demons. And when
the press split there was no wagon at all—only broken wheels and
scattered bits of woodwork, and flattened belongings and blood—
blood and gleaming gray hairs trampled into everything.
The two men dismounted and turned to the girl. Then was she first
aware of her skirts tucked about her hips, and of the manner in
which she had ridden. Her color rose, and she jumped down. She
turned redder a moment later when Dudley Latimer took her in his
arms and, for the second time that morning, kissed her.
And that time he kissed her in deadly earnest.
THE WHITE GRAVE
By C. Alfred
Harrison and his wife were evidently tenderfeet. Worse than that,
they had never been outside the City of New York before; and why
an inexperienced, city-bred young man like Harrison should have
attempted to move a year’s outfit, which weighs a ton, over the
Chilkoot Pass, and tempt Fate in the bleakness of the Yukon country,
no one knew.
The reason really was Harrison’s wife. Tired of a living salary in
the city, she was ready, when news of the Klondike gold-fields
reached the world in 1897, to catch the gold fever; caught it, and
argued Harrison into resigning his clerkship in an insurance
company, and into taking her with him to Alaska. They were very
much in love, and could not be separated. So they invested their
savings in sacks of flour, and blankets, and tins of coffee, and in
tickets to Dyea.
They landed there in December. This, of course, was an idiotic
time to arrive, but they didn’t know, and there were lots of other idiots
just then. When Harrison grasped the fact that he must, himself, pull
all his pile of provisions over the desolate mountain range that ran
upward in front of him, his heart failed him; as the Yukoners say, he
got cold feet. But his wife cheered him. Mrs. Harrison was young,
and, therefore, hopeful. Moreover, she was a pretty little woman, with
a great mass of flaxen hair, and on her account many a rough packer
on the trail gave Harrison a lift with his load in the steeper places.
They struggled on together through storms and snowdrifts. Little
by little the outfit neared the summit that had lain eighteen miles from
them when first they landed. Every morning Harrison would load
some two hundred and fifty pounds on the sled, pull it up the trail
seven miles or so, and come back in the afternoon. And the girl, for
she was nothing more, would cook their little meals on the sheet-iron
stove, and dry Harrison’s moccasins and coddle him, and tell him
how like it all was to a picnic, and how she enjoyed the life. Which
was not true.
And so they passed through Canyon City, beyond which there is
no God, the packers say, and up to Sheep Camp, which is far up in
the mountains on the timber line, and beyond which there lies a
frozen desolation that supports no living thing—not even the scrubby
spruce that can exist on the bare rock in lower altitudes. Here they
disappeared from view, because the horses do not go past Sheep
Camp, the trail being too rough; and the packers, not seeing them,
could bring no word.
Now, there were hotels of a fashion in Dyea at this time, but the
entire downstairs part was usually made into one room, and used as
a bar, dance-hall, and gambling house. So when Harrison came
back down the trail two weeks later at three o’clock in the morning,
he had to elbow his way up to the bar in the Comique to ask for a
room. The first bartender looked at him inquiringly, for he had seen
the Harrisons on the trail, and the teamsters had said they must be
over the summit by now. His curiosity got the better of him.
“Are you the party that went up with a little blonde lady three
weeks ago?” he asked.
“I may be,” said Harrison.
“She seemed kind of light for this country,” pursued the bartender.
“Hope she’s standing it all right. Did she come down with you?”
“I brought her with me,” said Harrison.
“Isn’t she coming in? She doesn’t have to pass through the saloon
here if she don’t like. She can——”
Harrison’s hand went to his forehead. “She’s dead,” he said.
A teamster came in the side door and spoke to him, and he
followed the man out. So did two of the dance-hall girls and the first
bartender. Outside in one of the big freighting sleds lay Mrs.
Harrison. Her flaxen hair waved as in life over the girlish face, hard
now as marble and colder. The moon shone full upon her, and a
snow crystal hung here and there on the little fur parkee that she
wore. She might have been a marble Madonna there in the
moonlight. Through the open door came the noise of the next waltz.
One of the girls slipped in, and the orchestra stopped. Quickly a little
group began to gather, but Harrison did not move. He seemed as in
a trance, staring open-eyed, mistily, at the frozen woman in the sled.
Presently, Blanche, the girl who had stopped the music, touched
him on the arm.
“I know there is nothing much I can do for you,” she said. “I know
how it feels; but I thought perhaps you’d like to bring her inside, and
you can have my room till you—till the funeral.”
And Harrison thanked her. But next day he moved the body to an
empty cabin that stood on the river bank in the pine grove back of
the Comique. He could not bury her, he could not give her up, he
said. True, she could not speak to him, nor move, but even to have
her body with him was something, a kind of comfort. The bitter cold
of the Northland, the icy winds that roared in untrammeled fury down
the cañon—these had killed her; now they would preserve the
beauty they had stilled; keep her forever young, as he had known
and loved her. Why should he bury her? And when they spoke to him
of burial, he bade them leave him alone.
Only in the afternoons, when there was no dancing in the
Comique, Blanche used still to go daily to the cabin in the pines, and
brought him a padlock for the door, and a lantern, and other things.
It all might have drifted on in such wise indefinitely, had it not been
that in a month Harrison had no money to buy his meals with, and
that Blanche asked him point blank about it.
“Why don’t you come over and ask Coughlin for something to do?”
she said, when Harrison admitted that he had eaten no dinner that
day. Coughlin was the man who ran the Comique.
“What could I do?” inquired Harrison. “I’m only a bookkeeper.”
But that night he asked Coughlin about it. Now twice a day
Coughlin put all the gold and bank-notes that were in the cash
drawer into his pocket, leaving the silver for change; and he kept his
accounts, which were few, in his head; and he didn’t need a
bookkeeper. But he was sorry for Harrison; and, besides, Blanche
had spoken to him of it, and he wanted to oblige her. For Blanche
was popular among the men, and was asked to drink oftener than
any girl in the house, and was valuable on that account in a country
where one gets a dollar for two drinks. So he told Harrison he could
go to work.
“In the morning?” said Harrison.
“Any time,” said Coughlin.
Harrison looked around a moment. “If you’ll show me the books, I
think I might look them over now.”
“Books?” said Coughlin, hesitatingly. “There aint any, but I guess
you can figure all right in this, perhaps.” He produced a small paper-
covered blank book from under the bottle rack. “You’ll find a lead
pencil in the drawer any time”; and he bustled over to the faro-bank,
satisfied that he had demonstrated his familiarity with the
bookkeeping craft. He came back to ask Harrison what wages he
was going to work for.
“Anything,” said Harrison. “In New York I got seventy-five dollars a
month.”
“That aint much,” said Coughlin. “I never asked any man to take
less than three dollars a day and board. You can eat in the
restaurant there.” Then he introduced Harrison to Big Joe, the day
bartender, telling Joe this was the bookkeeper.
An hour later Joe called Harrison to announce that Red Sheehan
had got a drink without paying therefor.
“He never will pay for it, either,” continued the experienced Joe,
“but I suppose you’ll put it down in the bookkeeping.”
Harrison seemed a little undecided as to the value of this entry,
and his uncertainty settled it, for thereafter Joe never mentioned
such items, and as for Coughlin, he continued to dump the
uncounted contents of the cash drawer at various times into his
pocket, and to pay his debts out of the same receptacle with a total
disregard to cash balances, daily receipts, or outstanding accounts,
which made Harrison’s methodical hair stand on end.
Occasionally, however, he would ask Harrison how he was getting
along, and Harrison, who had debited Red Sheehan’s account with
one drink, and who had never had occasion to make a second entry
of any kind, generally replied that the work was pretty light.
“That’s all right,” Coughlin would say. “Bookkeepers are mighty
handy to have around in case you want to figure some time.”
And so Harrison drew his three dollars a day, and ate in the
restaurant, where Blanche usually managed to sit opposite. Then in
the evening he sat idle in the Comique, and watched the roulette
wheels spin and the cards drop monotonously from the faro-box,
heard the metallic call of the dealers and the buzz of the ball in the
runaway of the wheel; saw the dancing-girls, in all the glories of
scarlet satin, promiscuous affection, and peroxide hair, waltz past;
listened to the wandering musicians of the orchestra play some good
music and much bad; sat in a chair near the end of the bar, and
watched the carnival of sin and revelry around him, and then, about
midnight, when he felt entitled to leave, he went back to the lonely
cabin, where his wife lay in her changeless sleep, to sit and keep his
vigil with her he had loved in life and still adored in death.
In the restaurant he had many conversations with Blanche. “How
long will you stay here?” she asked him once.
“Always, I suppose,” he said.
“But this is only a boom town,” she answered. “Next year there will
be no one here but the Siwashes, and they will be quarreling among
themselves for these buildings.”
“I’ll stay,” persisted Harrison.
“But how can you live? Coughlin is going down the river this
summer, and a man must eat. Why don’t you come along with the
rest of us? He’ll take everybody that is working here, for he means to
open up again in the Yukon country.” Harrison shook his head.
To Blanche he was interesting. Even in the depths to which she
had fallen, or rather deliberately descended, there exists an
unconfessed desire for the better things of the past, for the moral
levels which have been derided and deserted, for the things which
are bitter with the sourness of the grapes the fox could not attain to;
and to talk with Harrison was a breath from the old world,
monotonous, perhaps, but lovable, where she, too ... but she never
thought of those things. What was the use? It made her sad, and she
would undoubtedly drink more than usual, and get reckless, and buy
wine with her salary and percentage money, and be in debt to the
house for a month afterward. So she didn’t think much. It didn’t ever
occur to her that her interest in Harrison was passing the danger
line. It wouldn’t have made any difference anyway.
A month later, Coughlin announced that the Comique would have
a grand closing one week from that night. “The money is about
through in this town,” he said, in explanation. “We’ll move on to the
gold mines.”
Blanche discussed it that evening with Harrison in the restaurant
The news disturbed him.
“You’ll come, too?” she said. He didn’t know. “There’ll be nothing
here,” she went on, “and it will be so lonely.”
“I don’t mind the loneliness,” said Harrison.
“But I’ll be lonely.”
“Perhaps Coughlin wouldn’t want me, anyway. I haven’t done a
stroke of work while I’ve been here.”
“But he’ll want you if I say so. I’m the best girl he’s got,” said
Blanche, modestly, “and if I say so it goes. And I do say so.”
Harrison was silent. He had often thought of this. He had known,
of course, that he could not live forever at the Comique. Many times
he had decided that death were easier than a final parting from the
dead. He had thought that he could never leave her, but now
—— Well, the lust of life is strong. We do not know how far the fall is
until we stand at the brink and look over. Besides there is no coming
back. If we could only try it for a while and return again!
“Harrison,” said Blanche, suddenly, “listen. I think I know what you
are thinking, and I know I can not argue such a thing with you. No
one could. You know best, and no one else can know anything about
it. But I want to tell you one fact that perhaps you haven’t thought of.
You want to stay here with her—always. But you can’t. I know it is
horrible to talk of, but it is not always winter even in Alaska, and the
summer is almost here.” The man winced. “Go to bed, Harrison,” she
said; “I can not talk of such things. You know best.”
He went away to the cabin. He knew that Blanche was right. It
must be—but the anguish of it. How should he say the last farewell?
At the foot of the mountains that stretch upward from the Dyea
sands, he dug a grave, four feet. And that night he would bury her.
But his resolution failed him. All night he sat beside the unreplying
dead and stroked her icy hands. “To-morrow I will do it,” he said. But
the next day he dug again in the grave. It should be six feet. And
neither could he say farewell that night.
Then Blanche came over to him. “We leave on Saturday. You
know to-day is Wednesday,” she said, and went away quickly, for
she saw the sheeted form, and understood something of his pain.
On Thursday she came again. Harrison had not been at the
restaurant all day, and she carried a tray with her. The cabin was
empty, but a note on the table said: “I can not give her up. I could not
hide her in a grave of earth. I will lay her on the mountain top above
the glacier. Thank you. Good-by.”
Now the glacier lies in a greater crater of the mountains there,
above the snow line, five thousand feet above Dyea; and behind it
there towers a solitary peak that juts needle-like, head and shoulders
over the lesser crags of the crater. Up above the world, far from the
sound of man, into the great silence it reaches, where only the
northern lights keep the long vigils with its wind-tormented top.
That night when Blanche asked Billy Matthews, who ought to
know, being a squaw-man and an old-timer there, how long it would
take to go to the glacier, he said the Siwashes called it two days.
“And how long would it take to go to the top of the big peak?”
Matthews smiled. “Why, no one’s ever gone, sis, and I don’t scarcely
think they will.”
But the next day Blanche borrowed the glasses from the trading-
post and watched the snow line. About four o’clock a black speck
gradually emerged at the timber limit, and showed sharply against
the snow-fields that lay beyond. The glasses showed a man with a
long bundle upon his back. Blanche closed them, and watched the
speck with her naked eye. Slowly it crept to the foot of the great ice
rampart, and as it mounted the green precipices, a bank of cloud
engulfed it.
Early next morning Blanche searched the mountain with the
glasses. The speck had crossed the miles of glacier in the night, and
was half way up the mighty pinnacle that lay behind. There it clung to
a precarious hold on the storm-swept crag, its ghastly burden still
upon its shoulders. Five hundred feet below it lay a great snow-field,
hundreds of feet deep. Five hundred feet above it hung the mountain
crest. Blanche could see the wind sweep great banks of snow

You might also like