In one of my last posts I said, that I think it is a good SOA strategy to buy SOA enabled applications and to interweave them. But I did not define, what I mean by “SOA enabled”.
- The Web Service Operations that are the interface to the application must be described as WSDL.
- Technical Means must be available to connect the application to an Enterprise Service Bus (ESB).
- WSDL is not enough, because it only describes the signature of the service interface. What is also needed is a model of the service behavior. The allowed sequence to call service operations must be modeled as business process model (for example BPMN 2.0 choreography diagram). For example it must be modeled if or if not it is possible to cancel an order after it has been released or not. This is not visible in the WSDL signature, but can only be visible within a service behavior model. And it is decisive to integrate.
- The application should not be monolithic, but decomposed into components that represent individual process participants that communicate with each other in a loosely coupled way.
- The granularity of the service operations must represent real reuse. This means, that the service operations may only do one thing at a time and not a chain or sequence of many activities. This is necessary to compose the service operations to new composed services. For example it must be a different step to create an order and to release it.
- Extension Points must be modeled. Extension points are those points in an application process where extenders are allowed to attach an individual process. For example it might be possible to add additional an approval to a purchasing process. This must be modeled. Also integrity conditions must be modeled. For example it is necessary to have exactly one purchase order for individual purchase order confirmations. This is an integrity condition that must be modeled.
- It must be possible to define new business objects or extensions to existing business objects.
- All of this model information must be available in a repository.
This is my requirement list for a SOA enabled application. Yes, I admit, these are many requirements and I do not know one single software package that does fulfill them all. I know software packages that come close. I would not buy any software that falls short of many of these points.
I think most would say, that 1 and 2 is sufficient. I wouldn’t. I think that 3 till 8 is also necessary to make a SOA integration project successful. This knowledge often is only available through the individual knowledge of consultants. But there is no reason to not model it and thus make a SOA project much more economic.