The Easiest Way to Try and Learn BizTalk: Virtual Labs

Microsoft has a great way to experiment with BizTalk Server. By using a virtual online environment, you can login to a session on remotely located server and use BizTalk without any of the complexities of setting up an environment yourself.

In terms of getting up to speed, there is no faster way to do it. Labs are guided, well structured and guided. Each lab builds on the last to give a user top to bottom exposure of BizTalk Server. All labs are in English and last about 90 minutes. If your session goes longer than 90 minutes, you can certainly extend this time.

You can give the BizTalk 2006 Virtual Labs a try at this address:
http://www.microsoft.com/biztalk/en/us/virtual-labs.aspx

Here is a list of the current labs available, 26 in total!
  • MSDN Virtual Lab Express: What's New in BizTalk Server 2006
  • MSDN Virtual Lab: Microsoft BizTalk Server 2006 Working with Schemas
  • MSDN Virtual Lab: Microsoft BizTalk Server 2006 Working with Maps
  • MSDN Virtual Lab: Working with Pipelines
  • MSDN Virtual Lab: Processing Flat Files
  • MSDN Virtual Lab: New Features for Processing Flat Files and Batch Messages using BizTalk Server 2006
  • MSDN Virtual Lab: Integration with POP3 and SharePoint and Routing Failed Messages
  • MSDN Virtual Lab: Creating an Orchestration
  • MSDN Virtual Lab: Implementing Transactions
  • MSDN Virtual Lab: Integrating Business Rules in Microsoft BizTalk Server 2006
  • MSDN Virtual Lab: Enabling Business Activity Monitoring
  • MSDN Virtual Lab: New Features for Deploying and Managing a BizTalk Application in Microsoft BizTalk Server 2006
  • MSDN Virtual Lab: WCF Introduction - Building a WCF Service
  • MSDN Virtual Lab: Using the WCF Adapters in BizTalk Server 2006 R2
  • MSDN Virtual Lab: Using the BizTalk Server 2006 R2 WF and WCF BAM Interceptors
    MSDN Virtual Lab: Building a Windows Communication Foundation (WCF) Adapter using the WCF LOB Adapter SDK
  • MSDN Virtual Lab: Processing EDI messages with BizTalk Server 2006 R2
  • MSDN Virtual Lab: Sending EDI Messages with BizTalk Server 2006 R2
  • MSDN Virtual Lab: Building an RFID application with BizTalk Server 2006 R2
  • MSDN Virtual Lab: Integrating Legacy Data with BizTalk Applications using BizTalk Adapters for Host Systems
  • MSDN Virtual Lab: Integrating Legacy Data with .NET Framework applications using Host Integration Server 2006
  • MSDN Virtual Lab: Integrating Legacy Applications with BizTalk Applications using BizTalk Adapter for Host Systems
  • MSDN Virtual Lab: Integrating Legacy Applications with .NET Framework applications using Host Integration Server 2006

Tracking Events In Real Time Using BizTalk 2006

Recently I was tasked with creating a solution within BizTalk 2006 to track real-time events. The scenario did not sound unique and with the RFID functionality built into BizTalk 2006 R2, the situation seems likely to become more pervasive. Here is a stripped down sample of the solution that I arrived at Sample Timer Application

The Problem:

In this sample scenario we have the following set-up:

  • We have a warehouse in Death Valley, CA where we store pallets of ice cream. Some areas of the warehouse are refrigerated, some are not. The areas that are not refrigerated have an average temperature of over 100 degrees Fahrenheit. Ice Cream has a life expectancy of 20 minutes when left outside of a refrigerated area.
  • Pallets are equipped with RFID tags that identify the pallet by a unique Pallet ID.
  • Gateways between refrigerated areas and un-refrigerated areas are equipped with RFID readers. When an ice cream pallet passes through a gateway a message is sent to BizTalk indicating a change in status between refrigerated/exposed.
  • The external loading dock door is also equipped with an RFID reader. Passing through this portal indicates that the pallet has left the warehouse.
  • We need to be able to send an alert to the warehouse foreman to alert him when a pallet has been left exposed for 15 minutes so that he can take action before the pallet is ruined.

Based on this scenario the following requirements were compiled:

  • When a message is received indicating that a pallet has changed status from refrigerated to exposed, a 15 minute timer should be started.
  • If the pallet is returned to refrigerated status or leaves the warehouse on a truck the timer should be terminated to prevent false alerts from executing.
  • If the timer expires without being terminated, an alert message should be generated by the system.

In order to solve this problem the following design was constructed:

Timer Diagram

Trigger messages are received from the Message Box (through direct binding) by the Timer Orchestration. Depending on the trigger type (Create, Reset, or Terminate) a corresponding stored procedure is called via a SQL send port. Trigger messages contain the following fields:

  • Timestamp - Timestamp of the message. In our solution, this timestamp is used as a base time in the following formula. BaseTime + TimerLength = TimerEndTime. TimerEndTime is the timestamp contained in the database that indicates when a timer should expire.
  • InterfaceName - Namespace of the trigger type. Used for routing.
  • Action - The action we are trying to perform (CreateTimer, ResetTimer, or TerminateTimer).
  • SubAction - Unique name for this timer.
  • Params - Collection of Key-Value pairs for future processing. (Note: the Create and Reset Timer Triggers require a TimerLength key with an integer (timer length in minutes) in order to process. Any number of Param nodes can be added to this collection. (e.i. in our example brand, flavor, and expiration date could be included, to name a few).

SQL send ports are used to execute one of the three actions on the database:

  • Create - Creates a record in the database. Uses spCreateTimer stored procedure.
  • Reset - Updates a specified record in the database to give it a new TimerEndTime, if the timer has not expired. Uses spResetTimer stored procedure.
  • Terminate - Updates a specified record in the database to flag it as expired. Uses spTerminateTimer stored procedure.

A SQL receive location is set up in BizTalk to poll the results of the spGetExpiredTimers stored procedure. This stored procedure aggregates timers from the database whose TimerEndTime timestamps are in the past. Timers that are flagged as expired are ignored. Timers collected are flagged as expired to prevent duplicate processing.

"BizTalk 2009" Announced

This month, Microsoft has announced the upcoming release of BizTalk Server 2009 coupled with plans for future releases.

Originally the next release of BizTalk was slated to be named BizTalk Server R3 but has been renamed “BizTalk Server 2009”. Microsoft wanted everyone to make sure it was understood that this is a full product release with new and enhanced capabilities and updated platform support for Windows Server 2008, Visual Studio 2008, SQL Server 2008, and the .NET Framework 3.5.

A CTP release is expected by the end of this year. The formal release date is expected to be around June of ‘09.

Microsoft also plans to maintain a rhythm of BizTalk releases every 2 years.