If you've been reading this column for the past few weeks, you've already read a lot about Microsoft BizTalk Messaging. BizTalk Messaging is one of two Microsoft BizTalk Server functions. It serves as the integration piece, letting businesses easily transmit data and transform that data into the proper format for the business function. This step is the first one in integrated communication. However, for true communication, you also need process. Enter Microsoft BizTalk Orchestration (BTO). BTO provides functionality for creating and orchestrating business processes that span time, organizations, applications, and people.

Today, business processes are tightly integrated with implementation. Developers need to understand the entire process to incorporate the logic into their code. The process logic is tightly bound to the implementation code and often duplicated across multiple programs. In this environment, it's difficult to change a process because doing so directly affects the implementation. To execute any change, a programmer has to get involved, which is extremely inefficient.

With BTO, you can finally separate the implementation code from the process using some simple but powerful tools. BTO uses a standard installation of Microsoft Visio as its front end. In Visio, using BTO's flowchart view and a select set of flowchart shapes, a business analyst can create the business-process flow. He or she doesn't need to know anything about each piece's implementation. A developer then uses two other BTO views: the implementation view and the data flow view. The developer uses the implementation view to bind process activities to implementation shapes such as Microsoft Message Queue Server (MSMQ) queues, COM+ components, Windows Script Host (WSH) scripts, and, of course, BizTalk Server messaging services. The developer then uses the data flow view to flow data in and out of the implementation shapes.

When the visual business process model is complete and the flow chart is saved, Visio compiles the document into XLANG—a new XML-based language, created specifically for describing business processes. The BTO engine executes the XLANG code at runtime.

A significant advantage of BTO is the flexibility it provides. Now, business units, not IT, can make process changes. A business analyst can make a change to the implementation view and recompile the document—no more delays waiting for a developer to be freed up from another project.

Another exciting BTO feature is the ability to wrap loosely coupled business processes—which can span days, weeks, or months and multiple participants—into a single transaction. For example, one process might involve sending multiple purchase orders to a variety of trading partners and receiving shipping acknowledgements from each. With BTO, this process can be wrapped into a transaction so that when all the trading partners send acknowledgements, the system sends an email message to the customer. BTO also lets you include compensating code to handle transaction failures so that, for example, if a trading partner fails to respond in time, the system can send an email message to customer service for follow up. A business analyst would define this process in the implementation view, and no one would need to hand-code a solution that handles the transaction or the transaction failure.

Of course, to keep track of all the processes and transactions, you need to store information about each one. With BTO, the state of all running processes is persisted in an open XML schema and can be stored in any XML-compatible database, which allows simple queries to report on the state of processes.

BTO is an exciting new technology, and I've only scratched the surface of its features. For more information, check out the Microsoft BizTalk white paper.