<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Microsoft Business Rule Framework</title>
        <link>http://geekswithblogs.net/cyoung/category/2771.aspx</link>
        <description>Microsoft Business Rule Framework</description>
        <language>en-GB</language>
        <copyright>Charles Young</copyright>
        <managingEditor>charles.young@solidsoft.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>MS BRE: Using Compensation handlers</title>
            <link>http://geekswithblogs.net/cyoung/archive/2008/01/23/118805.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Being known for my interest in rules processing, I quite often get asked to help with problems with MS BRE.   A couple of days ago, I was asked to help investigate an issue occurring in production for a BizTalk Server application.   Occasionally, in a fairly high throughput system, BizTalk logs an error stating that a problem has been encountered while executing a rule set.   That is the only information provided, with no hint of what the problem might be, and because the issue only occurs intermittently under real-world conditions in the production environment, it was not obvious how to obtain further insight without disrupting live operations.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;a href="http://geekswithblogs.net/cyoung/archive/2008/01/23/118804.aspx"&gt;This article&lt;/a&gt; investigates one way of handling this deilemma through the use of the compensation handling feature of Microsoft's Business Rules Engine.   It goes on to discuss the broader use of compensation handling in rule processing.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;a id="ctl00_pageContent_Editor_Edit_hlEntryLink" title="view: MS BRE: Using Compensation handlers" href="http://geekswithblogs.net/cyoung/articles/118804.aspx"&gt;http://geekswithblogs.net/cyoung/archive/2008/01/23/118804.aspx&lt;/a&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118805"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118805" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cyoung/aggbug/118805.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2008/01/23/118805.aspx</guid>
            <pubDate>Wed, 23 Jan 2008 00:48:52 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/118805.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2008/01/23/118805.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/118805.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/118805.aspx</trackback:ping>
        </item>
        <item>
            <title>MS BRE:  The Rules Engine Update (REU) Service and Policy Execution</title>
            <link>http://geekswithblogs.net/cyoung/archive/2008/01/13/118507.aspx</link>
            <description>&lt;div&gt;&lt;font face="Verdana" size="2"&gt;A question came up tonight on BizTalkGurus on my favourite subject of rule engines.   I don’t blog enough these days, so this gives me an excuse.    Essentially, the question concerned an incorrect, but understandable, suspicion that MS BRE may be using remoting to execute rule sets out-of-process.   This is not the case.    You can find an article describing what actually happens at:&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;a title="view: MS BRE:  The Rules Engine Update (REU) Service and Policy Execution" href="http://geekswithblogs.net/cyoung/articles/118506.aspx"&gt;&lt;font face="Verdana" size="2"&gt;http://geekswithblogs.net/cyoung/archive/2008/01/13/118506.aspx&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118507"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118507" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cyoung/aggbug/118507.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2008/01/13/118507.aspx</guid>
            <pubDate>Sun, 13 Jan 2008 22:13:24 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/118507.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2008/01/13/118507.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/118507.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/118507.aspx</trackback:ping>
        </item>
        <item>
            <title>MS BRE: State Transition Pattern</title>
            <link>http://geekswithblogs.net/cyoung/archive/2007/09/16/115389.aspx</link>
            <description>&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;font face="Verdana" size="2"&gt;My fellow BizTalk MVP, Leonid Ganeline, asked if I would comment further on mechanisms to govern sequential flow in rules in MS BRE.    He was picking up on some comments I made in my article comparing WF and MS BRE rule performance (see &lt;/font&gt;&lt;a href="http://geekswithblogs.net/cyoung/archive/2007/08/12/114597.aspx#143628"&gt;&lt;font face="Verdana" color="#0000ff" size="2"&gt;http://geekswithblogs.net/cyoung/archive/2007/08/12/114597.aspx#143628&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;). &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;font face="Verdana" size="2"&gt;What I had in mind was the use of state transition patterns within rule sets.   These can be used to layer a degree of sequential control over the set-based pattern matching approach taken by engines like MS BRE.   The basic pattern is simplicity itself, and very common.     What I generally do is assert an additional 'context' fact to the engine (typically some custom .NET object) in which I maintain a state specifier (e.g., a simple string property).   I can then group rules together to match specific states, and use a low-priority rule in each group to change the state.   The 'sequential' flow is then governed by the state transitions.   Of course, any single group of rules that match the same state do not operate in a sequential fashion amongst themselves.   However, you can always just have one main rule per state if you wish.   Here is a very, very simple example of the kind of pattern I have in mind.&lt;/font&gt;&lt;/div&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;font face="Verdana" size="2"&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;/*********************************************&lt;br /&gt;
&lt;/font&gt; * Group 1 - 'Started' state&lt;br /&gt;
&lt;font face="Verdana" size="2"&gt; ********************************************/&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; &lt;br /&gt;
&lt;/font&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;Rule 1&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;font face="Verdana" size="2"&gt;IF&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; AND&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;    Context.CurrentState == "started"&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;    MyFactA.Property1 &amp;gt; 5&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;    MyFactB.Property1 &amp;lt; MyFactA.Property&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;THEN&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; MyFactB.Property1 = MyFactA.Property1&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; assert MyFactB&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; &lt;br /&gt;
&lt;/font&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;Rule 2 (priority -1)&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;font face="Verdana" size="2"&gt;IF&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; Context.CurrentState == "started"&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;THEN&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; Context.CurrentState = "initialised"&lt;br /&gt;
 assert Context&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; &lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;/*********************************************&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; * Group 2 - 'Initialised ' state&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; ********************************************/&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;Rule 3&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;font face="Verdana" size="2"&gt;IF&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; AND&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;    Context.CurrentState == "initialised"&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;    MyFactA.Property2 == "USA"&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;THEN&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; MyFactA.SetCountryCode("01")&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; &lt;br /&gt;
&lt;/font&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;Rule 4&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;font face="Verdana" size="2"&gt;IF&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; AND&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;    Context.CurrentState == "initialised"&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;    MyFactA.Property2 == "UK"&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;THEN&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; MyFactA.SetCountryCode("44")&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; &lt;br /&gt;
&lt;/font&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;Rule 5 (priority -1)&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;font face="Verdana" size="2"&gt;IF&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; Context.CurrentState == "initialised"&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;THEN&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; Context.CurrentState = "completed"&lt;br /&gt;
 assert Context&lt;br /&gt;
 assert MyFactA  // convenient place to re-assert MyFactA &lt;br /&gt;
                        // to avoid loops if, for example, &lt;br /&gt;
                        // MyFactA.SetCountryCode() changes the &lt;br /&gt;
                        // state of MyFactA.&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; &lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;/*********************************************&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; * Group 3 - 'Completed' state&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; ********************************************/&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; &lt;br /&gt;
&lt;/font&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;Rule 6&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;font face="Verdana" size="2"&gt;IF&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; AND&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;    Context.CurrentState == " completed "&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;THEN&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;    MyFactA.Property1 = 0 &lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;    MyFactB.Property1 = 0&lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; &lt;br /&gt;
&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;/********************************************/&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;font face="Verdana" size="2"&gt;The low-priority ‘state transition’ rules are rules 2 and 5.   Group 2 contains two main rules, whereas the other groups have just one main rule.&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;font face="Verdana" size="2"&gt;Personally, I think MS BRL (and the Rules Composer) should provide a built-in abstraction for this design pattern - i.e., provide a way of grouping rules by state, and declaring how to transition to a new state when a group has completed its work.   If this was supported, it would not be necessary to explicitly define an additional low-priority rule in each group. &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;font face="Verdana" size="2"&gt;This design pattern can be a little difficult to maintain in MS BRE currently because the rule composer displays rules in alphabetic order in the UI, regardless of the order in which you created them, and so you cannot see the groupings and state transitions.   The answer to this, of course, is to adopt a rule naming convention which makes the pattern more explicit in the UI.&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;font face="Verdana" size="2"&gt;I used this design pattern recently when creating a rule set for applying Bayes Theorem.   See   &lt;/font&gt;&lt;a href="http://geekswithblogs.net/cyoung/archive/2007/08/27/114988.aspx"&gt;&lt;font face="Verdana" size="2"&gt;http://geekswithblogs.net/cyoung/archive/2007/08/27/114988.aspx&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;.   The rule set was written for other rule engines (Jess and CLIPS), but uses exactly the same principle.   I have ported the rule set to MS BRE, but just need to clear a potential commercial hurdle before publishing the code.&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;font face="Verdana" size="2"&gt;You can download a slide set for a presentation I gave earlier this year at an architect's conference from &lt;/font&gt;&lt;a href="http://download.microsoft.com/documents/uk/msdn/architecture/architectinsight/2007/collaboration/COL01-Rules-Processing-in-Business-Processes.ppt"&gt;&lt;font face="Verdana" size="2"&gt;http://download.microsoft.com/documents/uk/msdn/architecture/architectinsight/2007/collaboration/COL01-Rules-Processing-in-Business-Processes.ppt&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;.   There is a slide in the set which illustrates how a declarative rule set might map onto a process (I've used a BizTalk orchestration to represent the process).&lt;/font&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115389"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115389" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cyoung/aggbug/115389.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2007/09/16/115389.aspx</guid>
            <pubDate>Sun, 16 Sep 2007 12:06:37 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/115389.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2007/09/16/115389.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/115389.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/115389.aspx</trackback:ping>
        </item>
        <item>
            <title>WF Rules and MS BRE - Comparing Performance</title>
            <link>http://geekswithblogs.net/cyoung/archive/2007/08/14/114647.aspx</link>
            <description>&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;font face="Verdana" size="2"&gt;I’ve been asked a few times how the performance of WF (Windows Workflow Foundation) Rules compares with that of the Microsoft Business Rules Engine (MS BRE).   Having done no testing, I could only guess at the answer.   &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;font face="Verdana" size="2"&gt;I’ve now undertaken some initial performance testing to compare WF and MS BRE, and decided to publish the results.    You can read my write-up of the results &lt;/font&gt;&lt;a href="http://geekswithblogs.net/cyoung/archive/2007/08/12/114597.aspx"&gt;&lt;font face="Verdana" size="2"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;.&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;a href="http://geekswithblogs.net/cyoung/archive/2007/08/12/114597.aspx"&gt;&lt;font face="Verdana" size="2"&gt;http://geekswithblogs.net/cyoung/archive/2007/08/12/114597.aspx&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114647"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114647" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cyoung/aggbug/114647.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2007/08/14/114647.aspx</guid>
            <pubDate>Tue, 14 Aug 2007 17:27:29 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/114647.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2007/08/14/114647.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/114647.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/114647.aspx</trackback:ping>
        </item>
        <item>
            <title>BizTalk Server or WF for rules and tracking?</title>
            <link>http://geekswithblogs.net/cyoung/archive/2007/07/19/114062.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;I got an email today requesting help in deciding the appropriate selection of rule processing technology for a workflow application.&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;I’ve got requests like this before, so I’ve decided to post a reply publically.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;a href="http://geekswithblogs.net/cyoung/archive/2007/07/19/114061.aspx"&gt;http://geekswithblogs.net/cyoung/archive/2007/07/19/114061.aspx&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114062"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114062" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cyoung/aggbug/114062.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2007/07/19/114062.aspx</guid>
            <pubDate>Thu, 19 Jul 2007 19:13:27 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/114062.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2007/07/19/114062.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/114062.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/114062.aspx</trackback:ping>
        </item>
        <item>
            <title>MS BRE: Update to side-effects article</title>
            <link>http://geekswithblogs.net/cyoung/archive/2007/04/10/111317.aspx</link>
            <description>&lt;p&gt;I posted an article on MS BRE side effects yesterday.   I had immediately to withdraw it for a few hours because I realised it was incomplete (and actually a little wrong) in one part.   Then I noticed I had swapped the legend text on the graph making it appear that caching made things slower, rather than faster!   I then discovered today that for the last three years I have been completely ignorant of the fact that you can drag and drop object constructors onto the 'assert' argument in the Rules Composer in order to expolit the built-in CreateObject function!   Big red face.   I have changed the offending paragraph where I moaned at Microsoft for not providing access to this functionality!   Given the number of times I have complained about the lack of comprehensive documentation for BizTalk and related technologies, it is ironic that Microsoft has documented this particular feature very cleary indeed, and even given a brief description of what happens behind the scenes!   I am suitably chastened.&lt;/p&gt;
&lt;p&gt;The updated article remains at &lt;a href="http://geekswithblogs.net/cyoung/articles/111169.aspx"&gt;http://geekswithblogs.net/cyoung/articles/111169.aspx&lt;/a&gt;.   If anyone spots any other artefacts of my ignorance or inattention, do please let me know!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111317"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111317" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cyoung/aggbug/111317.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2007/04/10/111317.aspx</guid>
            <pubDate>Tue, 10 Apr 2007 15:56:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/111317.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2007/04/10/111317.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/111317.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/111317.aspx</trackback:ping>
        </item>
        <item>
            <title>MS BRE: Controlling rule side effects </title>
            <link>http://geekswithblogs.net/cyoung/archive/2007/04/09/111172.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;For almost two years now, I've been intending to write an article about the mysterious 'side effects' flag used in Microsoft Business Rule Engine policies.&amp;nbsp; Microsoft documents this feature (see &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa559124.aspx"&gt;&lt;FONT face=Verdana size=2&gt;http://msdn2.microsoft.com/en-us/library/aa559124.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;), and describes very briefly how to control it.&amp;nbsp;&amp;nbsp; The mystery that surrounds this flag arises because it is represented by an attribute named 'sideeffects' in Microsoft's BRL (Business Rule Language) although it actually controls a caching mechanism, and because Microsoft has not provided access to the flag in their Rules Composer, thereby giving the impression that it is not a 'first-class' feature of rule definitions.&amp;nbsp;&amp;nbsp; In reality, this flag is an important aspect of the functional approach adopted in Microsoft's Business Rule Language (BRL), and can have a significant effect on both behaviour and performance of your policies.&amp;nbsp;&amp;nbsp;Understanding the flag also requires a greater understanding of the way in which BRL binds functions to custom&amp;nbsp;code, providing a clean mechanism for implementing domain-specific extensions to the rule language.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Incidently I apologise that, for a few hours after my initial posting, I had to withdraw the article.&amp;nbsp;&amp;nbsp; No sooner had&amp;nbsp;I posted than I realised that I had not adequately investigated one aspect of MS BRE functionality.&amp;nbsp;&amp;nbsp; I have now corrected and extended the original version.&amp;nbsp;&amp;nbsp; I'm sorry if anyone found their aggregator reporting a page that wasn't there.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The article is located at &lt;/FONT&gt;&lt;A href="http://geekswithblogs.net/cyoung/articles/111169.aspx"&gt;&lt;FONT face=Verdana size=2&gt;http://geekswithblogs.net/cyoung/articles/111169.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111172"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111172" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cyoung/aggbug/111172.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2007/04/09/111172.aspx</guid>
            <pubDate>Mon, 09 Apr 2007 09:03:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/111172.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2007/04/09/111172.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/111172.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/111172.aspx</trackback:ping>
        </item>
        <item>
            <title>Microsoft BRE: Fact Identity in the Microsoft Rules Engine, or how the author chased a non-existant bug</title>
            <link>http://geekswithblogs.net/cyoung/archive/2007/04/04/110851.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I recently had reason to revisit the exact mechanisms Microsoft use when you assert facts to the Microsoft Rules Engine.&amp;nbsp;&amp;nbsp; I was discussing stuff on-line with a fellow rules enthusiast when a terrible thought occurred to me.&amp;nbsp;&amp;nbsp; Can the MS BRE always uniquely identify each different fact, or is there a chance that sometimes it might confuse two facts with each other?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;For a couple of days, I was convinced that I had stumbled on a significant bug.&amp;nbsp;&amp;nbsp; Indeed, at one point, I thought there was such a serious problem that I would have to recommend to my company that we desist from any further use of Microsoft’s rules engine.&amp;nbsp;&amp;nbsp; Melodramatic, huh!&amp;nbsp;&amp;nbsp;&amp;nbsp; Fortunately, after a bit more research, I discovered that I was quite wrong.&amp;nbsp;&amp;nbsp; The MS BRE does not suffer from a terminal flaw and can be trusted to always distinguish correctly between all your facts.&amp;nbsp;&amp;nbsp; It’s worth recording my suspicions, mistakes and eventual enlightenment.&amp;nbsp;&amp;nbsp; There is something useful to learn, here, about the inner workings of the engine, and also about Microsoft’s implementation of the Hashtable class in .NET.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Read more at &lt;A id=Editor_Edit_hlEntryLink title="view: MS BRE: Fact Identity in the Microsoft Rules Engine, or how the author chased a non-existent bug" href="/cyoung/articles/110852.aspx" target=_blank&gt;&lt;FONT color=#002c99&gt;http://geekswithblogs.net/cyoung/articles/110852.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=110851"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=110851" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cyoung/aggbug/110851.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2007/04/04/110851.aspx</guid>
            <pubDate>Wed, 04 Apr 2007 21:26:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/110851.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2007/04/04/110851.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/110851.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/110851.aspx</trackback:ping>
        </item>
        <item>
            <title>BizTalk Server 2006: Using .NET Classes for Orchestration Message Types</title>
            <link>http://geekswithblogs.net/cyoung/archive/2006/11/29/99466.aspx</link>
            <description>&lt;P&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Verdana size=2&gt;I had some discussion today with Christof Claessens about the merits of using .NET classes as orchestration message types in BizTalk Server 2006.&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;A href="http://geekswithblogs.net/cyoung/articles/99464.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; are some of the reasons I came up with, and also some of the issues.&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geekswithblogs.net/cyoung/articles/99464.aspx"&gt;&lt;FONT face=Verdana size=2&gt;http://geekswithblogs.net/cyoung/articles/99464.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=99466"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=99466" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cyoung/aggbug/99466.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2006/11/29/99466.aspx</guid>
            <pubDate>Wed, 29 Nov 2006 17:34:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/99466.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2006/11/29/99466.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/99466.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/99466.aspx</trackback:ping>
        </item>
        <item>
            <title>MS BRE: Further Issues with XPath Selectors in the Microsoft Business Rules Engine</title>
            <link>http://geekswithblogs.net/cyoung/archive/2006/09/14/91184.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;A href="http://geekswithblogs.net/cyoung/articles/91183.aspx"&gt;This article&lt;/A&gt; supplements an &lt;A href="http://geekswithblogs.net/cyoung/articles/90102.aspx"&gt;earlier article&lt;/A&gt;, posted a couple of weeks ago (&lt;/FONT&gt;&lt;A href="http://geekswithblogs.net/cyoung/articles/90102.aspx"&gt;&lt;FONT face=Verdana size=2&gt;http://geekswithblogs.net/cyoung/articles/90102.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;), on issues concerning the use of XPaths to map between the hierarchical data structure of an XML document and the relational view of 'facts' in the Microsoft Business Rules Engine.&amp;nbsp;&amp;nbsp; As I suggested in the introduction to that article, I have repeatedly been asked to troubleshoot MS BRE issues which turn out to be related to the use of XPaths.&amp;nbsp;&amp;nbsp; Earlier this week, I received another request for help.&amp;nbsp;&amp;nbsp; The symptoms and solution to the problem are worth recording because they provide greater insight into this topic.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;BR&gt;&lt;A href="http://geekswithblogs.net/cyoung/articles/91183.aspx"&gt;http://geekswithblogs.net/cyoung/articles/91183.aspx&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=91184"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=91184" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cyoung/aggbug/91184.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2006/09/14/91184.aspx</guid>
            <pubDate>Thu, 14 Sep 2006 15:06:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/91184.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2006/09/14/91184.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/91184.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/91184.aspx</trackback:ping>
        </item>
    </channel>
</rss>