I have a case where I need to validate an incoming XML message and generate an aggregated XML message containing all validation failures. The base functionality of the BRE does not allow this kind of message manipulation – adding new elements (nodes) to messages and then setting the value.
My good friend Bing to the rescue!
This blog post gives a good walkthrough of doing exactly what I needed to do using the Microsoft.RuleEngine.XMLHelper class. Pay close attention to the Windows Registry setting at the end of the post.
http://arnulfowing.blogspot.com/2007/09/microsoftruleenginexmlhelper.html
This MSDN blog had a very good sample BRE Policy that I used to see a concrete example. Download the .exe and extract it.
http://blogs.msdn.com/b/biztalkbre/archive/2006/08/31/734291.aspx
This MSDN document details the Windows Registry setting that I mentioned previously. The function is to allow the BRE to use .NET helper methods as static objects, rather than requiring an instance.
http://msdn.microsoft.com/en-us/library/aa950269.aspx
These three sources combined gave me the complete solution. It works like a charm, and I did not have to write my own custom .NET helper class to do the XML element insertion.
Good times!