Dialogs becoming First Class Citizens
One of the things that has been a real pain in my career is that -- while building Web UIs -- in many cases I had to carry conversational state across a number of HTML pages without having the proper tools to do so. In these cases, the conversational state is bound to the unit of work or activity, and not to a session. I can't tell you how many frameworks I've used that didn't consider dialogs to be a first class citizen. The talk on Shale really made my day: Shale already provides rudimentary support for it, and it will continue to evolve to support multiple concurrent dialog instances...
( Jun 30 2005, 02:00:26 AM CEST ) Permalink Comments [1]JavaOne Apres Keynote (Monday)
Here's a summary of the coolest things mentioned during the keynotes:
- The Application Server is going to be open sourced;
- Our JBI environment is going to be open sourced; (I *like* it)
- It will include a BPEL Servcie Engine;
- The JDO days are officially over; (.....)
- Hapner had a slide in his presentation showing a JBI environment with an XForms Binding Component;
JavaOne Plucker Database Update
The JavaOne schedule has been updated, so here's a new Plucker Database.
( Jun 26 2005, 06:26:58 AM CEST ) Permalink Comments [0]JavaOne Plucker Database
In exactly 24 hours, I will get on the plane leaving from Amsterdam to San Francisco. After that, I will have about 10 hours to prepare for JavaOne. Based on some work done together with Gero Vermaas, I hacked the conference schedule into a Plucker database. Now I can read the entire conference schedule from my Palm.
You can download the Plucker file from here. Here are some screenshots:
( Jun 24 2005, 11:52:31 AM CEST )
Permalink
Comments [3]
Vertical Integration vs. Horizontal Partnerships
The shift from vertical integration to horizontal partnerships is IMHO one of the important business drivers behind SOA.
In the past, organizations used to have a desire to control the entire supply chain. Large corporations would own both the local retailer and the mines providing the basic material for their products. Corporations like that resemble the red organizational structure in the figure below. Let's call them Red inc.

Over the years, business has been moving away from this old "vertical integration" school of thought into a new business model that prefers "horizontal partnerships". Divisions and business units became responsible for their own profit and loss, which eventually led them to search for other opportunities to grow and stabilize the incoming flow of revenue by searching for other clients of their services. It is only a natural consequence that the strong ties with old organization would get weaker and that ties with new organizations would grow stronger.
Eventually, this has led business units to become business partners. Because of the weaker ties with the old organizations, and because of their desire to offer services to other clients than the old organization, old ad-hoc integration processes would no longer work. Instead, the business unit would search for a coherent and well-defined market proposition, and seek for standards adoption to become more attractive for potential new customers.
The following figure illustrates it. In this case, a business unit of the Red inc., is starting to offer its services to the green organization. This way, it is drifting away from its original position in the old organization, and is starting to become a business partner for the old organization. It is responsible for its own profit and loss, so its basically crawling up on its own feet now: let's call them Yellow inc. The green organization (Green inc.) has come to the conclusion that it no longer wants to have the services of the business unit in house, and decided to outsource the entire set of services originally provided by the Green inc. business unit to the Yellow inc.

The mechanisms in a typical SOA architecture facilitate exactly these kinds of rearrangements in your organization:
- Having a clearly defined market proposition and a related clearly defined coherent set of services allows Yellow inc. to offer its services to other organizations than Red inc.
- Adoption of vertical standards in the definition of the services of Yellow inc. allows Green inc. to pick another business partner in a relatively painless way.
- The loosely coupled nature of the open Web Services standards attribute to this freedom of choice and flexibility even more.
- At the same time, being alligned with the direction in which the industry is heading (embracing the Web Services standards), works as an excellent sales argument for Yellow inc.
- Both Red inc. and Green inc. are able to focus on their core business.
- ...
Expect to read more about this in my blogs in the near future.
P.S. Make sure to check out John Crupi's blog about the role of the business unit too.
( Jun 17 2005, 11:03:32 AM CEST ) Permalink Comments [0]RAID for Dummies
A colleague passed this to me this afternoon. I couldn't stop laughing.
( Jun 14 2005, 06:01:05 PM CEST )
Permalink
Comments [1]
JavaOne Pitcher
<nl_NL>
Vanavond heb ik me ingeschreven als T-shirt tosser. In eerste instantie leek het mij wel aardig om deze entry als titel "I'm a Tosser" mee te geven, maar dat is waarschijnlijk nogal verwarrend voor onze vrienden in de UK.
Hoe dan ook, betekent dat dat ik tijdens JavaOne op dag 2 (zet het in je agenda) in staat ben om een door James Gosling zelf geproduceerd Duke T-shirt in je maag te splitsen. Maar alleen als je zelf goed kunt vangen. En als ik je ken. (Ik ken mensen pas echt goed als ze een biertje voor me hebben gekocht...)
</nl_NL>
( Jun 13 2005, 10:03:50 PM CEST ) Permalink Comments [0]SOA Smells
Ever heard of "Code Smells"? Let me give you an introduction if you haven't. "Bad Smells in Code" was an essay by Kent Beck and Martin Fowler, published as Chapter 3 of "Refactoring: Improving the Design of Existing Code". This is what Wikipedia says about it:
"In the community of computer programming, code smell is a jargon term used among hackers to refer to a symptom that indicates something may be wrong: a suggestion at the possible presence of an anti-pattern."
The thing with "Code Smells" is that they can indicate that there might be a problem in your code, but they can not guarantee that a specific piece of code is wrong. You still need to make a decision based on the trade-offs involved.
More than half a year ago, we were trying to figure out if we could identify a deterministic approach for defining the appropriate service layer definitions. (Like the granularity of a service, and some proper guidelines for dividing the entire problem space up in several domains.)
After a while, we decided that it might be a little to ambitious to come up with a deterministic approach. We did however agree upon a couple of key indicators that would at least give you a hunch on where to put your service boundaries. The indicators were based on analysis based UML deliverables, and included rules like this:
- Search for tightly coupled clusters of types in your Domain Object Model and defines service boundaries at the edges of these clusters;
- Search for commonalities in Use Case steps; (Those commonalities might justify another service layer.)
- Search for commonalities in how typical scenarios affect snapshots of the Domain Object Model; (Commonalities in affected types might also call for another service layer.)
- Make a distinction between your "Business Process" types and "Business Concept" types in your Domain Object Model. "Business Process"-related types do only exist for the lifetime of a certain business activity; "Business Concept"-related types survive a certain business activity.
We labeled it "SOA Smells", since it reminded us of "Code Smells". A bad smell in refactoring does not necessarily mean that you must refactor something. It just means that you need to consider a piece of code for refactoring. Similarly, a "SOA Smell" does not give you the ultimate and ideal service boundary, just like that. Instead but it simply highlights a few potential candidates, before you consider all of the different trade-offs.


