I have been intently following a blog thread that was initially started by the “Other” David Chappell. David’s initial posting
SOA and the Reality of Reuse sparked a small flurry of responses, and responses to responses, which also include Joel McKendrick’s Pouring Cold Water on the Service Reuse. I tend to agree with most of the points made in David’s initial posting which includes -
- Reusable services can sometimes be hard to do
- Effective SOA reuse requires strong corporate wide organizational support with top management support and buy-in.
- SOA creates agility by allowing for flexible business processes, which if are configuration driven may be readily changed to suit the changing needs of the business. David argues that this can be a form of reuse.

However the overall tone of the threads seem to be casting a very strong doubt on the reality and practicality of service reuse at all. Some of the responses are flat out saying that service reuse is not possible.

So I went and compiled some information gathered from our customers who are building SOAs.

Because we have been shipping an ESB product for over 4 years, we have over 300 customers who are in the deployment phase with their SOA projects.

Without doing too much digging I came up with substantial list of reusable services which I will categorize as mediation services, on-ramps/off-ramps, business services, service patterns, and advanced mediation services

Mediation services -

- Data Transformation (XML to XML, text to XML, EDI to XML, etc).
- Data Enrichment
- Routing Services, whether static or dynamic based on content and context
- Splitter/Fanout - divide up an XML message into its constituent parts and send them to multiple destinations. This may be configurable using XSLT or scripting language.
- Aggregator
- XRef service. An impressive example of a reusable service is a cross reference service was developed and being used at Gillette. They have built a generic Xref service that is completely configurable and extensible by other groups using a web based configuration. The simplest function that the service performs is to look into an incoming XML message at a specific location based on an XPath expression, and replace the value at that location with another value as determined by doing a database lookup. It is completely metadata driven, is configurable to have multiple source and multiple targets, and access to multiple data parts using different XPath expressions. The database access is also configurable.

On ramps / Off ramps

These are specific services that used for the case where the application being brought into the SOA doesn’t support web services directly. They may be implemented as custom services, as a third party adapter, or provided by the ESB. This is just a partial list but you get the idea.

- FTP Service

- File Polling/Send/Receive

- Seibel access

- SAP ALE/iDOCS and RFC access

Composite Services

Any combination of business services and mediation services may be combined using business process definitions and exposed as composite services which can be built upon and reused.

- A unified customer view service is an example of a something that may be reused by call-center applications as well as customer facing portals. It may also be reused by payment processing applications. A unified customer view service may itself be a composite service that leverages multiple backend applications and data sources to gather or update its information about a particular customer.

Other Specific Business Service examples

- A financial services company has an HR service, which allows people to put in information about themselves to a database, such as their skills and their manager, etc. Other applications in other parts of the organization use the information. For example, the legal team uses it to route incoming work requests to the right staff based upon experience.

- A shipping company in South Africa has a “welcome” service. Any time they get a new customer, this service faxes information over to the new customer welcoming them, and providing them with information they will need to keep handy to do business efficiently (contact numbers, account info, etc.). This service is used by different parts of the business so that everyone interacting with the shipping company has a similar experience regardless of which part of their business they are a customer of.

- A reusable consolidated payment service for an insurance provider. The goal was to reduce the number of applications, streamline their business processes. Instead of 6-7 check payment applications they have just one. For each claim that is made they make a payment. However each insurance business is a little different - life from dental, etc. so the surrounding applications and processes that use the payment service need to be different. But in the end they need to cut a check or transfer funds. The consolidated payment service is that reusable service. It’s responsible for who gets paid, how the money is transferred, whether an explanation of benefits needs to be sent and how (email / paper), whether to consolidate checks for two benefits delivered at the same time, etc.

Advanced Mediation Services -

- XML Storage and Retrieval, whether through O/R mapping or direct native object storage and retrieval.

- Caching and aggregation of XML data across the SOA

- Complex event capture, filtering, and analysis, from streams of events originating from stock feeds or RFID readers and transforming into meaningful business events that can be routed to BAM dashboards.

Service Patterns -

Any combination of business services and mediation services may be combined using business process definitions to form reusable service patterns. If the ESB supports the notion of exposing the business process as a web service, then this in itself can become a reusable service.
- The VETO (Validate, Enrich, Transform, Operate) pattern is an example of a common pattern that can be reused across many projects.
- Federated Query service pattern and its related services
- A notifications pattern/service that allows notifications such as email etc to be raised when updates/queries occur across multiple back end systems, sometimes across multiple locations.
- Practically every Pattern in Gregor Hohpe’s EAI Patterns book can be implemented as a reusable service in a SOA.

And here’s the mother of all reuse -

Proflowers is the internet-based perishable marketing division of Liberty Media, whose other properties include QVC and Starz Entertainment Group.

Proflowers ships flowers directly from the growers around the world to the consumer’s doorstep. Because it bypasses distribution centers and retail shops, Proflowers cut their supply chain time from what is typically 12 days to 3. This means they have the freshest flowers: they are the only delivery service to make a 7-day freshness guarantee.

Proflowers initial SOA project was to use Sonic ESB to automate a time-based order processing system that is driven by the delivery date that the customers want their goods to arrive. They since have extended their SOA / ESB deployment to automate their whole supply chain globally. The thing that makes this the mother of all reuse IMO is that they were also able to duplicate their success by launching 3 new sister companies that use the same time based order processing systems - Cherry Moon Farms for fresh fruit delivery, Uptown Prime for fresh beef delivery, and Secret Spoon Sweets for fresh sweets and confections.

Dave