BizTalk Bootcamp - Day 3b Diary: Nuggets (Orchestrations)

Continued from http://dotnet.org.za/willy/archive/2008/05/14/biztalk-bootcamp-day-3a-diary-nuggets-lab.aspx. We continued with Orchestrations.

After today my brain really hurts suffering from absolute information overload with John not slowing down throughout the day ... anyway here we go with the notes on the theory and an orchestration lab:

Orchestration Theory

Orchestration Types
Types include:
  • Message Type, defining messages used by the process
  • Port Type, defining port operations used across multiple ports
  • Correlation Type, which defines the routing mechanism and dispatching of messages
  • Role Link Type (aka Service Link), defining logically consistent group of ports
  • Orchestration Variables, which are instances of types

BizTalk Host

  • Represents runtime processes into which we deploy services, pipelines, etc.
  • One host can have one or more instances
  • There is a limit of 20 threads per host
  • Multiple hosts are useful to:
    • Separate receive, processing (orchestration), sending
    • Define different host identities needed
Orchestration Persistence Points

Defines points within an orchestration where persistence is written out to the MessageBox.

Deterministic persistence points occur with:

  • Send shape within a non-atomic scope
  • At the end of each transactional scope
  • When starting a new orchestration instance
  • At debug break points
  • At system shutdown
  • With Orchestration dehydration
Immutability
  • Messages received by an orchestration are immutable, which means that a new message must be created when changes are needed.
  • Changes to messages can only be done within construct shapes.
Scope
  • Scope is a framework for organising actions, acts as a container for variables and is used for exception handling. IN fact, if you know C#, you can relate the orchestration scope with the {}.
  • Scopes can be nested up to 44 levels deep.
Correlation

Correlation is a messaging pattern matching incoming messages to the appropriate orchestration instance.

Transactions

BizTalk orchestrations support:

  • Atomic transactions which are ACID (atomic, consistent, isolated, durable)
  • Long running transactions which are CD (consistent, durable)

The following extracts shows the properties of the transactions for none, long running and atomic:

image 

Orchestration Lab

Scenario

Serial uniform convoy that will gather all received messages into a single variable. You will then execute the XmlAssembler send pipeline component to create a single aggregated message.

Main Steps
  1. Build a serial convoy that will correlate line item messages by supplier information
    1. Create Orchestration AggAggregateOrders
    2. Create Orchestration Variables
    3. Create Orchestration Messages
    4. Create a Property Schema for Supplier Correlation
    5. Design a Uniform Convoy
  2. Configure the orchestration to collect multiple messages, and then send the messages to a pipeline, which will create a single aggregate message.
    1. Reference the Pipeline Assembly
    2. Define the Orchestration Process
    3. Call a Pipeline from the Orchestration
  3. Configure the AggregateOrders orchestration to receive XML messages from LineItemsIn and send the results to the SupplierOrdersOut folder. 
Illustration - Orchestration

 image

Illustration - Send Pipeline

image

Schemas

Schema - Supplier Correlation Property Schema

image

Schema - Line Item

Note that supplier element has been promoted to the property schema.

image

Input Message Example

image

Output Message Example

image

Well, it is 3AM ... need some sleep before John starts the next Tsunami of information.

Published Thursday, May 15, 2008 2:10 AM by willy

Comments

# BizTalk Bootcamp - Day 4 & 5 (Adapters, Business Rules Engine, …)

Friday, May 16, 2008 4:14 PM by Willy-Peter Schaub's Cave of Chamomile Simplicity

Event planning and meetings with community leads resulted in me getting home very, very late on Thursday

Leave a Comment

(required) 
(required) 
(optional)
(required) 

Enter the numbers above: