Using Functoids in the BizTalk 2013 Mapper

This course presents a deep-dive exploration of the BizTalk Mapper toolbox, especially the powerful built-in components that enable complex message transformations via a drag 'n' drop design grid.
Course info
Rating
(48)
Level
Intermediate
Updated
May 15, 2014
Duration
4h 23m
Table of contents
Functoid Fundamentals
Text, Dates, & Booleans
Computations & Conversions
Database Lookups & Cross-Referencing
Advanced Functoids
Arbitrary Scripting
Extending the Mapper
Description
Course info
Rating
(48)
Level
Intermediate
Updated
May 15, 2014
Duration
4h 23m
Description

The Mapper is one of the keystone tools included with BizTalk Server 2013, featuring an intuitive graphical design interface for constructing message transformations. Included with the Mapper is a comprehensive set of drag 'n' drop components, called Functoids, which assist in performing complex operations on the data and the message structure. This course presents a deep-dive exploration of these components and will greatly assist developers in leveraging the powerful capabilities they afford.

About the author
About the author

Dan is a Microsoft MVP (Azure), a Microsoft Certified Solution Expert (MSCE), a Microsoft Certified Technical Specialist (MCTS) in BizTalk Server 2010, and a Microsoft Certified Trainer (MCT). An enterprise integration specialist, Dan is a frequent blogger and speaker and leads the Brisbane Azure User Group.

More from the author
Azure Hybrid Connections: First Look
Beginner
1h 48m
13 Jun 2015
Section Introduction Transcripts
Section Introduction Transcripts

Text, Dates, & Booleans
In this module, we'll begin our journey by exploring the most commonly used functoids in the Toolbox, which for the most part also happen to be the most intuitive ones. Specifically, we'll cover three separate categories of functoids. First, we'll discuss the String Functoids category, which gives us a variety of methods for manipulating basic text. This includes operations such as concatenation, search, changing case, and removing leading or trailing white space. Since XML is expressed as pure text, every node value can always be treated as a string, regardless of what its schema-defined data type is. Therefore, you'll find that you use these functoids more frequently than any other. Next are the Date/Time Functoids, which give us the ability to generate the current date, the current time, or both, as well as compute a date based on a differential from the current date. I often use one of these functoids to inject a current time stamp into an output message. Finally, we'll cover the Logical Functoids, which are unique in the Toolbox in that they don't actually emit a value that can be assigned to a target node, but instead they emit a pure Boolean flag that is used strictly to control conditional output or data flow. By connecting one of these functoids to a target element, its output will decide whether the element appears at all in the map's output message, not what value is assigned to it. You'll be amazed at how sophisticated your transformations can become using these three sets of functoids alone.

Computations & Conversions
Hi, I'm Dan Toomey. In this module, we will continue our exploration of the BizTalk Mapper functoids by diving into four more categories that enable computations, aggregations, and conversions. Specifically, we'll learn how to perform aggregate operations using the Cumulative functoid, calculate arithmetic, trigonometric, and logarithmic values using the Mathematical and Scientific functoids, and finally translate between character representations using the Conversion functoids.

Database Lookups & Cross-Referencing
Hi, I'm Dan Toomey. In this module, we will take a close look at the Database functoids included with the BizTalk Mapper. Specifically, we'll learn how to perform database lookups within your maps and about some of the best practices concerning that. We'll also talk about how the Mapper supports cross-referencing, which is the translation of reference data between systems. Reference data, in this case, refers to defined sets of permissible values, that though semantically different, represent the same conceptual meaning. For example, an order status of Open in one system might equate to Pending in another. we'll show how to populate the XRef tables included with BizTalk, discuss the differences between value and ID cross-referencing, and finally, walk through a real-world example of how to implement cross-referencing in your maps.

Advanced Functoids
Hi, I'm Dan Toomey. In this module, we will continue our exploration of the BizTalk Mapper Toolbox with an in-depth look at the advanced functoids, covering the areas of looping, iteration, conditional mapping, mass copying, and troubleshooting. Specifically, we'll discuss each of the functoids listed here, providing you enough working knowledge in order to unlock the most powerful features of the Mapper. The only exception for this category will be the Scripting functoid, which we'll cover separately within the next module. So what makes this group of functoids so much more advanced than the others that they deserve a special category. Well, for one thing, many of them tend to be more focused on altering the structure of the output XML, rather than just manipulating the content of one or more individual nodes. They also do not emit C# script like most of the other functoids. Instead, they all utilize XSLT to perform their operations. Finally, at least one of the functoids provides you a method of executing custom code when all other built-in features fail to meet your purpose. In general, the transformations that require these functoids are more substantial than basic one-to-one node mappings or data translations, but in all honesty, I'd have to guess that at least one of the reasons why these functoids are here is because they don't really fit into any other specific category.

Arbitrary Scripting
Hi, I'm Dan Toomey. In this module, we will continue our exploration of the BizTalk Mapper Toolbox with an in-depth look at the Scripting functoid, which allows you to execute custom code. Despite the vast assortment of functoids provided out-of-the-box, no less than 80 of them in fact, it is always possible that you'll need to do something that hasn't been catered for in the Toolbox, for example, creating a new GUID, formatting a date value to include time zone information or maybe sorting a set of repeating records. Luckily, the BizTalk Server Product Team anticipated this _____ requirement and provided a number of avenues to address this. The simplest is the Scripting functoid, which allows you to embed inline code or XSLT into your map and output the result to a specific location in your target. It also caters for calling methods in external assemblies, allowing for more reusable code and referencing libraries not readily available from within the map. We'll look at each one of the Scripting functoids modes and discuss how to determine the best option for your specific circumstances.

Extending the Mapper
Hi, I'm Dan Toomey. In this module, we will wrap up our exploration of the BizTalk Mapper Toolbox with a brief look at two more ways of extending the functionality beyond that of the built-in components, implementing custom functoids and overriding the map with custom XSLT. In the last module, we introduced the Scripting functoid and its multiple modes of executing custom code and script. This adds tremendous versatility to your maps, however, you do need to configure this functoid every time you place it on your map. If you find you need to reuse a Scripting functoid again and again with the same custom script, then creating your own custom functoid and adding it to the Visual Studio Toolbox might be the answer. Not only does it make it reusable across multiple projects and solutions, but it can help enforce standards and consistency amongst your development teams. We'll have a look at how you can get started with implementing and deploying your own custom functoids. Finally, for those extreme cases where the entire transformation is too complex for the BizTalk Mapper to handle, or where your organization has already invested in creating custom XSLT to address its needs, you can choose to abandon the grid entirely and simply use the map to host a custom stand-alone XSLT file. In this case, the map contains no links or functoids, just a reference to the XSLT file itself. While a discussion on how to develop custom XSLT is out of scope for this course, we will show you how to configure your map to point to your XSLT once you have it.