O'Reilly logo

Java SOA Cookbook by Eben Hewitt

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Creating Canonical Data Model

Problem

You want to create a canonical data model for your SOA, as discussed in Woolf and Hohpe’s Enterprise Integration Patterns (Addison-Wesley Professional), but you aren’t sure how to proceed.

Solution

Read the discussion below. You may choose not to do this. If you do choose to employ a canonical data model, you probably want to have a data architect create this up-front, following a detailed analysis of your organization’s data from a master data management perspective, and before you have lots of services in place.

In short, your mileage may vary, but the solution is probably to define schemas local to services that reuse a separate layer of schemas, defined independently of services, at the enterprise level.

Discussion

Creating a canonical data model can be tough. You can do everything else right, but if you get this wrong, you will have painted yourself into a corner that can take considerable effort and restructuring to get out of. I know of one software company with dozens of interacting products that spent 10 months working on its schema definition of Product. Let’s proceed with caution.

Perform your schema analysis and design in a separate, prior process from your service analysis. Your services will exchange business documents, and these business documents will be composed of cross-domain entities. For example, a variety of services across different business domains will potentially need to use certain core types, such as Customer or Product ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required