Friday, December 15, 2006

Where are the composite app standards?

In reading about composite applications, I was surprised to see how little work in terms of open source and open standards is being done in this area. I found the following standards:
  • XForms for web based forms
  • BPEL for orchestration
  • WS-CAF from OASIS has only released one part of 3 planned standards.
  • and of course the whole raft of web services standards
Missing are standards for:
  • Screen flow, i.e. controlling the order of screens presented to the user.
  • Work flow in terms of transferring work between people (the so called BPEL4People standard has yet to be published and maybe is not what we want.
  • Screen layout.
  • Packing all the bits of a composite app together so that it can be shipped (similar to web apps today).
All this is available in propriety products, which makes me surprised to find that nobody is working on standards in this area and even more surprised that nobody is working on an open source version of a composite application framework.

Tuesday, December 12, 2006

Will the real composite app please stand up

In trying to get to grips with what is meant by a composite application I came across this blog entry from Jeff Calow of IBM. He writes that the usual definitions of composite applications all deal with automation, but then asks about the user interface aspects. I would like to extend this and assert that a composite application consists of three optional aspects:
  • A user interface which brings together in one place everything the user needs to carry out a task. This could be a portal or a scripted front end as found in many mashups . Rich clients are another possibility.
  • A business process execution environment that not only handles the automation of processes, but also deals with user centric aspects such as workflow and screenflow.
  • An integration infrastructure that allows data to be transformed from one format to another.

IMHO any self respecting composite application framework should support all three aspects.

Sunday, November 12, 2006

More on BPM and OO

Keith Harrison-Broninski starts to ask in his blog why process modelling is based on a series of activities rather than business objects. He believes that we need an additional object based modelling layer for high level objects and their interactions.

I’ve tried to show in a previous post that BPM and object orientation are, at a deep level, conceptually similar. Rather than yet another layer which represents yet another set of concepts, we really need a unified model which lets modellers (and the underlying software) do what the business wants without having to constantly bamboozle them with different representations.

Sunday, October 01, 2006

Reuse and SOA

In the last week I have heard and read the usual lament that software reuse is hard and has been a dismal failure. As many claim that the main value preposition for SOA is based on reuse, the argument is that it also will be a dismal failure.

Here I have to take a heretical POV and contend that software reuse is maybe hard, but that it exists, has been an enormous success and forms the mainstay of software development today.

Let’s look at UIs. Nobody would develop a UI today without a set of reusable components. What about basic programming. One only needs to look at how rich and extensive the J2EE or .NET class libraries are and how much their (re)use is part of standard software development practices is to see that reusability is the norm rather than the exception.

But what about the bit in the middle, the so called business logic? The enormous success of ERP companies such as SAP is surely adequate proof that reusable business logic is a reality.

The only thing that stands out here is that reusable components are not developed in-house by IT-Shops (as David Chappell pointed out when he asked about in-house reuse programs), but are developed by vendors who:

a) invest heavily into their products and

b) have an industry wide view point instead of a restricted company view point.

Perhaps this is clear indicator to where we can expect the majority of reusable business services to come from.

Saturday, June 10, 2006

Difference between OO and BPM Part II - Inheritance

I tried to show in a previous post that the difference between the brave new world of BPM and the old traditional world of object orientation is really not so different. I left off wondering about inheritance and how that manifests itself in the BPM world.

Now every OO programmer knows what inheritance is. Or do they? It seems that inheritance is a slippery concept. Way back in 1996, Bertrand Meyer (the inventor of Eiffel) published an article in IEEE Computer in which he listed 12 different types of inheritance. It's no wonder that the usual advice given to an OO developer is to keep the inheritance hierarchy shallow – if you don’t, you’ll get swallowed up in the complexity.

Judging by the amount of academic papers written on this theme, it seems that process inheritance is also a complex topic. One which caught my eye, was a paper by Guangxin Yang as part of his Ph.D.. In it, he models process as a set of activities, each of which can trigger events which, in turn, cause messages to flow to other activities. In this way he can allow inherited processes to add new activities, add events, enable/disable triggers and also to change the semantics of the activities so they fit more closely to the business requirements. Although these seem to be powerful ideas, Yang’s paper doesn’t seem to have attracted much attention, only getting 2 citations according to Google Scholar.

So far, process inheritance does not seem to have reached commercial products, although this would seem to be a very useful feature to have. For instance, a typical business process could be defined and customer specific extensions could then be made to the inherited process in the same way that specific features are added to inherited classes in the OO paradigm. Some readers may recognise this. It is how most ERP systems are implemented today, only the “inheritance” mechanism is implemented by programming user exits and/or adding new customer build activities. The disadvantage here is that these changes are specific and propriety to the ERP system being implemented. If we want to implement processes over a heterogeneous environment (i.e. a lot of different applications or over the web) then inheriting from a process running in an external process engine would be an obvious solution. And with the rise of web services, composite apps a.k.a mashups, it wouldn’t surprise me if we start to see inheritance mechanisms creeping into the feature sets of process engine vendors.

Saturday, May 27, 2006

Speeding up SOAP requests in a SOA

In a previous post I mentioned how efforts are under way to inprove the speed of XML processing. Another approach is taken in this article I came across in which the author shows how SOAP requests in a SOA can be cached in a middle tier.

Thursday, May 25, 2006

My very own homepage

I finally got around to creating my own home page. It is extremely simplistic, but still does not reach the minimalist heights demonstrated by this web site.

I was keen to write the HTML by hand, so I have been using SelfHTML which is an excellent web based and downloadable guide to HTML. An English version doesn’t exist as yet, but they’re looking for volunteers to do the translation.

Update: Reread this old blog post and clicked on the minimalist web page link (actually from Creative Artists Agency). Previously this was was just the equivalent of a business card - company name and contact details. It's now been updated with a more dynamic javascript enabled interface. Only it doesn't do much more than before.

I guess their message is very simple - You have to talk to us.

Sunday, March 12, 2006

What is the difference between OO and BPM?

The answer is … none!

I know that this is a heretical viewpoint, BPM (and in particular the use of a process engine or BPMS) being regarded as the next great step. I’m not disputing that, I just saying that at a fundamental level OO and BPM are just the same.

To justify my viewpoint lets take at look at what was regarded as OO when people were first thinking about it (Xerox PARC and all that). Objects were considered as things which had the following properties:

  1. Each object could receive messages and change their internal state accordingly.
  2. Each object could send messages to collaborating objects
  3. Many instances of an object could exist at the same time, each having their own state.Objects could inherit parts of their behavior from other objects.

It was a lovely idea, but over the years it just got more and more watered down due to limitations in how technology could support it, market forces and misunderstanding. Look at message transfer between objects. This became nothing more than a (synchronous) procedure call. Look at the idea of state. If more than one user is involved then our objects have to be “stateless” if we want to achieve anything like a decent response time. Inheritance became something to treat very carefully if we want to avoid building brittle, difficult to change, programs. Over time, objects degenerated more and more into simple data objects and the functionality happened someplace else, in modules which had names such as “session beans”.

What about BPM? The BPM paradigm talks about processes, and each process has the following properties:

  1. A process can receive messages and change their internal state accordingly. For example, a user can fill in a credit application and sent this (as a message) to the credit acceptance process. The process changes its state to reflect that the credit application has been received.
  2. A process can send messages to collaborating processes. Continuing with the following example, the process now sends a message to another process, which checks the credit worthiness of the applicant.
  3. Many process instances can exists at the same time, each having their own state, e.g. different credit applications.

Replace process with object and you get the point.

But, I hear you say, an important part of the OO paradigm is inheritance. Where is that in the BPM paradigm? Currently, the idea of process inheritance does seem to be getting much attention, but does that mean it that it is an idea without value?

That is something that I’d like to explore in a later entry.

Tuesday, January 24, 2006

AJAX goes mainstream

It seems that AJAX is finally making it to mainstream (in the sense that traditional IT is starting to see its potential). Integration product vendors are starting to provide tools - see, for instance, the TIBCO General Interface - and even Microsoft are getting into the act with the Atlas project.

Thursday, January 19, 2006

Design Pattern Books

After a long hiatus due to project and personal commitments, I thought I should start posting here again.

I was asked today, do I know any good books on patterns. So, for future reference, here is my list, stating off with the classic:

Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series)
by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Patterns of Enterprise Application Architecture
by Martin Fowler

Enterprise Integration Patterns : Designing, Building, and Deploying Messaging Solutions
by Gregor Hohpe, Bobby Woolf

Pattern-Oriented Software Architecture, Volume 1: A System of Patterns
by Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal, Peter Sommerlad, Michael Stal

Pattern-Oriented Software Architecture, Volume 2, Patterns for Concurrent and Networked Objects
by Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann

Analysis Patterns : Reusable Object Models (Addison-Wesley Object Technology: Addison-Wesley Object Technology Series)
by Martin Fowler

Tuesday, October 18, 2005

The lost BPM links

Towards the end of last year I came across an entry for business process management in Wikipedia. It wasn’t very good so, in the true spirit of Wikipedia, I rewrote it and tried to get some structure in it. Since then it has evolved with many people each making different contributions, although the original structure seems to have remained. Although I do have a few gripes with the current version of the entry, I guess I have to bow to the fact that my POV is not necessarily the POV of everybody else.

One section I added was a set of links to vendors currently offering BPM products. This has recently be removed by another Wikipedian with the comment that “it’s not a web directory”. Well, maybe. I have to admit that the section was troublesome in that everybody wanted to add their favorite vendor, even if their products had nothing to do with BPM. But I still found the section useful. However, rather than lamenting its demise, I have moved it here so what follows is the last link list from Wikipedia (edited to remove a number of spurious entries):



My criteria for selection are rather loose, basically that each vendor states on their web site that they support business process management rather than just supporting particular processes (such as CRM , SCM etc.). The list is, of course, incomplete.

Monday, October 03, 2005

Rich Clients in a Browser - More about AJAX

I’ve been pretty busy over the last months (new project in another city) so this is my first post for a number of months.

However, since posting about AJAX and rich clients back in March a lot seems to be happening in trying to ease the burden of providing rich client functionally in a browser, i.e. people are creating JavaScript libraries. The following caught my eye:

script.aculo.us has a JavaScript library for creating user interfaces elements and functionality, such as drag and drop and auto-completing text fields.

Rico who as well as offering a number of visual effects also has a data grid which allows a HTML table to be connected to a data source.

Both of these are based on the Prototype framework which is a JavaScript framework which claims “to ease the development of dynamic web applications” and has functionality to ease the handling of XMLHttpRequest (one of the fundamental building blocks of AJAX).

Wednesday, June 08, 2005

Virtual Enterprise and the SOA - What Reardon are doing

Another InfoWorld article about Rearden Commerce's plans. What's interesting is not only that they offer a set of business services, but also a platform which lets the end user assemble composite apps (including their own processes).

Saturday, April 30, 2005

Versioning Sevices - The last word?

My article (written with my colleague Andreas Elting) on service versioning has been published in ObjektSpektrum, one of Germany’s leading technical magazines (the means of course that it’s in German!). As I have tried to show in this blog the idea of just using web services does NOT mean that the services and their consumers are fully decoupled from each other. Changes in the XML are unavoidable if the architecture has to adapt to changing business requirements, but these very changes can render a message unreadable for either the service provider of consumer. Service versioning is one way of managing this problem.

Previous ruminations on this topic can be found here.

Saturday, March 19, 2005

Ajax - Rich Clients in a Browser

A lot of buzz is starting to develop around the Ajax architectural technique. Indeed, before giving up, I counted 200 links in del.icio.us with Ajax as tag. This really is a buzz when you consider that the technique was only coined in February this year by Jesse James Garrett in an excellent article. As this describes Ajax so well, I’ll just try to condense it into two sentences: Ajax is about using the inherent rich client functionality of a standard browser to provide responsive user interfaces using standard web technologies. These are:


  • Rendering with XHTML and CSS

  • Client logic with Javascript and the document object model.

  • Communication using asynchronous calls to get XML data with XMLHttpRequest.



Although the technique has just been given a name it seems quite a lot of UIs have already been produced which use this technique. Having a name though, allows people to say “yes, we’ve done that” or “yes we’re doing that”, in a manner similar to the naming of design patterns. Indeed I’m sure that some of my colleagues who have produced rich UIs for various companies using JavaScript will say just that.

Although the hype is just starting, I need to sound a note of caution. If the amount of JavaScript increases above a certain point, then the perceived performance of the UI can degrade significantly. This is mainly due to the load time of the page. Certain commercial products (who will remain nameless) that rely heavily on large quantities of JavaScript are hitting this problem. It’s nothing new, anybody who once tried to bring rich client functionality to the browser using Java Applets (remember those?) knows what I am talking about.

Tuesday, March 08, 2005

More Services for the Virtual Enterprise

Two more hosted apps for the virtual enterprise:


And an interesting article in CIO Online.

Monday, February 28, 2005

Building a Virtual Enterprise IV

The following InformationWeek article describes how GrandCentral (mentioned before in this blog) have added a raft of new partners, each offering different business services. I've included the following quote from the article and linked the references:

"In addition to NetSuite and NSite [note: NSite offer business automation services], Grand Central's partners include ServiceObjects, a customer-data-validation service; Demandware's E-commerce system; RecruitForce.com, an online system for managing job applicants and the application process; SPS Commerce, an EDI hosting service; StrikeIron, which provides tools to simplify publishing, finding, and utilizing Web services; and Xignite, a supplier of online financial services components.
Additional partners are:
Moreover Technologies, a supplier of online news service systems; Advanous, a division of EnterBridge Technologies, supplier of an online distribution-management system; ExpediteBiz, an automated shipping-service supplier; OpenAir, an automated professional-services-management system; Intellibank, an online relationship-management system; and Advanced Data Exchange, an online EDI document-exchange service."

Saturday, February 19, 2005

Versioning Service II

In a previous blog, I started to explore the idea of how services could be versioned in a SOA. Although versioning the WSDL seemed to be an alternative for web services using SOAP the question remained on how to version services which use a queuing mechanism (e.g. with a JMS interface). If a service is invoked over a queue then the queue becomes synonymous with the service. All that has to happen is that new versions of a service are connected to new queues (appropriately named) . Old clients just stay connected to the old queues or are migrated to use the new services over the new queues. Seems easy, but I suspect that in a large system with many services it would be a nightmare to administer, especially as there is no lookup information for the queue. Indeed, this seems to depart from two of the main tenets of SOA, i.e. services are loosely coupled and that they can be discovered.

However, having previously discussed that versioning is possible in web services, can web services be combined with a queuing system and the advantages of web service versioning kept? New standards in the web services space seem to point to a possible solution (as web service management vendors - such as Systinet - are keen to point out). The basic architecture seems to look like this:



SOAP Messages are sent to a MOM gateway, which extracts the messages, finds the queue and sends the message (maybe using JMS if it’s a J2EE implemetation) to a service provider. Messages sent back from the service provider are picked up by the gateway and send as a SOAP response back to the consumer. All the issues concerned with message correlation etc. are handled by the MOM gateway.

Not shown in this diagram is how to deal with an asynchronous style of communication. To solve this comes a small, and apparently unassuming, specification called WS-Addressing. This provides a uniform way of supplying the endpoint of a web service within the SOAP message rather than just using a URL. Although it seems to add complexity, the standard ends up providing extra flexibility and may well be the answer to dealing with versioning of services, but more about that later. In the case of asynchronous messaging, WS-Addressing defines a "ReplyTo" SOAP header block and this could be the endpoint for the return message from the provider.

I have, for the time being, ignored the handling of publish/subscribe mechanisms. Within an SOA one would typically also architect an eventing mechanism, e.g. to notify that a change has happened to some data. WS-Eventing is maybe the right standard to use, but I not going into that now.


Having seen how to use web services with MOMs, lets get back to the versioning problem. In order to find the correct version of a web service an additional degree of layering is required. I’ve tried to show this in the following diagram:




Now the usual parole is to say that the namespaces of the XML messages are versioned and that the version resolution layer checks the name space and directs the message to appropriate service. However, WS-Addressing offers another possibility. Instead of specifying the endpoint of the service provider the corresponding endpoint of the version resolution system is specified plus versioning information. Based on this, the version resolution finds the correct endpoint, modifies the endpoint in the WS-Addressing part of the SOAP header and directs the message to this.

Nobody seems to be actually offering anything in this area, although application platform vendors such as BEA seem to be active in terms of XML versioning, but if they are going to use WS-Addressing in their products to implement versioning , remains open. Web services management vendors such as AmberPoint , also seem to offer support for service versioning with their products, although how far this goes and if it is based on open standards is unclear.

Friday, February 18, 2005

Extending XML Schemas

Interesting article about how to write XML Schemas which can be extended. Extending the schema doesn't remove the need for versioning, but it goes some way in preserving loose coupling.

Thursday, February 17, 2005

For the Web Service Challenged

Having problems keeping a track on all those web service standards.? Maybe these 3 help:
  • IBM keep a list of web service standards as well as their current status. Unfortunately these only seem to be those which IBM was involved in (including organisations such as OASIS and w3C).
  • Microsoft also keep a list, but in a more verbose fashion and, like IBM, it seems to be focused on Microsoft efforts.
  • Wikipedia also has a list of web service standards, but currently does not show the status.