Jeff Davis1933988541, 978-1-933988-54-2
Table of contents :
Open Source SOA
……Page 1
brief contents……Page 6
contents……Page 8
preface……Page 16
acknowledgments……Page 18
about this book……Page 20
History and principles……Page 24
SOA essentials……Page 26
1.1 Brief history of distributed computing……Page 27
1.1.2 Understanding SOAP’s messaging styles……Page 29
1.1.3 Advent of SOA……Page 30
1.2 The promise of web services for delivering SOA……Page 32
1.3.1 Service interface/contract……Page 33
1.3.2 Service transparency……Page 34
1.3.3 Service loose coupling and statelessness……Page 36
1.3.4 Service composition……Page 37
1.3.5 Service registry and publication……Page 38
1.4.1 Business process management……Page 39
1.4.2 Enterprise decision management……Page 40
1.4.3 Enterprise service bus……Page 42
1.4.4 Event stream processor……Page 44
1.4.6 Registry……Page 45
1.4.7 Service components and compositions……Page 46
1.5 Introducing a SOA maturity model……Page 48
1.6 Summary……Page 50
Defining the Open SOA Platform……Page 51
2.2 Choosing a BPM solution……Page 53
2.2.1 BPM product evaluation criteria……Page 54
2.2.2 Open source BPM products……Page 55
2.2.4 Introducing JBoss jBPM……Page 57
2.3 Choosing an enterprise decision management solution……Page 58
2.3.2 Open source EDM products……Page 60
2.3.3 Selecting an EDM……Page 61
2.4 Choosing an ESB……Page 62
2.4.1 ESB product evaluation criteria……Page 63
2.4.2 Open source ESB products……Page 65
2.4.3 Selecting an ESB……Page 66
2.4.4 Introducing Synapse as a lightweight ESB……Page 67
2.5 Choosing an ESP solution……Page 68
2.5.1 What is event stream processing?……Page 69
2.6 Choosing a registry……Page 70
2.6.2 Open source registry products……Page 72
2.6.3 Selecting a registry……Page 73
2.6.4 Introducing WSO2 Registry……Page 74
2.7 Choosing a service components and composites framework……Page 75
2.7.1 Examining the Service Component Architecture……Page 76
2.7.2 Introducing Apache Tuscany……Page 77
2.8 Choosing a web services mediation solution……Page 78
2.9 Summary……Page 79
Assembling components and services……Page 82
Creating services using Apache Tuscany……Page 84
3.1 What are service components and compositions?……Page 85
3.2 The SCA assembly model……Page 87
3.2.1 Introducing the composite file……Page 89
3.2.2 Configuring components……Page 93
3.2.3 Defining services……Page 97
3.2.4 Working with properties……Page 99
3.2.5 Implementation options……Page 102
3.2.6 Using references for dependency injection……Page 107
3.2.7 Defining available bindings……Page 110
3.3 Summary……Page 116
Advanced SCA……Page 117
4.1 Configuration using component types……Page 118
4.2.1 Using conversations……Page 119
4.2.2 Understanding callbacks……Page 122
4.3 Scripting language support……Page 127
4.3.2 Creating a Java interface using the Ruby method signature……Page 128
4.3.4 Modifying the composition assembly……Page 129
4.4.1 Production deployment……Page 131
4.4.2 Introducing Service Data Objects (SDOs)……Page 136
4.4.3 Advanced SDO features……Page 142
4.5 Summary……Page 144
Business process management……Page 146
Introducing jBPM……Page 148
5.1 BPM: the “secret sauce” of SOA……Page 150
5.2 History and overview of JBoss jBPM……Page 152
5.2.1 Development lifecycle of a jBPM process……Page 153
5.2.2 Graph-oriented programming and jBPM……Page 159
5.3.1 Node nodetype……Page 160
5.3.3 State nodetype……Page 162
5.3.4 Mail-node nodetype……Page 163
5.3.6 Fork and join nodetypes……Page 165
5.4 Using transitions……Page 167
5.5 Extending using actions……Page 168
5.5.1 Action class property instantiation……Page 171
5.5.2 Using action expressions……Page 172
5.6 Using events for capturing lifecycle changes in a process……Page 174
5.7 Managing context using variables……Page 176
5.8 Summary……Page 178
jBPM tasks……Page 180
6.1 What are tasks?……Page 181
6.1.1 Task management using the jBPM Console……Page 182
6.1.2 task element configuration……Page 183
6.2 Task user management……Page 184
6.2.1 Actors and assignments……Page 185
6.2.2 Understanding swimlanes……Page 187
6.3 Using timers……Page 188
6.4 Task controllers……Page 191
6.5 Developing with the task API……Page 192
6.5.1 Identifying processes within a jBPM instance……Page 193
6.5.2 Identifying running process instances for a given process……Page 195
6.5.3 Finding open tasks within a process instance……Page 197
6.5.5 Finding all pooled tasks for an actor……Page 199
6.5.6 Completing a task……Page 200
6.6 Summary……Page 202
Advanced jBPM capabilities……Page 203
7.1.1 Superstates for grouping……Page 204
7.1.2 Using subprocesses to manage complexity……Page 206
7.1.3 Managing exceptions……Page 208
7.1.4 Scripting with BeanShell……Page 210
7.1.5 Audit logging……Page 213
7.1.6 Understanding asynchronous continuations……Page 215
7.2 Integration with SCA/SDO……Page 218
7.2.1 Using SCA client components for service integration……Page 219
7.2.2 Service enabling jBPM……Page 224
7.2.3 Developing the ListProcesses service operation……Page 226
7.2.4 Developing the CreateProcessInstance service operation……Page 233
7.3 Summary……Page 235
Event stream processing, integration, and mediation……Page 238
Complex events using Esper……Page 240
8.1 Business events in the enterprise……Page 241
8.2 Understanding events……Page 242
8.2.1 BAM and ESP—what’s the difference?……Page 243
8.3 What is Esper?……Page 244
8.4.1 What are event objects?……Page 247
8.4.2 Defining and registering query statements……Page 248
8.4.4 Configuration options……Page 249
8.5.1 Querying events……Page 250
8.5.2 Using variables……Page 254
8.5.3 Understanding views……Page 256
8.5.4 Creating new event streams with named windows……Page 258
8.6.1 Extending with functions……Page 260
8.6.2 Applying event patterns……Page 264
8.6.3 Using JDBC for remote connectivity……Page 267
8.7 Service enabling Esper……Page 268
8.7.1 Creating a framework and components……Page 269
8.7.2 Esper service and session manager……Page 270
8.7.3 SCA composite file……Page 271
8.8 Summary……Page 273
Enterprise integration and ESBs……Page 275
9.1 The relationship between ESB and SOA……Page 276
9.2 Historical foundations of ESB……Page 277
9.2.1 Core ESB capabilities……Page 279
9.2.2 Appropriate uses of an ESB……Page 286
9.2.3 Inappropriate uses of an ESB……Page 288
9.3 Introducing Apache Synapse……Page 291
9.3.1 Protocol adapters……Page 293
9.3.2 Message-oriented middleware……Page 294
9.3.5 Message transformation……Page 295
9.3.9 Extendable API……Page 296
9.4 Basic Apache Synapse message and service mediation……Page 297
9.4.1 Simple message mediation example……Page 298
9.4.2 Simple service mediation example……Page 302
9.5 Summary……Page 305
ESB implementation with Apache Synapse……Page 306
10.1.1 Phase 1: typical web service mediation using error handling, routing, and transport switching……Page 307
10.1.3 Phase 3: using tasks, scripting, and database integration……Page 308
10.2 Phase 1: simple web service mediation……Page 309
10.2.1 Sales order initiation……Page 311
10.2.2 Configuring the service mediation proxy and using validation mediation……Page 312
10.2.3 Configuring XSLT mediation……Page 314
10.2.4 Transport switching from HTTP to JMS……Page 315
10.2.5 Transport switching from JMS to HTTP……Page 318
10.3.1 Using the VFS transport……Page 322
10.3.2 Working with CSV files……Page 324
10.3.3 Exception handling and SMTP transport……Page 326
10.3.4 Using the wiretap message pattern……Page 327
10.4 Phase 3: tasks, DB mediator, and iterator……Page 331
10.4.1 Configuring Synapse tasks……Page 332
10.4.2 Using the iterator mediator to split messages……Page 334
10.4.3 Using the DB mediator……Page 335
10.5 Phase 4: QoS using Synapse……Page 337
10.5.1 Implementing WS-Security……Page 338
10.5.2 Using Synapse throttling mediator……Page 340
10.6 Summary……Page 344
Enterprise decision management……Page 346
Business rules using JBoss Drools……Page 348
11.1 Understanding business rules……Page 349
11.1.1 Benefits and drivers of the business rule approach……Page 351
11.1.2 Relationship to SOA……Page 352
11.1.3 Characteristics of a rules engine……Page 353
11.1.4 Business rules management systems……Page 355
11.2 Introducing Drools……Page 356
11.2.1 Hello World, Drools!……Page 357
11.2.2 Running Hello World, Drools!……Page 361
11.3 Drools Rule Language (DRL) overview……Page 362
11.4.2 import……Page 363
11.4.5 function……Page 364
11.5.1 Modifying rule behavior with attributes……Page 365
11.5.2 Conditional part of rule statement (when part)……Page 369
11.5.3 Consequence part of rule statement (then part)……Page 377
11.7 Drools RuleFlow for rule orchestration……Page 379
11.8 Alternatives to using Drools Rule Language……Page 381
11.8.1 Using DSLs for business user authoring……Page 382
11.8.2 Defining rules using decision tables……Page 385
11.9 Summary……Page 386
Implementing Drools……Page 387
12.1 Case study overview……Page 388
12.1.1 Defining the DRL rules……Page 390
12.1.2 Running as an embedded engine……Page 394
12.1.3 User-friendly rules using a DSL……Page 400
12.2.1 Guvnor functionality overview……Page 402
12.2.2 Rule authoring using Guvnor……Page 409
12.3.1 What are decision services?……Page 413
12.3.2 Designing the decision service……Page 415
12.3.3 Implementing the decision service using Tuscany and Drools……Page 420
12.3.4 Testing……Page 426
12.4 Summary……Page 427
resources……Page 429
A……Page 432
B……Page 434
D……Page 435
E……Page 437
F……Page 439
J……Page 440
L……Page 442
P……Page 443
S……Page 444
T……Page 446
W……Page 447
X……Page 448
Back Cover
……Page 449
Reviews
There are no reviews yet.