5,702,067 members and growing! (16,280 online)
Email Password   helpLost your password?
Enterprise Systems » Microsoft BizTalk Server » General     Intermediate

Keep The Orchestration Simple (KTOS) - A BizTalk Pattern

By Naveen Karamchetti

This article describes a pattern wherein which the Orchestration is independent of the transformation map.
Windows, .NET, Visual Studio, Dev

Posted: 15 Apr 2006
Updated: 27 Apr 2006
Views: 21,874
Bookmarked: 15 times
Announcements
Loading...



Search    
Advanced Search
Sitemap
5 votes for this Article.
Popularity: 2.30 Rating: 3.29 out of 5
2 votes, 40.0%
1
0 votes, 0.0%
2
0 votes, 0.0%
3
1 vote, 20.0%
4
2 votes, 40.0%
5
Note: This is an unedited contribution. If this article is inappropriate, needs attention or copies someone else's work without reference then please Report This Article

Sample Image - Architecture.png

Introduction - KISS vs KTOS

If KISS stands for "Keep It Simple Stupid", then KTOS stands for "Keep The Orchestration Simple".

Designing a robust and extensible orchestration is the key to any successful BizTalk implementation. This article describes a simple pattern which frees the Orchestration from a Transform Shape.

Scenario and the problem to be solved

Consider a scenario where a Purchase Order (PO) needs to be processed and a Purchase Order Acknowledgement (POAck) needs to be transmitted. Every incoming PO has a particular format which needs to be transformed into, an internal PO format, in order to be able to process it. Similarly every outgoing POAck has a different format which needs to suit the receiver. The problem is how to add new incoming PO and outgoing POAck formats to the system once the system is operational.

The BizTalk Solution

The BizTalk Orchestration should abstract itself from any other external schemas. The Orchestration has knowledge of only one schema known as "UniversalPO". All incoming external PO schemas need to be mapped into this UniversalPO and similarly all the outgoing PO's need to be mapped into appropriate POAck.

The solution has been divided into three main parts, the PurchaseOrder project is the core of the solution. The PO_CompanyA references the PurchaseOrder project and the two maps are added, one transforms the external PO into Universal_PO and another transforms the Univeral_PO into POAck as required by the external system. The Orchestration diagram below, presents a better picture.

Main Orchestration

ProcessPO.PNG

This Orchestration processes the PO by calling an external .NET component known as BizRules which is present in the Global Assembly Cache (GAC).

BizRules .NET Component

The class diagram for the BizRules.NET component is shown below...

CD.PNG

Send Port Configuration

SendPort.PNG

The transformation map specified in the "Send" port, converts the "UniversalPO" into "POAck".

Receive Port Configuration

ReceivePort.PNG

The transformation map specified in the "Receive" port, converts the "PO_A" into "UniversalPO".

Solution Explorer

SolutionExplorer.PNG

Follow the steps, to Add a new PO format

In order to support a new PO format after the BizTalk solution is deployed, the following needs to be done...

  • Add the new external, incoming and outgoing schemas in a new Project.
  • Two maps are required to be added, one for converting the "external PO" into "internal PO" and another for converting the "internal PO" into "POAck" as required by the external system.
  • Adding the maps in the new Receive and Send Ports.

Summary

In this article we have seen how to structure your BizTalk artifacts in order to ensure painless (post-deployment) maintanence of the BizTalk solution. Generally speaking, being aware of the dependencies of the project will ensure, avoidance of re-compilation and re-deployment.

Takeaways

  • All promoted properties and distinguished fields must be initialized with default values in the schema.
  • Generally all schemas must be placed in a separate project/DLL and all related orchestrations must also be placed in a separate project/DLL.
  • It is generally observed, in many cases that map transformations are done within the Orchestration, this is unnecessary and same can be achieved in the send and receive ports as demonstrated in the article.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Naveen Karamchetti


Naveen Karamchetti has done his Masters (M.S.) in Software Engineering from B.I.T.S, Pilani and is based out of Fremont, CA.
The author has more than 8.5 yrs of experience in the IT industry, has started his career
starting from the good old days of using a Unix, Tcl/tk. The author has been associated with
several companies based out of Silicon Valley, California.

The author has won several programming awards within the organizations worked and is well-recognized. The author has also worked for Microsoft based at Redmond.

Hobbies include training, mentoring and research. Spends his free time travelling in the BART (Bay Area Rapid Transit) in Fremont, CA.
Occupation: Software Developer (Senior)
Location: United States United States

Other popular Microsoft BizTalk Server articles:

Article Top
Sign Up to vote for this article
You must Sign In to use this message board.
FAQ FAQ Noise ToleranceSearch Search Messages 
 Layout  Per page   
 Msgs 1 to 5 of 5 (Total in Forum: 5) (Refresh)FirstPrevNext
Generalhow to configure send port for more than one partnermemberAlaaJarrah13:34 28 Apr '08  
Generalsimple but complicate thingsmemberBogdan Nedelcu21:25 17 Apr '06  
GeneralRe: simple but complicate thingsmemberNaveen Karamchetti22:29 17 Apr '06  
GeneralRe: simple but complicate thingsmemberBrad Friedlander5:08 20 Apr '06  
GeneralRe: simple but complicate thingsmemberjmicksch11:35 26 Apr '06  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 27 Apr 2006
Editor:
Copyright 2006 by Naveen Karamchetti
Everything else Copyright © CodeProject, 1999-2008
Web15 | Advertise on the Code Project