Book review: Getting Started with Oracle SOA Suite 11g R1

I got this book on the second SOA Symposium in Rotterdam from one of the authors (Manas Deb) who happen to give a presentation there on SOA, BPM and EDA. He signed the book, so I have a unique piece :)

This book gives you a prefect head start with the Oracle SOA Suite 11g. It explains the concepts of SCA, Database-, JMS- and File Adapter, BPEL, Human Tasks, Business Rules, OSB, Unit test of composite SCA applications, Security, Exception Handling, BAM, Event Delivery Network, SDO and B2B.
All these concepts are explained with small tutorial examples.

If you want to have in depth knowledge of the SOA Suite, this is not the correct book.


Should a SOA Architect be certified?

I am currently following the SOA Certified Architect traject at SOASchool and have finished my first module (jippie). For me the reason to be certified are:
  • It gives you a good basis to understand what SOA is all about
    This way you can put this into better perspective when using or selecting SOA tools like ESB and BPM. I always compare it with learning first Object Orientation before diving into C++ or Java. This way I truely believe you get better (reusable, maintainable) code.
  • Just that little more focus on the content then by just reading a good SOA book
    It forces you to really study the material.

  • It helps when planning an architecture roadmap
    I know that you always get presented the ideal SOA picture, but at least it helps you when you have to define a SOA roadmap. It also helps you where to give attention and what kind of discussions you have to do. This way it will help to change the mindset of developers/designers/architects/business.

However the question remains "What is the value of this certification within the market and how is it valued by customers?". I still do not discover the questions by customers, but Java certifications are valued. Maybe it is a question of time?


Book review: Understanding SCA

I bought this book to get a global overview of the possibilities of SCA, because it is also implemented within the Oracle SOA Suite 11g. It is the first book on the fairly new SCA standard.

If you want to get a global overview the first chapter will already do. The next chapters go deeper into the concepts with Java as the example programming language.

Chapter 1 - Introducing SCA

The book starts with a global introduction of SCA and its place w.r.t. SOA, J2EE, .NET, Spring and distributed computing. SCA focuses on being able to describe assemblies of components which have been written in a variety programming models and protocols. It does not cover presentation and persistency.

Within this chapter the main terms are explained: Service, Component, Composite and Domain.
Why another standard? Because there are still some issues with J2EE and .NET, namely complexity and reusability. You have to understand a lot of different technologies like JAX-WS, JMS, EJB, ASP.NET, .NET Messaging.

Chapter 2 - Assembling and deploying a composite
This chapter describes the creation of composites and deploying them into a domain as a contribution. Fabric3 (open source Java SCA implementation) with Java is taken as example language.

Chapter 3 - Service-Based development Using Java
This chapter shows how to create Java services (asynchronous and synchronous) and it is described how the life cycle of components are handled.

Chapter 4 - Conversational Interactions Using Java
Chapter about implementing conversational interactions in which several interface calls belong together as one conversation.

Chapter 5 - Composition
This chapter describes in more detail how applications are assembled into composites. Its about service bindings, performance, properties, including other composites.

Chapter 6 - Policy
This chapter is about policies wich include authentication, encryption, signing, reliability, transaction propagation.

Chapter 7 - Wires
This focuses more in details the possibilities with wiring components. It uses the Inversion of Control pattern to inject dependencies. This can be automatically done by the SCA runtime or at configuration level.

Chapter 8 - Bindings
Bindings are used to expose the services of components to external clients. This chapter describes it in more detail. It covers the usage of WSDL and JMS.

Chapter 9 - The Domain
The domain is the SCA runtime in which management, policies administration, communication infrastructure and resource sharing is handled. There are local, distributed and federated domains. Components are installed as contributions within the domain.

Chapter 10 - Service-Based development using BPEL
The BPEL is also taken as an example to develop SCA components. Some SCA extensions to bpel are covered.

Chapter 11 - Persistence
This chapter describes a way to incorporate persistency into the services. Persistency is not part of the SCA standard. It covers JDBC and JPA.

Chapter 12- Presentation
Also the presentation layer is not part of the SCA. This chapter describes the way to integrate with technologies like JSP and servlets.

SCA is Spring in the large that uses the Dependency Injection pattern to wire components into composite services. Note however that Spring also has Spring Integration for integrating distributed components.

Oracle SOA Suite 11g supports the SCA way of working, so that is a good base for its adaptation, but I wonder if you always need this kind of flexibility of protocols used between components. And the configuration based approach may also be a reason for some not to use it.
I have not seen it used within the projects i worked for, but i am curious in using it within the Oracle SOA Suite.
It is a great book to get you introduced into the SCA standard.

Some interesting links on SCA


What happened with SOA?

I came accross this article about the question "What happened to SOA?"

It is stated that the technical SOA part is a succes but within the whole enterprise it fails (most of the time).
It fails most of the time because its still is damn difficult to close the gap between business and IT and SOA does not help either as hard numbers, blogs and experience show.

What came to my mind were two things,
  1. enterprise architecture must give you control over your IT (applications, hardware and interfaces). If you reach this point, it does not matter how it is setup (SOA may help). As long as you can keep the operational costs low. So make posters and communicate the architecture, something i see rarely done.
  2. Projects are too complex and big, so maybe we should start thinking small features/processes and use Agile methologies and start having multidiscipline teams with business representatives in it, instead of staying in the ivory towers of the IT department.


Why not do Agile (EAI/SOA) projects?

The Agile approach is not new anymore, but still I see problems with trying to do projects the Agile way.
What I see:
  1. Business plans have to be made with functionality and ROI upfront
    This does not fit the Agile way (Customer Collaboration over contract negotiation). The ROI is sometimes hard to calculate and what you see are naive numbers just to get the project approved. Furthermore it is a long and costly phase. Of course you have to discuss if a functionality is worthwhile.

  2. The business wants to know upfront what the costs are and the needed resources
    This is because resources (people) need to be reserved and hired. They want to know the investments needed in advance because usually budgets are given each (half) year.

  3. A project is divided in several subteams which must be coordinated
    The teams only communicate in the beginning (for the requirements) and at the end (integration testing). They do not communicate during the project and do not integrate during the project. I call this the big bang approach.

  4. Projects do not want to pay for future advantages for the enterprise
    Especially in the beginning architectural decisions, POCs and implementations have to be made. Think of product selection for BPEL, BPM, ESB, etc. The business does not want to pay for all these (needed!) upfront investmentsfor the sake of the enterprise.

  5. Documents are made just to satisfy the QA process
    Technical design, unit test plan for example are written upfront without review or written afterwards. These documents are most of the time outdated and are not maintained.
Ad 1
Begin with small projects where the ROI is easy to calculate and small. Take a small part of a business process. Maybe we should even call it a feature/business process plan instead of project plan and keep them small and manageable.

Ad 2
You could reserve some budget for feature (enhancements) and after each iteration/sprint (or whatever method you use) choose to continue or stop. This way you never go over budget.

Ad 3
If you keep the features small a lot of communication may be circumvented and communication is easier. However in lots of cases the places in which the team work are different. Maybe modern tools like wikis, twitter, use groops, google talk etc may help to communicate better and often.

Ad 4
Some budget may be reserved not only for the business but also for enterprise architecture in general. This way such POCs and product selection trajects may be funded. This means management support is really needed, but this is always the case in such trajects.

Ad 5
I like the use of TDD (Test Driven Development) in which automatic tests are made and ran during builds. It takes some effort but it really is very helpfull during refactoring and regression tests. It also makes designs better because it forces you to think about the testability of the component. Also document only the most important design decisions and why some decisions are made. Those decisions can be very valuable in the future, instead of describing attributes of classes in detail for example. These can be (and should be) documented in the code.

I am curious to hear from you in other issues and/or solutions for these issues!


Installing Oracle SOA Suite/JDeveloper 11g

This post guides you through the installation of the Oracle SOA Suite 11g with JDeveloper 11 with the use of Oracle XE database (for Windows).
Note: It is assumed that Oracle XE database is already installed.

Required downloads

The detailed steps are nicely described here.
The next picture gives a nice overview of the directory structure created.

Step1 -  Create Schemas for Oracle SOA Suite and Oracle BAM (RCU)

  • Unzip the files
  • Run bin/rcu.bat
  • At the Database Connection Details fill in the XE details. If you encounter the next fault you have probably not started the XE database.

  •   Ignore all warnings

  • Click OK
  • Select all components

  • I ran into the following problem:

When you click Ok you see the following error:

And this is about the Processes DB Init parameter that is wrong.
To fix this goto the Database Home page, Sql Editor and execute the following statements:
alter system set PROCESSES=500 scope=SPFILE;
alter system set open_cursors=500 scope=SPFILE; 
If everything is ok you should see the next screen.
  • Further ignore errors from portal installation

Step 2 - Install Oracle WebLogic Server and Create the Middleware Home
  • Run wls1031_win32.exe
  • Choose Middleware Home (example: d:\oracle\middleware)
  • Register for security updates, leave empty, Next
  • Choose Typical install type
  • Choose Weblogic Server Home (example: d:\oracle\middleware\wlserver_10.3)
  • The next screens choose Next and the installation progress screen is shown
  • After a while you are done with this step
Step 3 - Installing SOA Suite and BAM
  • Unzip ofm_soa_generic_11.
  • Run setup.exe within Disk1 directory
  • When asked for the Java jre use middleware home (d:\oracle\middleware\jdk160_11\jre)
  • When the checks are finished the installation locations are asked:
    Use the Middleware Home (selected by default) and use Oracle_SOA1 (also default)
  • The following components are installed: BPEL PM, Mediator, Rules, B2B, Human Workflow, BAM

Step 4 - Creating Domain

  • Run Configuration Application Server within SOA
  • Create a New Domain
  • Select all products to be supported
  • Enter a Domain name
  • Configure JDBC Component Schema

  • Select all optional configuration

  • Configure the Administration Server, leave unchanged
  • Configure Managed Servers, leave unchanged
  • Configure Clusters, leave unchanged
  • Configure Machines, leave unchanged
  • Assign Servers to Machines, leave unchanged
  • Target Deployments to Clusters or Servers, leave unchanged
  • Target Services to Clusters or Servers, leave unchanged
  • Configure JMS File Stores, leave unchanged
  • Configure RDBMS Security Store Database, leave unchanged
  • Summary
  • Create
Step 5 - Install JDeveloper
  • Run jdevstudio11111install.exe
  • Choose the existing Middleware Home directory
  • The rest is Next, Next, ...
  • After JDeveloper is installed start JDeveloper
  • Choose Help -> Check for Updates
  • On the Source page choose:

  • On the Update page select the extensions to download

  • Note: You need an Oracle Web Account. 
  • After the download is finished you have to restart JDeveloper.
That's it and now you can start developing SOA components using SCA, but that is an item for another blog item ;)


SOA and Agile a good match?

Everytime when I see efforts in trying to implement a SOA within an enterprise you see the gap stays between the IT department and the business. It is very hard to sell SOA to the business, even if the concept of Services is close to the mindset of the business.
So can Agile development be a good approach?

I mean Agile has Customer collaboration as one of its key principles in its Manifesto. I see a lot of big project contracts made which are stopped or constantly changing, so why not collaborate more with the customer (business) and establishing the Services together?!
This will perhaps change the gap, and the Agile approach is not only for user interface design as I also hear a lot. Why not for integrating systems and implementing business processes? These processes can also be broken down in small peaces.
And why should the business be in different work locations as the IT department?
So I think that the Agile approach can be a good way to bringing the business and IT together.