Microsoft Southridge video scenario recently draw my attention, it is fairly complex project, covers a lot aspects & new features in BizTalk 2006. It is also as said ‘real solution’ by Microsoft. I’ve spent some time this week, trying to dig some information From this scenario.
Where is it
Southridge Video scenario is with BizTalk 2006 release SDK, default location is C:/Program Files/Microsoft BizTalk Server 2006/SDK/Scenarios/BPM. Microsoft has also includes its documentation in BizTalk help file. I recommend download their CHM version which is much easier to navigate.
Overview Workflow
An order broker
1. Accept order messages From web
2. Do housekeeping tasks
3. Distribute order to order managers via Message box Direct Bound
An order manager
1. Handles order to order processing stage via inverse party bound port
2. Process order update with interrupt pattern
An order process stage
1. Handles concrete order processing
Tips, Tricks
Direct Binding
Direct binding technique is heavily used through the entire solution. Refer to Kevin Lam’s blog if you are not familiar with this technique.
Message Types
The solution defines messages by:
· XSD schema
· Serializable .NET classes
· Multipart message type
This is defined in orchestrations. Multipart message contains routing information and message business data. This routing information is then promoted and used as subscription filter in the processing stages.
Configuration
The solution uses SSO as configuration source. It uses a timer to keep update of any configuration changes. The helper is using singleton design pattern to assure single instance across BizTalk service instances.
Retry Handling
A component is designed to dynamically load the assembly and invoke objects.
Customized Exception
The solution uses Application derived classes to differentiate application exceptions (i.e. interrupt) with system exceptions (i.e. delivery notification)
Patterns
Recipient List
Processing stages are recipient lists of order manager. Note that OrderManager uses a request-response port while communicating with order process. The request port is using inverse party bound direct bound with processing stages. The response port is using a dynamic direct bound technique which essentially correlates with OrderManager without use of correlation.
(To be continued)