Developer Diary – The Golden Thread
[This is the 4th article in a series of diary entries covering my experiences with Project MEBA]
The past couple of weeks on Project MEBA have been quite…challenging. Without getting into the details of those challenges (not important for this blog), I’ll just say that with the news of the economy and cut backs taking place across the industry, Project MEBA is fully funded throughout the course of my stay on the project (mid-April) and we’re moving ahead full steam. With that…let me tell you where we’re at.
In my last Developer Diary entry (Researching the Problem Domain), I laid out the work we were doing to try and understand the different B2B standards and specifications that exist. Specifications such as UMM, ebXml, RosettaNet, etc. What we’re trying to do with Project MEBA is to take these various specifications, where most of them are derived off of UMM, and build a system where someone skilled in these specs can plug-in and ramp-up quickly with a B2B implementation utilizing Windows Azure as the underlying infrastructure and the Azure Services Platform as the pieces to help orchestrate the business processes.
From the UMM Development Site, we are taking their Order From Quote example and using it as a golden thread business process scenario for our proof of concept. I have taken the time over the past couple of weeks to try and understand the UMM modeling language and nuances to interpret the business process. We’re now in the throws of getting down to the implementation. Here’s what we’re looking at…
It’s a simple process really. You have a Buyer who requests a quote from a Seller. This is one of the Business Activities in this Business Process. If a quote is provided, the Buyer can make the decision to execute the Place Order activity with the Seller. I’m over simplifying things here because there are a number of decisions that need to take place. The Seller may have rules on their end to determine if they can provide this Buyer a quote. What if this Buyer is blacklisted from the Seller because of bad dealings in the past? What if the Seller no longer carries the item the Buyer is requesting a quote on? When the Buyer submits a Place Order request, the Seller should request some sort of credit check if a credit line isn’t already set up in the first place. And so on.
If we drill into the process a little further, we’ll see the Business Activities break out into two different workflows:
Request For Quote Workflow
Here we see a little more detail into the Request for Quote activity. For instance, the Buyer sends the request out as a message formed as a QuoteRequestEnvelope. The Seller has an endpoint defined as Calculate Quote that will except the message QuoteRequestEnvelope and send a response back out in the form of a QuoteEnvelope message. There is a decision point after the Buyer receives the QuoteEnvelope. If a quote was provided, we have “BussinessSuccess”. If the quote was refused, “BusinessFailure”.
Obviously depending on the business, additional actions may be required on the part of determine why there was a “BusinessFailure” but this particular UMM doesn’t define that. it’s not part of the standard. What’s defined is the standard and it’s what the parties agree to. “If we agree to participate in this business process, with me playing the part of the Buyer and you playing the part of the Seller, I agree to submit a Request for Quote by sending you a QuoteRequestEnvelope…”. That’s what the model defines. An agreed to business transaction.
Process Order Workflow
Our next activity in the Request Order From Quote business process is the Process Order activity. Once again, more detail into the process. What we’re really seeing here is a simple Request/Response pattern of messages traversing back and forth between the two parties. It’s important to note that in the world of UMM, this definition doesn’t designate an implementation. It’s defining the process. These “messages” could be simple forms passed back and forth by fax – BUT those forms need to adhere to an agreed upon format of QuoteRequestEnvelope and QuoteEnvelope.
In our case, we’re thinking implementation. We’re thinking Azure. More specifically, we’re thinking of how the infrastructure supported by Windows Azure along with .NET Services can help us build a MEBA implementation.
Up next… jumping into our implementation.






Dave Bost is a Technical Evangelist for Microsoft and co-host of the Thirsty Developer Podcast.