BizTalk 2009 - Custom Functoid Categories

Posted by StuartBrierley on Geeks with Blogs See other posts from Geeks with Blogs or by StuartBrierley
Published on Thu, 27 May 2010 09:27:42 GMT Indexed on 2010/05/27 10:52 UTC
Read the original article Hit count: 375

Filed under:

I recently had cause to code a number of custom functoids to aid with some maps that I was writing.

Once these were developed and deployed to C:\Program Files\Microsoft BizTalk Server 2009\Developer Tools\Mapper Extensions a quick refresh allowed them to appear in toolbox.  After dropping these on a map and configuring the appropriate inputs I tested the map to check that they worked as expected. 

All but one of the functoids worked as expecetd, but the final functoid appeared not to be firing at all.

I had already tested the code used in a simple test harness application, so I was confident in the code used, but I still needed to figure out what the problem might be.

Debugging the map helped me on the way; for some reason the functoid in question was not shown correctly - the functoid definition was wrong.

After some investigations I found that the functoid type you assign when coding a custom functoid affects more than just the category it appears in; different functoid types have different capabilities, including what they can link too. 

For example, a logical functoid can not provide content for an output element, it can only say whether the element exists.  Map this via a Value Mapping functoid and the value of true or false can be seen in the output element.

The functoid I was having problems with was one whare I had used the XPath functoid type, this had seemed to be a good fit as I was looking up content in a config file using xpath and I wanted it to appear the advanced area. 

From the table below you can see that this functoid type is marked as "Internal Only", preventing it from being used for custom functoids.  Changing my type to String allowed the functoid to function as expected.

Category Description Toolbox Group
Assert Internal Use Only Advanced
Conversion Converts characters to and from numerics and converts numbers from one base to another. Conversion
Count Internal Use Only Advanced
Cumulative Performs accumulations of the value of a field that occurs multiple times in a source document and outputs a single output. Cumulative
DatabaseExtract Internal Use Only Database
DatabaseLookup Internal Use Only Database
DateTime Adds date, time, date and time, or add days to a specified date, in output data. Date/Time
ExistenceLooping Internal Use Only Advanced
Index Internal Use Only Advanced
Iteration Internal Use Only Advanced
Keymatch Internal Use Only Advanced
Logical Controls conditional behavior of other functoids to determine whether particular output data is created. Logical
Looping Internal Use Only Advanced
MassCopy Internal Use Only Advanced
Math Performs specific numeric calculations such as addition, multiplication, and division. Mathematical
NilValue Internal Use Only Advanced
Scientific Performs specific scientific calculations such as logarithmic, exponential, and trigonometric functions. Scientific
Scripter Internal Use Only Advanced
String Manipulates data strings by using well-known string functions such as concatenation, length, find, and trim. String
TableExtractor Internal Use Only Advanced
TableLooping Internal Use Only Advanced
Unknown Internal Use Only Advanced
ValueMapping Internal Use Only Advanced
XPath Internal Use Only Advanced

Links

http://msdn.microsoft.com/en-us/library/microsoft.biztalk.basefunctoids.functoidcategory(BTS.20).aspx

http://blog.eliasen.dk/CommentView,guid,d33b686b-b059-4381-a0e7-1c56e808f7f0.aspx

© Geeks with Blogs or respective owner