Recently I received an electronic copy of a new publication from Packt Publishing, one of the most active publishing companies in the area of (Oracle related) SOA technology. I was asked to review this book – and having enjoyed various earlier Packt titles (such as the recent OSB Cookbook and SOA Suite 11g Developer book ), I gladly accepted this invitation.
The anthology format
This book is special in that it was never intended to be a single book: it is composed from chapters that were published before, in 8 different earlier publications by Packt. That in itself is an interesting premise: a ‘compendium’ or ‘a book formed by drawing existing content from several related Packt titles. In other words,
it is a mash-up of published Packt content â€“ Professional Expertise Distilled in the true sense. Such a compendium of Packt’s content allows you to learn from each of the chapters’ unique styles and Packt does its best to compile the chapters without breaking the narrative flow for the reader.’
This idea might be valuable. Offer a medley of ‘samplings’ from various books, perhaps to bring together all tips in a certain area (say security or governance) or all content for specific roles or to help readers make a choice between several books he or she may be interested in. However, this book does not really achieve nor even seem to have the intention for that. The chapters are not showcases for the books they are taken from (there is no indication in the chapter to explain which book they are taken from and what more that book has to offer). The target audience for the book is not very clear either: many chapters are probably food for architects, but then some are more targeted at developers while others are so high level and introductory that perhaps IT managers or business folk new to the areas of SOA and integration are best served by them.
The preface warns the reader that “the chapters in this compendium were originally written and intended as a part of various separate Packt titles, so you might find that the information included in this instance is more akin to that of a stand-alone chapter, rather than creating step-by-step, continuous flowing prose.” That is a fair warning. And since all authors are knowledgeable and write well, the chapters were quite similar in style. But of course, a book composed of chapters takes from various books cannot be read as a back-to-back-story but instead will be more like an essay-bundle or a reference guide. I feel that bundle of essays is the best way to describe the most logical way to process this book. Some chapters might have had their use as reference material too – the more technically detailed ones – but these have suffered the most from the progress of time and the evolution of technology since first they were written.
Some of these books were released as long ago as 2007, and that is one of the problems I have with this book. While it contains a lot of valuable content, it also contains many sections that are simply outdated and not relevant anymore. Chapter 14 for example relies on tutorials and software that the reader should download from Oracle Technology Network (OTN); however, that content has been unavailable for several years. When this compendium was put together (December 2011), a simple check by the editor would have made that clear.
Many other references in the later chapters are to SOA Suite 10g and JDeveloper 10g, releases now quite long in the past, as is OpenESB – an open source project that does no longer exist (and did not in December 2011, the time of compiling this book). The chapters on JBI (Java Business Integration) have lost most of their relevance – given the events around Sun Microsystems.
Having said all that, you may wonder what is in the book? Let dive in a little.
Chapters 1 and 2 have a lot of overlap. They both introduce many terms, acronyms, challenges and patterns from the world of integration at application, enterprise and inter-enterprise level. In an at times almost scientific manner – with lots of literature references – a fairly factual overview and explanation is given of many aspects of EAI and SOA. These chapters were probably used in their respective original books as the foundation to build the book on. As such, there is a bit of repetition between the two. They also do not get very practical but rather discuss concepts in conceptual (!), theoretical way. Chapter 1 talks about the Trivadis Integration Architecture Blueprint that reappears in chapter 3. Nowhere is explained what exactly that is and why it is mentioned (probably one of the consequences of taking these chapters from their original context).
Chapter 3 discusses Base Technologies – a list of standards (primarily though not exclusively) from the world of Java/J(2)EE) and more detailed architectural concepts for example for transactions. It is a fairly short chapter, no more than a primer for readers new to integration architecture with very readable, one page introductions to for example OSGi, JCA and JBI.
Chapter 4 is a deep dive compared to the previous chapters. It discusses XML as the vehicle for most integration implementations. As such it discusses tools for creating XML Schemas and tips for designing XML Schemas. Note: at this stage, Web Services have hardly been introduced; it remains a little unclear how the XML should be exchanged and where the XML Schema Designs exactly come in. The tips on namespace definitions and XSD design are very useful – and probably the most concrete and relevant ones in the entire compendium. I like this chapter in that sense. I am surprised that the term ‘canonical schema’ is not used (but that is probably related to the provenance of this chapter) and while XSLT is discussed, XQuery is strangely absent. Standards like JAXB and JAX-WS are mentioned but not introduced, which makes the discussion of the programmatic creation and processing of XML documents somewhat incomplete.
Funny enough, this chapter does not mention JDeveloper or Oracle tools at all – while other chapters seem only to recognize Oracle’s technology. It does however contain this line on StAX: “The StAX project was started by BEA with support from Sun Microsystems, and the JSR 173 specification.” [sic]
Chapter 5 is introduced with the objective to “Leverage the orchestration capability of Oracle BPEL Process Manager to enable standards.based business process integration that complements traditional EAI middleware.” It describes in great detail how BPEL can be used to execute a business process and orchestrate the interaction with two existing ERP systems (Siebel CRM and SAP) in this example through the interaction points exposed by Tibco and webMethods respectively. The exact technology and tools used in this chapter are quite outdated by now – and all the detailed instructions on how to to things can safely be ignored. However, the overall approach and the design of this integration solution and even by and large the role of BPEL in it is still applicable (even though of course BPEL is just one of many ways to approach it).
Chapter 6 seems to be doing something very similar as chapter 5; this chapters does a step by step approach for “integrating PeopleSoft 8.9 CRM with Oracle Applications 11i using BPEL.” I do not feel like chapter 6 adds more than a repeat of chapter 5 and again the tools used in this chapter are no longer in use.
Chapters 7 and 8 are well written, probably the best and most clear introduction to JBI I have ever seen and read. Unfortunately, the relevance of JBI especially in association with NetBeans and GlassFish & OpenESB is a little uncertain at this point, to put it mildly. Unfortunately, OpenESB does not longer exist, the JBI support in GlassFish is dead and latest releases of NetBeans do not support JBI either. I fear JBI is on its way out and these chapters are probably not worth the reader’s time anymore.
Chapter 9 is titled “SOA and Web Services Approach for Integration” is a bit back to chapters 1 and 2: introduction of IT challenges, reiteration of integration patterns, before it comes to stating the case for Web Services and listing a series of “application patterns”. The chapter finishes off with a discussion on the design of interoperable web services – including concrete WSDL snippets and XSD fragments as well as the concrete implementation of WebServices and Clients using both Java/JEE and C#/.NET. This part of the chapter fits in well with chapter 4, and is among the most concrete (and still relevant) sections of the book.
Chapter 10 has again some overlap – with chapter 9. It is titled “Service- and Process-Oriented Approach to Integration Using Web Services”. It introduces the challenges in integration and explains why EAI is not enough and then introduces the Enterprise Service Bus. ESB as an architecture pattern and an infrastructure is discussed at length. The functions represented in an ESB are made clear and the various flows of messages through and process executions in the ESB are illustrated. Until deep into this chapter, no specific ESB product is introduced and the discussion is purely conceptual – and good too. At some point, the author reveals his colors: JBI is the container that he has in mind and the Service Engine architecture of JBI is the way he envisions the ESB concepts to be implemented. Still, most even of this part of the chapter is relevant in the presence of other ESB products as well. The chapter is a long one – 90 pages – and I think it is pretty good. It should probably have come a little earlier on in the book and some of its contents make parts of at least chapters 1 and 2 redundant. For anyone contemplating service based integration and the introduction of an ESB, it is excellent reading and that applies as well to current users of ESB technology who want to validate their current approach and look for improvements.
Chapter 11 is a fairly detailed example of using Oracle Service Bus for achieving decoupling. The chapter starts with a fine expose on what types of coupling exist and what strategies can be applied to reduce the extent of coupling. One good example is a search operation in a web service that not only accepts search criteria but also meta-data that specify the ‘batch of search results’ to return – to retrieve search results in multiple sets of say 10 or 20 records. The chapter presents the WSDL and XSD for such a service that can offer functionality that does not rely on state being retained by the service yet helps to simulate a multi-request conversation. The second part of the chapter introduces OSB. Unfortunately and a little surprising, it does not explain the implementation of the ‘search with state’ service discussed in the chapter, but a very basic service instead (without demonstrating a test invocation of the service, which would have made it more tangible). Of course it is only the reader’s first introduction to OSB – so very complex examples are not in order. As a newbie reader by the way, I would be thoroughy confused at this point: we have seen BPEL being used for these integration patterns, read a dicussion of a JBI based service container, seen basic Java and C# baed Web Service implementations and now this OSB example. The rationale for when to use which tool and the disparity between the tools is a tough act to follow.
Chapter 12 is about the next level of integration – from low level pure XML based EAI (chapter 4) and synchronous service interactions without or with ESB via the process (or at least orchestration) based complex ERP integration with BPEL (in chapters 5 and 6) it introduces BPMN for true Business Process design and implementarion. Its title is Integrating BPEL with BPMN using BPM Suite . Note that this chapter is very much about the Oracle BPM Suite 11g, not so much about BPMN in general. It is one of the most recent chapters (I believe from the SOA Suite 11g Developer book by Matt and Anthony). It builds on the elaborate introduction of the SOA Suite 11g design time and run time environment and the development of SCA composite application they provide earlier on in that book. For the readers of only the compendium, it may be a big leap. Additionally, the example in chapter 12 of designing and implementing a BPMN process builds on services developed earlier on in the book this chapter is taken from. Readers of just the compendium will be wondering where certain services – for example the EmployeeTravelStatus service – appear from. Of course in order to deploy and test the Composite Application on the BPM/SOA Suite 11g run time, the reader needs instructions on where to get the software and how to get it installed. However, this chapter does not provide such instructions nor does it refer the reader in any way. Although I am impressed – as someone well versed in SOA Suite and BPM Suite – how much material the authors have been able to squeeze into this chapter, it must be a challenging roller coaster ride for a reader not already familiar at least with the latest Oracle tooling for SOA.
Note the chapter states “Oracle SOA Suite 11g PS2 introduces an interesting new featureâ€”BPMN 2.0 execution engine” which is not entirely the best way of putting it: on top of SOA Suite 11g, one has to acquire an impressively priced additional license for BPM Suite 11g in order to get access to the BPMN based functionality.
Chapter 13 – SOA Integrationâ€”Functional View, Implementation, and Architecture – starts with a little reiteration: chapter 1 and 2, a little bit of chapter 3, and many other chapters besides are repeated to some extent in chapter 13. What this chapter adds is the link with legacy applications running on mainframes and how to integrate with those. It does so using technology from Oracle – and a fairly old generation of the Oracle stack – all predating the BEA acquisition and subsequent migration of Oracle’s middleware to WebLogic Server. Most of the solutions described though will still be valid, using today’s set of products. The chapter also describes mainframe interaction ‘the IBM way’ (briefly) because, as it writes, “No chapter on Legacy SOA Integration can be written without considering the IBM mainframe hardware and software that have an impact on Legacy SOA integration.”
Chapter 14 seems to be the direct successor to chapter 13: “We are now going to show an example in detail forâ€”Web Enablement. We will use JSP, JDBC, the Oracle Legacy Adapter, Oracle Application Server, Java EE Connector API, and XA transaction processing to show a two-phase commit across an Oracle database and VSAM on the mainframe.” This chapter demonstrates how – again, using somewhat outdated technology- a Java web application can be created with data taken from the mainframe. The reader is refered to OTN to find white papers and tutorials that help set the scene for this chapter. Unfortunately, those resources are no longer available at this moment. Another set of tools that this chapter relies on quite heavily is the Relativity tool set (RMW Application Analyzer, RMW SOA Analyzer, RMW Architect, RMW Business Rule Manager) ; this set helps analysis of mainframe COBOL applications for the purpose of exposing them in a SOA environment (or at least that is my understanding). The URLs provide in this chapter are unfortunately no longer valid. Details on Relativity can be found though at: http://www.microfocus.com/products/productsa-z/productsa-zR.aspx. The chapter provides a very detailed overview of inspecting a legacy COBOL application and describes how to open it up with Oracle Legacy Adapter to allow its integration through a JCA connection opened from a Java Web application (without using ESB, OSB or BPEL). For readers with a COBOL background or interest, I suppose this is all valuable. To the rest of us, it is too much detail in my opinion.
After chapter 14 there is another section, one of the most interesting of the book in fact. However, for some reason that does not become clear, it is not a chapter but an Appendix instead. Appendix A – Establishing SOA Governance at Your Organization. The topic is important enough to warrant a real chapter – or perhaps Appendix means place of honor. The discussion to my taste should have started with a discussion of the objectives – what do we want to achive with governance. Other than that, I consider it a good discussion of the roles involved and the areas and topics involved. It primarily explains what should be taken care of, not necessarily how that could be done. But still, Governance is frequently overlooked so I am glad with this appendix.
To the end of the appendix, some tools and technologies that may aid in implementing Governance are briefly discussed, on a conceptual level, not naming any specific tools (except when Microsoft BizTalk and Windows Communication Foundation are briefly – and quite redundantly as far as I am concerned- are mentioned).
Best of Packt
The suffix to the title – Best of Packt – is simply not true. The good folks at Packt do themselves an injustice with this tagline. I have read recent publications from Packt in the area of SOA that are excellent and contain material that is better than what is in this publication. I can only surmise that since these titles are still current, Packt decided it to be commercially unsound to use (much) content from these titles in this ‘Best of Packt’ compendium. Instead, less current content was used.
It seems that this publication was not so much seen as an opportunity to update and refine existing content, and correct mistakes or outdated sections, but rather to make some additional money from work otherwise forgotten. The chapter title for chapter 14 is one example of that lack of attention to details that I find quite annoying:
The short of it: given the size of the book (700 pages) and the many parts that are useful it is still reasonable value for money. However, if Packt really wanted to publish ‘the best of Packt on SOA and Integration’ they could have provided us with much better, more up to date content and ensured that the pieces have a better mutual fit with less overlap.
E-book sells at 13.69 euro ($9.99 for the Kindle-version), the printed version at 35.09 euro (that is $49.99 in the Amazon-store – http://www.amazon.com/Do-more-SOA-Integration-Packt/dp/184968572X)