Aug 4, 2009

SOI with WMB

It's is very strange thing but I think that IBM missed a very important feature in websphere message broker design, the Infrastructure assets.
Each organization has its own assets which its develops and customize for their use.
In the SOA approach you build infrastructure services and application for reuse.
The reuse option in WMB can be achieved by the subflow ability.
Subflow is a regular message flow with small difference, It starts from Input node, logic inbound port and not physical one. ( Like direct ports in Biztalk).
You than can drag your subflow to the your message flow, it would be represented by single node.
What really happens there is an inline copy of the subflow to the message flow during the bar compilation. Thus you getting different copy of your subflow during each bar compilation.
It's like they didn't hear about REFERENCE in IBM.
So now for example you developed a logging subflow, or generic error handler. You put the subflow in all your projects.
Now if you make change in your subflow you need to recompile all of your message flows projects!
And here is the problem.
Every time you make change in your infrastructure you need to recompile all your projects.
This is a major development issue.

Some Tips to ease on this issue:

- Develop as many as you can of your infrastructure in java. thus won't need to
recompile your projects.
- Use scripting abilities of the webpshere message broker to recompile/redeploy the projects.
http://www.ibm.com/developerworks/websphere/library/techarticles/0706_spriet/0706_spriet.html

Working now on different approach to solved this, will post more details on it soon.
Hope to achieve the right agility with websphere message broker.

2 comments:

Alexey B. said...

I don't think IBM missed it - they did it in a different way:
1. Node -> Module is reusable. Put many nodes that call the same module. You still need to redeploy if it's ESQL. Bu you can use Java.
2. Use Java (what's bad in Java?)
3. Write dynamic agile flows that "reuse themselvs", by dynamic configuration per interaction.
4. Create infra _flows_ and call them, sub-flows are parametrised includes.

And they heared of REFERENCE, but reuse by REFERENCE costs in performance - you have to manage your code objects (like JVM does). WMB uses INCLUDE style for performance. And it performes :)

Alex Linder said...

1. I agree and mention it the post. and as you say you still need to redeploy all.
2. Java in WMB not solves everything. what about the UDP?
3. I like when you use agile with WMB. :-)

I think that the Include style hard on the solution agility and reusability which are more importent in SOA solution than the performance.

And you without doubt right inline is faster than reference but reference is not a reflaction solution.