<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Udi Dahan - The Software Simplist &#187; BPM</title>
	<atom:link href="http://www.udidahan.com/category/bpm/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.udidahan.com</link>
	<description>Enterprise Development Expert &#38; SOA Specialist</description>
	<lastBuildDate>Sun, 08 Jan 2012 12:45:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Danger of Centralized Workflows</title>
		<link>http://www.udidahan.com/2011/07/13/the-danger-of-centralized-workflows/</link>
		<comments>http://www.udidahan.com/2011/07/13/the-danger-of-centralized-workflows/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 08:05:19 +0000</pubDate>
		<dc:creator>udidahan</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Autonomous Services]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[BizTalk]]></category>
		<category><![CDATA[Business Rules]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[OO]]></category>
		<category><![CDATA[Pub/Sub]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">http://www.udidahan.com/?p=1493</guid>
		<description><![CDATA[It isn&#8217;t uncommon for me to have a client or student at one of my courses ask me about some kind of workflow tool. This could be Microsoft Workflow Foundation, BizTalk, K2, or some kind of BPEL/orchestration engine. The question usually revolves around using this tool for all workflows in the system as opposed to [...]]]></description>
			<content:encoded><![CDATA[<p>It isn&#8217;t uncommon for me to have a client or student at one of my courses ask me about some kind of workflow tool. This could be Microsoft Workflow Foundation, BizTalk, K2, or some kind of BPEL/orchestration engine. The question usually revolves around using this tool for all workflows in the system as opposed to the SOA-EDA-style publish/subscribe approach I espouse.</p>
<h3>The question</h3>
<p>The main touted benefit of these workflow-centric architectures is that we don&#8217;t have to change the code of the system in order to change its behavior resulting in ultimate flexibility!</p>
<p>Some of you may have already gone down this path and are shaking your heads remembering how your particular road to hell was paved with the exact same good intentions.</p>
<p>Let me explain why these things tend to go horribly wrong.</p>
<h3>What&#8217;s behind the curtain</h3>
<p>It starts with the very nature of workflow &#8211; a flow chart, is procedural in nature. First do this, then that, if this, then that, etc. As we&#8217;ve experienced first hand in our industry, procedural programming is fine for smaller problems but isn&#8217;t powerful enough to handle larger problems. That&#8217;s why we&#8217;ve come up with object-oriented programming.</p>
<p>I have yet to see an object-oriented workflow drag-and-drop engine. Yes, it works great for simple demo-ware apps. But if you try to through your most complex and volatile business logic at it, it will become a big tangled ball of spaghetti &#8211; just like if you were using text rather than pictures to code it.</p>
<p>And that&#8217;s one of the fundamental fallacies about these tools &#8211; you are still writing code. The fact that it doesn&#8217;t look like the rest of your code doesn&#8217;t change that fact. Changing the definition of your workflow in the tool IS changing your code. </p>
<h3>On productivity</h3>
<p>Sometimes people mention how much more productive it would be to use these tools than to write the code &#8220;by hand&#8221;. Occasionally I hear about an attempt to have &#8220;the business&#8221; use these tools to change the workflows themselves &#8211; without the involvement of developers (&#8221;imagine how much faster we could go without those pesky developers!&#8221;).</p>
<p>For those of us who have experienced this first-hand, we know that&#8217;s all wrong. </p>
<p>If &#8220;the business&#8221; is changing the workflows without developer involvement, invariably something breaks, and then they don&#8217;t know what to do. They haven&#8217;t been trained to think the way that developers have &#8211; they don&#8217;t really know how to debug. So the developers are brought back in anyway and from that point on, the business is once again giving requirements and the devs are the one implementing it.</p>
<p>Now when it comes to developer productivity, I can tell you that the keyboard is at least 10x more productive than the mouse. I can bang out an if statement in code much faster than draggy-dropping a diamond on the canvas, and two other activities for each side of the clause.</p>
<h3>On maintainability</h3>
<p>Sometimes the visualization of the workflow is presented as being much more maintainable than &#8220;regular code&#8221;. </p>
<p>When these workflows get to be to big/nested/reused, it ends up looking like the wiring diagram of an Intel chip (or worse). Check out the following diagram taken from the DailyWTF on a <a href="http://thedailywtf.com/Articles/The_Customer-Friendly_System.aspx">customer friendly system</a>:</p>
<p><img src="http://www.udidahan.com/wp-content/uploads/stateModel.gif" alt="stateModel" title="stateModel" width="500" height="564" /></p>
<p>The bigger these get, the less maintainable they are.</p>
<p>Now, some would push back on this saying that a method with 10,000 lines of code in it may be just as bad, if not worse. The thing is that these workflow tools guide developers down a path where it is very likely to end up with big, monolithic, procedural, nested code. When working in real code, we know we need to take responsibility for the cleanliness of our code using object-orientation, patterns, etc and refactoring things when they get too messy.</p>
<p>Here is where I&#8217;d bring up the SOA/pub-sub approach as an alternative &#8211; there is no longer this idea of a centralized anything. You have small pieces of code, each encapsulating a single business responsibility, working in concert with each other &#8211; reacting to each others events.</p>
<h3>Productivity take 2: testing and version control</h3>
<p>If you&#8217;re going to take your most complex and volatile business logic and put it into these workflow tools, have you thought about how your going to test it? How do you know that it works correctly? It tends to be VERY difficult to unit-test these kinds of workflows.</p>
<p>When a developer is implementing a change request, how do they know what other workflows might have been broken? Do they have to manually go through each and every scenario in the system to find out? How&#8217;s that for productivity?</p>
<p>Assuming something did break and the developer wants to see a diff &#8211; what&#8217;s different in the new workflow from the old one, what would that look like? When working with a team, the ability to diff and merge code is at the base of the overall team productivity.</p>
<p>What would happen to your team if you couldn&#8217;t diff or merge code anymore?<br />
In this day and age, it should be considered irresponsible to develop without these version control basics.</p>
<h3>In closing</h3>
<p>There are some cases where these tools might make sense, but those tend to be much more rare than you&#8217;d expect (and there are usually better alternatives anyway). Regardless, the architectural analysis should start without the assumption of centralized workflow, database, or centralized anything for that matter.</p>
<p>If someone tries to push one of these tools/architectures on you, don&#8217;t walk away &#8211; run!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udidahan.com/2011/07/13/the-danger-of-centralized-workflows/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>Race Conditions Don&#8217;t Exist</title>
		<link>http://www.udidahan.com/2010/08/31/race-conditions-dont-exist/</link>
		<comments>http://www.udidahan.com/2010/08/31/race-conditions-dont-exist/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 09:56:46 +0000</pubDate>
		<dc:creator>udidahan</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[Business Rules]]></category>
		<category><![CDATA[CQRS]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Pub/Sub]]></category>
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">http://www.udidahan.com/?p=1335</guid>
		<description><![CDATA[Not in the business world anyway.
The problem is that, as software developers, we&#8217;re all too quick to accept them at face value. We don&#8217;t question the requirements &#8211; in all fairness, it was never our job to do so. We were the ones that implemented them, preferably quickly. 
For example
Let&#8217;s say we get the requirement [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.udidahan.com/wp-content/uploads/crossing-the-finish-line1.jpg" alt="crossing-the-finish-line" title="crossing-the-finish-line" width="200" height="159" style="float:right; margin-left:10px; margin-bottom:10px;"  />Not in the business world anyway.</p>
<p>The problem is that, as software developers, we&#8217;re all too quick to accept them at face value. We don&#8217;t question the requirements &#8211; in all fairness, it was never our job to do so. We were the ones that implemented them, preferably quickly. </p>
<h3>For example</h3>
<p>Let&#8217;s say we get the requirement the following requirements:</p>
<p>1. If the order was already shipped, don&#8217;t let the user cancel the order.<br />
2. If the order was already cancelled, don&#8217;t let the user ship the order.</p>
<p>The race condition here is when we have two users who are looking at the same order, which is neither cancelled nor shipped yet, and each submits a command &#8211; one to ship the order, the other to cancel it.</p>
<p>In these cases, the code is simple &#8211; just an if statement before performing the relevant command.</p>
<h3>So what&#8217;s the problem</h3>
<p>A microsecond difference in timing shouldn&#8217;t make a difference to core business behaviors. Which means that we&#8217;ve actually got here is a bug in the requirements. Users are actually dictating solutions here rather than requirements.</p>
<p>Let&#8217;s ask our stakeholders, &#8220;why shouldn&#8217;t we let users cancel a shipped order? I mean, the users don&#8217;t want the products.&#8221;</p>
<p>And the stakeholders would respond with something like, &#8220;well, we don&#8217;t want to refund the user&#8217;s money then. Or, at least, not all their money. Well, maybe if they return the products in their original packaging, *then* we could give a full refund.&#8221;</p>
<p>And as we drilled deeper, &#8220;when do refunds need to be given? Right away, in the same transaction?&#8221;</p>
<p>The stakeholders would explain, &#8220;no, refunds don&#8217;t need to be given right away.&#8221;</p>
<p>It turns out we were missing the concept of a refund, as well as assuming that all things needed to be processed and enforced immediately. Once we dug into the requirements, we found that there is actually plenty of time to allow both transactions to go through. We just need to add some checks during shipping&#8217;s long-running process to see if the order was cancelled, and then to cut the process short.</p>
<h3>So is everything a long-running process then?</h3>
<p>That&#8217;s actually a fair question &#8211; long-running processes are a lot more common than at first appears.</p>
<p>What we&#8217;re seeing is that cancellation is now a command that has no reason to fail &#8211; just like <a href="http://www.udidahan.com/2009/12/09/clarified-cqrs">CQRS</a> tells us. When this command is performed, it publishes the OrderCancelled event, which the billing service subscribes to. </p>
<p>Billing then starts a long-running process (a saga, in <a href="http://www.NServiceBus.com">NServiceBus</a> lingo), also listening to events from the shipping process, ultimately making a decision when a refund should be given, and for how much.</p>
<h3>Deeper business analysis</h3>
<p>As we discuss matters more with our business stakeholders, we hear that most orders are actually cancelled within an hour of being submitted. It is quite rare for orders to be cancelled days later.</p>
<p>In which case, we could look at modeling the acceptance of an order as a long-running process itself.</p>
<p>When a user places an order, we don&#8217;t immediately publish an event indicating the acceptance of an order, instead a saga is kicked off &#8211; which opens up a timeout for an hour later. If a cancellation command arrives during that period of time, the user gets a full refund (seeing as we didn&#8217;t charge anything since billing didn&#8217;t get the accepted event to begin with), and the saga just shuts itself down. If the timeout occurs an hour later, and the saga didn&#8217;t get a cancel command, then the order is actually accepted and the event is published.</p>
<p>Yes, sagas are everywhere, once you learn to see with business eyes, and no race conditions are left.</p>
<h3>In closing</h3>
<p>Any time you see requirements that indicate a race condition, dig deeper.</p>
<p>What you&#8217;re likely to find are some additional business concepts as well as the introduction of time and the creation of long-running business processes. The implementation at that point will pivot from being trivial if-statements to being richer sagas.</p>
<p>Keep an eye out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udidahan.com/2010/08/31/race-conditions-dont-exist/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>ESB Differences Between Java and .NET</title>
		<link>http://www.udidahan.com/2010/03/29/esb-differences-between-java-and-net/</link>
		<comments>http://www.udidahan.com/2010/03/29/esb-differences-between-java-and-net/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 13:53:52 +0000</pubDate>
		<dc:creator>udidahan</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[MSMQ]]></category>
		<category><![CDATA[Messaging]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Pub/Sub]]></category>

		<guid isPermaLink="false">http://www.udidahan.com/?p=1212</guid>
		<description><![CDATA[At QCon London a couple of weeks ago I had a chat with Ross Mason, the founder of Mule &#8211; the open source Java ESB. After a while, I realized that NServiceBus is a bit different from Mule ESB in terms of scope.
While Mule has many features in terms of connectivity and integration, NServiceBus provides [...]]]></description>
			<content:encoded><![CDATA[<p>At QCon London a couple of weeks ago I had a chat with Ross Mason, the founder of <a href="http://www.mulesoft.com/mule-esb-open-source-esb">Mule &#8211; the open source Java ESB</a>. After a while, I realized that NServiceBus is a bit different from Mule ESB in terms of scope.</p>
<p>While Mule has many features in terms of connectivity and integration, NServiceBus provides platform interop only. One could say that this is a product of the different backgrounds I and Ross come from.  </p>
<p>On the other hand, the saga capabilities in NServiceBus for handling long-running processes are considered to be BPM functionality on the Java side of the industry, and as such, Mule does not have them.</p>
<p>In terms of other enterprise features like management and monitoring, Mule is more mature, but NServiceBus holds its own in terms of high availability and actually surpasses Mule with the grid and scale-out capabilities of its distributor.</p>
<p>Anyway, I think it&#8217;s about time each of these parts was explicitly described so that companies already invested in Java ESB tools will know what they&#8217;re getting with NServiceBus.</p>
<p>Until then, I hope this podcast describing the full spectrum of NServiceBus, from top level SOA services to in-the-weeds transaction management, will provide more information about what it is and why you might want to use it:</p>
<p><a href="http://deepfriedbytes.com/deepfriedbytes/podcast/episode-49-getting-the-right-message-about-nservicebus-with-udi-dahan/">Deep Fried Bytes, episode 49 &#8211; Getting the right message about NServiceBus with Udi Dahan</a>.</p>
<p>Comments most welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udidahan.com/2010/03/29/esb-differences-between-java-and-net/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t EDA between existing systems</title>
		<link>http://www.udidahan.com/2007/08/16/dont-eda-between-existing-systems/</link>
		<comments>http://www.udidahan.com/2007/08/16/dont-eda-between-existing-systems/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 12:54:21 +0000</pubDate>
		<dc:creator>thesoftwaresimplist</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Autonomous Services]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[Pub/Sub]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Simplicity]]></category>
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/08/16/dont-eda-between-existing-systems/</guid>
		<description><![CDATA[In Nick Malik&#8217;s great post, EDA: Avoiding coupling on the name he describes additional &#8220;handshakes&#8221; to be used to avoid the following problems:

Let&#8217;s say I have a system to handle a call center for financial services or telco.  When a customer calls on the phone and asks to be enrolled in &#8220;Heavily Advertised Program [...]]]></description>
			<content:encoded><![CDATA[<p>In Nick Malik&#8217;s great post, <a href="http://blogs.msdn.com/nickmalik/archive/2007/08/12/eda-avoiding-coupling-on-the-name.aspx">EDA: Avoiding coupling on the name</a> he describes additional &#8220;handshakes&#8221; to be used to avoid the following problems:</p>
<blockquote><p>
Let&#8217;s say I have a system to handle a call center for financial services or telco.  When a customer calls on the phone and asks to be enrolled in &#8220;Heavily Advertised Program ABC,&#8221; there may need to be three or four systems that interact to make that real.</p>
<p>&#8230;</p>
<p>Harry asks me to consider using a &#8216;logical name&#8217; of the receiver.  The sender contacts a logical end point, the addressing infrastructure turns that into a physical end point, and we still have decoupling.  </p>
<p>Honestly, I like it but I think it is insufficient.  What if we need to contact 20 downstream systems in a complex workflow, but I don&#8217;t want a single &#8220;orchestration coordinator&#8221; to be a bottleneck (or single point of failure).  I don&#8217;t want to hand the orchestration off from my app to a central orchestration hub.
</p></blockquote>
<p>Let me propose a different approach.</p>
<p>When we use SOA/EDA (the same thing as far as I&#8217;m concerned), the top-level building block used is the Service. A service may make use of a number of existing systems to perform its work. The business-level events that we publish (and subscribe to) are done by the service, not the existing systems.</p>
<p>If there&#8217;s any orchestration/workflow that needs to be done as a result of a service receiving an event, it is done entirely internal to that service. Inter-service orchestrations don&#8217;t really exist, as in there is no orchestration coordinator that is not in a service. And the orchestration coordinators within a service don&#8217;t touch other services&#8217; back-end systems &#8211; if anything, they publish other business level events.</p>
<p>Be aware: when just starting out on an SOA, you&#8217;ll find that multiple Services make use of the same backend systems. This may be necessary, but not a desirable state to stay in for too long since it embodies the most insidious and invisible kind of inter-service coupling there is.</p>
<p>I want to go back to Nick&#8217;s original question:</p>
<blockquote><p>So what if no one picks the message up?  Is that an error? </p></blockquote>
<p>The answer is mu.</p>
<p>If a service publishes a business-event (message) and no other services currently care, that&#8217;s fine. It&#8217;s not an error. Actually, you&#8217;d probably have some kind of infrastructure &#8220;queue&#8221; where messages that haven&#8217;t been received more than X time get sent to, so that the event isn&#8217;t &#8220;lost&#8221;. On the other hand, within a service &#8211; if an existing system sends out a message that <i>needs</i> to arrive at another system, and that message doesn&#8217;t arrive or isn&#8217;t picked up &#8220;in time&#8221;, that is an error.</p>
<p>This is one of the advantages SOA brings to the table in terms of EDA (again, the same as far as I&#8217;m concerned). You get simple messaging semantics between services, while within the &#8220;sphere of control&#8221; of a service you need, and more importantly can do more complex messaging and orchestration.</p>
<p>Bottom line: you need higher abstractions than your existing systems to employ EDA effectively.</p>
<p>You might also want to check out my podcast on this topic: <a href="http://udidahan.weblogs.us/2006/06/13/podcast-soa-esb-and-events-no-20/">SOA, ESB, and Events</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udidahan.com/2007/08/16/dont-eda-between-existing-systems/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BPM orchestrating services which expose legacy &#8211; bollocks!</title>
		<link>http://www.udidahan.com/2007/05/07/bpm-orchestrating-services-which-expose-legacy-bollocks/</link>
		<comments>http://www.udidahan.com/2007/05/07/bpm-orchestrating-services-which-expose-legacy-bollocks/#comments</comments>
		<pubDate>Mon, 07 May 2007 21:50:47 +0000</pubDate>
		<dc:creator>thesoftwaresimplist</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Scalability]]></category>

		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/05/07/bpm-orchestrating-services-which-expose-legacy-bollocks/</guid>
		<description><![CDATA[So many gems in Steve Jones&#8217; recent post SOA isn&#8217;t about technology.

business process isn&#8217;t everything.
one interface = one process = what a load of crap interfaces you have.
&#8230; with &#8220;services exposing legacy and BPM orchestrating services&#8221;. Its pretty amazing how this view just happens to match the product vendors stacks&#8230;
Its bollocks
BPM as the language of [...]]]></description>
			<content:encoded><![CDATA[<p>So many gems in Steve Jones&#8217; recent post <a href="http://service-architecture.blogspot.com/2007/05/soa-isnt-about-technology.html">SOA isn&#8217;t about technology</a>.</p>
<blockquote><p>
business process isn&#8217;t everything.</p>
<p>one interface = one process = what a load of crap interfaces you have.</p>
<p>&#8230; with &#8220;services exposing legacy and BPM orchestrating services&#8221;. Its pretty amazing how this view just happens to match the product vendors stacks&#8230;</p>
<p>Its bollocks</p>
<p>BPM as the language of business is, IMO, snakeoil.</p>
<p>Starting with BPM is as silly as starting with WSDL.
</p></blockquote>
<p>I&#8217;ve talked about the <a href="http://udidahan.weblogs.us/2006/08/08/podcast-bpm-vs-soa/">BPM, SOA divide in this podcast</a>, but from a more solutions architecture perspective. As well as <a href="http://udidahan.weblogs.us/2006/10/24/podcast-esb-msmq-services-as-the-interface-to-business-processes-and-bpm-ooa/">this podcast on &#8220;Services as the interface to business processes&#8221;</a>.</p>
<p>The main problem I have with BPM is that there&#8217;s this expectation that the steps of each process will actually be implemented the way that they were drawn. The way the business views its processes is, first of all, much different from the way the BPM analysts do. Second of all, who said these analysts have the ability to design systems that will be functionally correct, reliable, scalable, and all that. So, why in the name of X are we giving them tools to automate that? Software architects don&#8217;t even have these kinds of tools, although they do have the requisite knowledge.</p>
<p>I&#8217;m with Steve. Bollocks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udidahan.com/2007/05/07/bpm-orchestrating-services-which-expose-legacy-bollocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Podcast] ESB &amp; MSMQ, Services as the interface to business processes, and BPM &amp; OOA</title>
		<link>http://www.udidahan.com/2006/10/24/podcast-esb-msmq-services-as-the-interface-to-business-processes-and-bpm-ooa/</link>
		<comments>http://www.udidahan.com/2006/10/24/podcast-esb-msmq-services-as-the-interface-to-business-processes-and-bpm-ooa/#comments</comments>
		<pubDate>Wed, 25 Oct 2006 04:55:55 +0000</pubDate>
		<dc:creator>thesoftwaresimplist</dc:creator>
				<category><![CDATA[Ask Udi Podcast]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[MSMQ]]></category>

		<guid isPermaLink="false">http://wp_630.weblogs.us/archives/340</guid>
		<description><![CDATA[<a href="http://www.ddj.com/dept/architect/193303495">Get it here.</a>
<br/><br/>
Udi answers questions about implementing ESB capabilities on top of Microsoft's message queuing technology MSMQ, as well as dispels some myths around viewing services as the interface to business processes. Finally, he ties it all up with a critique on using object oriented analysis for BPM.
<br/><br/>
Resources 
<br/><br/>
1. Article on <a href="http://www.intelligententerprise.com/showArticle.jhtml?articleID=193104592">Microsoft's solution for ESBs</a><br/>
2. <a href="http://blogs.msdn.com/rjacobs/archive/2006/10/05/Patterns-and-Anti_2D00_Patterns-for-SOA.aspx">Patterns &#038; Anti-Patterns for SOA webcast</a><br/>
2. <a href="mailto:podcast@UdiDahan.com">Ask Udi a question on SOA</a><br/>
3. <a href="http://syndication.sdmediagroup.com/feeds/public/cmp_podcast_udi.xml">Subscribe to the Ask Udi podcast</a>
<br/><br/>
Enjoy.]]></description>
			<content:encoded><![CDATA[<p>Udi answers questions about implementing ESB capabilities on top of Microsoft&#8217;s message queuing technology MSMQ, as well as dispels some myths around viewing services as the interface to business processes. Finally, he ties it all up with a critique on using object oriented analysis for BPM.</p>
<p><u>Resources </u></p>
<p>1. Article on <a href="http://www.intelligententerprise.com/showArticle.jhtml?articleID=193104592">Microsoft&#8217;s solution for ESBs</a><br />
2. <a href="http://blogs.msdn.com/rjacobs/archive/2006/10/05/Patterns-and-Anti_2D00_Patterns-for-SOA.aspx">Patterns &amp; Anti-Patterns for SOA webcast</a><br />
2. <a href="mailto:podcast@UdiDahan.com">Ask Udi a question on SOA</a><br />
3. <a href="http://syndication.sdmediagroup.com/feeds/public/cmp_podcast_udi.xml">Subscribe to the Ask Udi podcast</a></p>
<p>Get it via the Dr. Dobb&#8217;s site <a href="http://www.ddj.com/dept/architect/193303495">here.</a></p>
<p>Or download directly <a href="http://www.dobbsprojects.com/media/newengine/dynamp.php/061017ud01.mp3?site=sdmg&#038;affiliate=ddj&#038;target=%2Fdept%2Fwebservices%2F&#038;title=ESB+and+MSMQ+Service&#038;artist=Ask+Udi+Podcast&#038;album=Dr.+Dobb%27s+Portal&#038;year=2006&#038;podcast=061017ud01.mp3">here</a>.</p>
<p>Want more? Go to the <a href="/ask-udi/">&#8220;Ask Udi&#8221; archives</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udidahan.com/2006/10/24/podcast-esb-msmq-services-as-the-interface-to-business-processes-and-bpm-ooa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.dobbsprojects.com/media/newengine/dynamp.php/061017ud01.mp3?site=sdmg&amp;affiliate=ddj&amp;target=%2Fdept%2Fwebservices%2F&amp;title=ESB+and+MSMQ+Service&amp;artist=Ask+Udi+Podcast&amp;album=Dr.+Dobb%27s+Portal&amp;year=2006&amp;podcast=061017ud01.mp3" length="7403621" type="audio/mp3" />
		</item>
		<item>
		<title>[Podcast] BPM vs. SOA</title>
		<link>http://www.udidahan.com/2006/08/08/podcast-bpm-vs-soa/</link>
		<comments>http://www.udidahan.com/2006/08/08/podcast-bpm-vs-soa/#comments</comments>
		<pubDate>Tue, 08 Aug 2006 12:54:37 +0000</pubDate>
		<dc:creator>thesoftwaresimplist</dc:creator>
				<category><![CDATA[Ask Udi Podcast]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[Master Data Management]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://udidahan.weblogs.us/archives/412</guid>
		<description><![CDATA[Udi analyzes the relationships between Master Data Management, Service Oriented Architectures and Business Process Management.
Get it via the Dr. Dobb&#8217;s site here.
Or download directly here.
Want more? Go to the &#8220;Ask Udi&#8221; archives.
]]></description>
			<content:encoded><![CDATA[<p>Udi analyzes the relationships between Master Data Management, Service Oriented Architectures and Business Process Management.</p>
<p>Get it via the Dr. Dobb&#8217;s site <a href="http://www.ddj.com/dept/webservices/191801855">here</a>.</p>
<p>Or download directly <a href="http://www.dobbsprojects.com/media/newengine/dynamp.php/060808ud01.mp3?site=sdmg&#038;affiliate=ddj&#038;target=%2Fdept%2Fwebservices%2F&#038;title=BPM+vs.+SOA&#038;artist=Ask+Udi+Podcast&#038;album=Dr.+Dobb%27s+Portal&#038;year=2006&#038;podcast=060808ud01.mp3">here</a>.</p>
<p>Want more? Go to the <a href="/ask-udi/">&#8220;Ask Udi&#8221; archives</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udidahan.com/2006/08/08/podcast-bpm-vs-soa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.dobbsprojects.com/media/newengine/dynamp.php/060808ud01.mp3?site=sdmg&amp;affiliate=ddj&amp;target=%2Fdept%2Fwebservices%2F&amp;title=BPM+vs.+SOA&amp;artist=Ask+Udi+Podcast&amp;album=Dr.+Dobb%27s+Portal&amp;year=2006&amp;podcast=060808ud01.mp3" length="3104278" type="audio/mp3" />
		</item>
	</channel>
</rss>

