So You Want To Write An Orchestration?
Is there a BizTalk Server 2006 orchestration in your future? This post is a modest attempt to catalog some of the many useful tidbits of information out on the web. It will evolve over time.
-
Legend
-
blog = blog post
-
core = BizTalk Server 2006 core documentation hosted on MSDN.
-
lib = non-core docs at Microsoft
-
other = general resource out on the vast interweb
-
wp = BizTalk Server 2006 whitepaper
Still not sure about the legend but since I used one for the map content, I'll use it here. And now for the material:
-
For the Newby
-
About Orchestrations (
core) - basic overview topic describing what an orchestration is along with its basic components. It includes many relevant child topics, some of which are called out below; others are less important but worth a look for the newby.
-
The Orchestration Design Surface (
core) - a quick shake-down of the orchestration development UI. Nice to see all of the features so you know they are there if you need them.
-
Steps in Orchestration Development (
core) - add shapes, define schemas, define ports, bind Send and Receive shapes to ports, assign or transform data between messages, identify custom components, use orchestration variables to manage data, build and test. Oh, pay attention to the note: "If the Copy Local property of the referenced assembly is set to True, Orchestration will not be able to pick up any changes made to the external assembly after the initial add reference takes place in BizTalk project." Learn it. Know it.
Live it.
-
-
How To Build an Orchestration (core) - with related information on handling
Build Errors in the Task list. Building is pretty simple; understanding and resolving errors can be difficult for the newby. One of the more common errors is "Compiler asks if you are missing an assembly reference" -- it can ask, but you don't have to tell it. Advice is given in the topic. For those who want a peek, one potential solution is to add a reference to the missing assemblies your project requires.
-
Security Considerations for Developing Orchestrations (
core) - contains one note, "avoid subscriptions from untrusted messages". This will ensure that low-privilege messages do not initiate an orchestration instance that could potentially create subscriptions based on the message content or context.
-
Orchestration Dehydration and Rehydration (
core) - parent topic defines dehydration and rehydration; child topics go into the details. Knowing what the engine does is critical to designing performant orchestrations.
-
Debugging Orchestration Runtime Errors (
core) - explores different problems and their solutions in a question/answer format. For example, "Why do I get errors when I attach a dynamic send port to a logical port?" Answer: a dynamic port gets an address only; it does not inherit the other information associated with the logical port.
-
-
-
Managing Orchestrations (
core) - contains topics that describe how to manage your orchestration once it has been deployed. Typical tasks include working with bindings, enlisting/unenlisting, stop/start/suspend/resume and other operations. Review this before you begin development so you have an idea of the kind of deployment and configuration tasks your solution will need.
-
FAQ For BizTalk Orchestrations (
wp) - features a collection of frequently asked questions about orchestrations. This is aimed at all audience levels but makes especially great reading for the newby. What better way to discover patterns, what works, what doesn't, pitfalls, and other helpful nuggets prior to writing your first orchestration? Take a look.
-
For Everyone
-
How To Avoid Throttling Correlated Messages (
core) - this topic is chock full of throttling advice goodness. A sneak peek: "A lot of developers think about the receive locations for a solution as receiving both activation and correlated messages for the solution through the same port. This is natural as it minimizes the number of addresses that message senders need to keep track of. However, with the addition of throttling in BizTalk Server 2006, there can be advantages to thinking about the stream of activation messages and the stream of correlated messages separately when it comes to throttling." Take a look.
-
Persistence and the Orchestration Engine (
core) - discusses persistence points, serialization, system shutdown, and recovery behavior. Points out interesting points about .NET class requirements for serialization (need to be marked Serializable) and COM objects (If you want to call a COM object outside of an atomic transaction, you must wrap the COM object in a .NET object that is .NET serializable and knows how to persist and restore the state of the COM object).
-
-
Measuring Maximum Sustainable Tracking Throughput (
core) - as the topic says, once you have deployed a solution you should track and monitor the system to understand how it is performing, what exceptions can occur and why, and the current state of business processes (orchestrations, etc). Describes DTA Tracking and BAM tracking with great overviews and architectural diagrams.
-
-
-
Samples
-
Videos, etc
-
What's New in BizTalk Server (
other) - virtual labs of some of the key features of BizTalk Server 2006. There are also labs for 2004 that include orchestration as well as other content that still applies to the 2006 version.
Do not go gentle into that BizTalk orchestration. Rage, rage against the suspension of a message.
Sorry Dylan.