Tuesday, December 27, 2005

gacutil command shortcut

the BIA - Biztalk Intelligence Agency has a very cool trick to shortcut the gacutil command.

Easier way to add a DLL to the GAC

Biztalk Server Interview Answers

on recent days Stephen W Thomas posted on his blog Biztalk Server Interview Questions what a biztalk interview might contain, i´d like to provide the answers to those questions -at least try- gathered from different sources, any comments are welcome:

Development Focused Questions

What is BizTalk? 
for this one i prefer the formal definition provided by webopedia:
"BizTalk Server is Microsoft's central platform for Enterprise Application Integration (EAI) and Business Process Management (BPM) and embodies the integration and automation capabilities of XML and Web Services technologies. BizTalk Server functions as a process execution engine and as a multi-transport hub for messaging and document transformations. It is a Windows Server System product that helps customers efficiently and effectively integrate systems, employees and trading partners"

in addition Microsoft provides a definition as well, What is BizTalk Server 2004?

In BizTalk 2002, schemas were DTD based and allowed Xml Elements to be in any order inside a record using the <Any> keyword.  How is this different in BizTalk 2004?
Biztalk 2004 uses XSD in order to define the schemas, this helps addressing XML syntax, data typing and structured description of types

Dave Beauchemin (MVP) and Stuart Celarier have provided us with the main diferences:

- XML Schemas should be used for new development, unless you have a good reason not to; they are the current W3C specification (May 2001), not DTDs.

- Most XML parsers will read both DTDs and XML Schemas. Of note, however, is that MSXML 4 will not load DTDs asynchronously if you have the NewParser property set to true.

- DTDs are written in SGML (the parent language of XML), whereas XML Schemas are written in XML. Therefore, one could say that unless you are proficient with SGML, Schemas (XSD) are easier to use. - Of note, XDR (XML Data-Reduced) is a Microsoft-only implementation, and should be avoided, again, unless you have a good reason not to (e.g., if you use BizTalk 2001). Otherwise, if you select Schemas, make sure you use XSD.

- The XSD is far more expressive than DTD for document structure, such as being able to express that one element may occur zero, one or two times in a specified context. The DTD structure models are fairly limited.

- The DTD has an extremely weak type system, oriented towards describing textual documents. XSD has a strong type system which is well matched with the programmatic types found in modern programming languages. This, for example, allows the xsd.exe utility from .NET to generate a C# class from an XSD document, or an XSD document from a C# class - extremely handy for sending a class instance across a network as an XML document.

- The DTD grammar is not expressed using XML element and attribute markup, whereas an XSD document is an XML document. That makes programmatic generation or manipulation of an XSD document much easier than that of a DTD document.

- The DTD is not aware of XML namespaces. If you have XML documents which now - or may in the future - use namespaces, then create your metadata in XSD.

What is a Message Type (i.e. BTS.MessageType) and how is it used in BizTalk?
message types are basically message content properties (metadata) used for filter creation on send ports and orchestrations -subscription criteria is queried against this metadata-, these properties are promoted for the messaging engine. on this particular case BTS.MessageType is promoted by the dissasembler pipeline during message parsing and specifies the message type (defined as document schema namespace + document root node)

How do you call a Non-Serializable .Net helper class inside an Expression Shape?
What if the class is Serializable?
the answer to the previous two questions can be read on Mike holdorf's blog

What does the Value Mapping Functoid do?
value mapping and value mapping (flattening)

How do you use Auto Mapping in the BizTalk 2004 mapper?
the following was taken from Microsoft® BizTalk Server 2004 UNLEASHED and explains this capability:
"You can link entire substructures with one mouse-drag operation. If you hold the Shift key down while dragging between two records, the Mapper will create simple links between the records and all subordinate nodes if the content of the source and destination nodes is the same. This is a useful shortcut if you have identical structures contained within differing parent formats. If the two subtrees are slightly different, links will be created automatically only for those nodes with identical names. This can be changed by changing the setting of the grid's Autolink By property"

What is the default mapping for Auto Mapping?
the autolink by Controls how links are automatically generated when linking two records:

- Structure
Links by identical or similar child content structure without regard to node names.
- Node Name Creates automatic links only if two names have the same name.

the default one is Structure

Step-by-step, how do you set up a basic, pure messaging solution taking in a flat file and send an Xml File out to 5 different places?
update: here is the answer:
- Create a Flat File schema
- Create a Custom Pipeline using the Flat File Disassembler
- Create a Receive Port
- Create 5 Send Ports
- Create a Send Port Group
- Add each Send Port to the Send Port Group
- Create a Filter on the Send Port Group using Bts.ReceivePortName (or something close to this)
- Additional: no map is required but it is ok to mention it

Design (Architecture) Focused Questions

What is the difference between a Distinguished field and a Promoted Property?
Basics of Promoted Properties Inside BizTalk Server 2004

How do you achieve First-In-First-Out message processing of messages received from multiple sources using an Orchestration?
FIFO processing would be achieved using convoys, on the following links you can find information about it:
- BizTalk Core Engine's WebLog
- BizTalk Server 2004 Convoy Deep Dive

something you must keep in mind is: "FIFO is only possible when using an "order-aware" adapter, such as one leveraging MSMQ protocols or the MQSeries adapter"

At high level, what do Receive Ports and Orchestration Send Port really do in terms of messaging?  What about Send Ports and Orchestration Receive Ports?
Receive Ports and Orchestration Send Port = suscribe
Send Ports and Orchestration Receive Ports = publish

When working with Schemas, Maps, Pipelines, and Orchestrations how should the projects be structured?
in theory you must separate project assemblies by orchestations / schemas + maps / custom pipelines to reduce GAC dependency and future binding problems, Alan Smith has a very interesting article BizTalk Server - Modular Deployment worth reading.

What is direct binding?
port bindings:Your orchestration can communicate directly with another orchestration by using direct binding. In this case, the message is processed internally by the engine, and no external transport of the message takes place

Charles young has a great article aboud this topic BizTalk Server 2004: Direct Binding models in BizTalk , i recommend you to check it out

What is BAM used for?
BAM -Business Activity Monitoring- is a general framework for tracking heterogeneous business processes regardless of insfraestructure, providing business users with real-time visibility.

here are some useful links:
- Kevin Smith posted BAM: Tracking Portal which explains how to create a BAM tracking portal, BAM can be very useful for developers and IT pros as well
- Microsoft.BizTalk.Bam.EventObservation Namespace
- Business Activity Monitoring (BizTalk Server Samples Folder) 

What is the Rules Engine?
Orchestration Designer, together with BizTalk Editor and BizTalk Mapper, is an effective way to define a business process and the rules it uses. Over time, however, the rules specified in an orchestration can change. The decisions embedded in a business process—the business rules—are commonly the most volatile. For example, a manager's spending limit might change, or a customer's maximum allowed order might change. You need a way to define and change business rules. To meet this need, BizTalk Server 2004 provides the Business Rule Engine to enable you to directly create and modify sets of business rules. These rules are created by using a tool called the Business Rule Composer, and then executed directly by the engine. This technology is new in BizTalk Server 2004. Business Rule Engine

the following links will make clear how to define your business rules:
Defining Business Rules - What Are They Really?
The Business Rules Manifesto

Jon Flanders recorded a interesting webcast: Implementing a Business Rules Engine Solution Using BizTalk Server 2004

What are Persistence Points and what causes them?
The orchestration engine saves the state of a running orchestration instance at various points. If it needs to rehydrate the orchestration instance, start up from a controlled shutdown, or recover from an unexpected shutdown, it will run the orchestration instance from the last persistence point, as though nothing else had occurred

on the following link you can read more about persistence

What group does a user need to belong to in order to submit messages to the message box? 
the user must be a member of at least one of the following groups:
- Biztalk host users
- Biztalk Isolated host users

on the following links you may read more about this topic:
Windows Group and User Accounts in BizTalk Server
About Host Groups

What user rights to you need to perform most actions in HAT?
You must manually grant permissions to BizTalk administrators group to access the Analysis Services Tracking database; by default, only OLAP administrators have permissions to it.

on Microsoft® BizTalk Server 2004 UNLEASHED you can find a good resource on biztalk tracking

When installing Biztalk in a multi-server configuration with a remote SQL and Analysis Services, what SQL components do you need on the Biztalk Server?
- SQL Server Analysis Services + Decision support objects (requeried for BAS)
- MS SQL SP3a
- MS SQL Update from Q831950 (SQL2000-KB810185-8.00.0878-ENU.exe)
- configure SQL Server DTC

you can read all the installation procedure on BizTalk Server 2004 Installation in a Multi-Server Environment

When installing Biztalk and SQL on a Windows XP SP2 Desktop, what pre-requests are required?
i couln't find an exact resource for this one, if anyone knows about it i'd appreciate your feedback, please refer to the biztalk server installation guide, there's a known issue about the SSO service after installing XP SP2 if you are interested it can be found here

Monday, December 26, 2005

Biztalk VNEXT wish list

Stephen W. Thomas on his post BizTalk vNext (Biztalk 2008?) Wish List provided a list of what everyone is expecting from microsoft on his future realease of biztalk, summarizing:

- Convoy as a setting on the receive port
- Ability to suppress event log messages via a context property
- Better control over property promotion
- Checking a promoted property that does not exist does not throw an exception
- When a default value is set on a promoted property and it is associated with a schema the default value should always exist in the message context
- Support for multiple Acks and NAcks with send port groups

there are some interesting wishes posted like:

- Biztalk mapper can be definitely improved (looks like Microsoft is already working on this). some of the features which I would like are
  a. Ability to somehow access the promoted properties context inside the mapper.
  b. Search capabilities inside the map (not only on schema names)
  c. Error Handling capabilities inside a map

Biztalk performance

Darren Jefford has a list of performance tips for BizTalk Server 2004 implementations, from the blog:
"Another issue that came up recently which I didn’t fully appreciate is how “expensive” Atomic Scopes are, don’t get me wrong, they’re great and need to be there but I’m increasingly seeing customers using them where they don’t have to – For those of you with a COM+ background it’s analogous to running your code within a Transaction, most customers didn’t need them but turned it on anyway causing significant problems"...

Biztalk and windows workflow

A lot has been said regarding Biztalk server and Windows worflow foundation, here are some references that might come handy: