Saturday, November 1, 2008

Composite Business Services in jBPM project

While engaging in a jBPM process improvement project, I encountered the need for Composite Business Services. This is where it starts to get interesting, when you try to make the step from Basic Services and Business Services up to the level of integration that includes Composite Business Services.

Once you drop this word it seems that the existing SOA layer which contains both elementary Basic Services (think of transactions to backend systems) and Business Services (think of services that make use of several basic services) should be ideally leveraged by plugging them together in new services. You would think so, right?

Well there seems to be some reluctance to this step, so I wanted to dig around a bit to see what I can find out and here are the resulting types of services:
  1. composite applications that offer services
  2. composite (business) services
First a working definition for these terms:

Composite Applications
In computing, the term composite application expresses a perspective of software engineering that defines an application built by combining multiple services. A composite application consists of functionality drawn from several different sources within a service oriented architecture (SOA). The components may be individual web services, selected functions from within other applications, or entire systems whose outputs have been packaged as web services (often legacy systems). Composite applications often incorporate orchestration of "local" application logic to control how the composed services interact with each other to produce the new, derived functionality.

Composite Business Services
A Composite Business Service is a collection of related and integrated business services that provide a specific business solution and support a business process built on a SOA.

These both apply very well to the working environment for the project being discussed here. As I am not focusing on Composite Applications as a part of my solution space I will concentrate solely on Composite Business Services.

The Composite Business Services idea seems to be mainstream for leveraging existing SOA layers. A source in soa world states, "Composite services encompassing mainframe transactions, data and application logic is the future of integrating big iron into service-oriented architecture (SOA)..." and that companies bought into the composite services concept because it allows you to "...build the right services, not just build little bits and pieces that happen to be Web service enabled...". This seems to match perfectly with our project goals, providing integration for more than just the little bits and pieces.

IBM also provides us with a discussion on Composite Business Services, states that "The foundation of CBSs is service-oriented architecture (SOA), which breaks down business applications and processes into component parts (business services), which can be combined and recombined, very fast (thanks to business and technology standards), to create new applications and processes." This is further associated with the metaphor of building prefabricated building where reusage of standard components is the way of working.

The conclusions I draw from browsing the available SOA literature (abet, rather briefly) is that this is the next logical step is to migrate from Business Services to Composite Business Services. Also rather surprisingly, I did not really encounter any warnings or danger signs with regards to adding Composite Business Services to an existing SOA layer. When a move has been made to add Composite Business Services, there seems to be no limit to the amount of reusage you can get out of such an SOA layer.*


* (Of course I could be very wrong, so feel free to point me in the right direction should I really have missed something fundamental.)