<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>BizTalk Server 2009 - Rule deployment issue</title>
            <link>http://geekswithblogs.net/cyoung/archive/2009/11/20/136438.aspx</link>
            <description>&lt;div style="margin: 0cm 0cm 10pt"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;There is a small configuration issue with the Microsoft Business Rules Composer in BizTalk Server 2009.   This will only affect you if you deploy the rules engine by itself without the rest of BizTalk Server.   In a full installation of BizTalk Server, BTS provides a set of BTS-specific Rule Framework components in as assembly called Microsoft.BizTalk.RuleEngineExtensions. This includes a RuleSetDeploymentDriver component that manages deployment of rules via the SQL Server repository.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;The BTS-specific RuleSetDeploymentDriver has a dependency on WMI (Windows Management Instrumentation). In a full BTS installation, BTS creates an instance of a CIM class called MSBTS_GroupSetting and populates various property values from the BizTalk management database.   This includes the assembly and class name of a RuleSetDeploymentDriver.   If you install only the rule processing components, there is no BizTalk management database, and no instance of this class is created. Unfortunately, this means that, whenever you try to deploy a rule set from the Rules Composer, you get a rude message saying:&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt 40px"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;The database "&amp;lt;server&amp;gt;:&amp;lt;database&amp;gt;" associated with the deployment driver does not match the database ":" specified during product configuration&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;The message is entirely correct. Microsoft's BTS-specific RuleSetDeploymentDriver component performs this check presumably to ensure that registry settings for the rule repository database name and server name are identical to those configured in the BizTalk management database.   This ensures that the Rule Engine Update Service is using the same BTS-specific RuleSetDeploymentDriver component.&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;When you install only the rule processing components, the registry is unfortunately configured as if a full BizTalk installation had been done. The Rule Composer tries to use the BTS-specific RuleSetDeploymentDriver component to deploy rule sets and fails because no instance of MSBTS_GroupSetting has been created in the CIM store.&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;Fortunately, this is a simple problem to fix. Microsoft provides a non BTS-specific RuleSetDeploymentDriver component for the rule repository database.   All you need to do is change the registry settings to use this instead.&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;Open the Registry Editor (regedit) and locate the following key:&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt 36pt"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BusinessRules\3.0&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;If you have installed the rule processing components on a 64-bit version of Windows, they key will be at:&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt 36pt"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\BusinessRules\3.0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;You should find the DeploymentDriverAssembly and DeploymentDriverClass values under the key.   These should be changed to the following values, respectively:&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt; &lt;/span&gt;Microsoft.RuleEngine, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt; &lt;/span&gt;Microsoft.RuleEngine.RuleSetDeploymentDriver&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;&lt;span style="font-family: Verdana"&gt;&lt;span style="font-size: small"&gt;&lt;span style="line-height: 115%"&gt;That's it. The Rule Composer should now be able to deploy rule sets.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136438"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136438" 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/136438.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2009/11/20/136438.aspx</guid>
            <pubDate>Fri, 20 Nov 2009 13:28:40 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/136438.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2009/11/20/136438.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/136438.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/136438.aspx</trackback:ping>
        </item>
        <item>
            <title>MS BRE: Clearing Working Memory</title>
            <link>http://geekswithblogs.net/cyoung/archive/2009/04/28/ms_bre__clearing_working_memory.aspx</link>
            <description>&lt;div&gt;&lt;span style="FONT-SIZE: 8pt"&gt;&lt;font size="2" face="Verdana"&gt;My colleague, the ‘Arch Hacker’, forwarded an email to me this evening from Kenton Price.   Kenton had noticed some peculiar behaviour using the Microsoft Business Rules Engine.   Here are the pertinent extracts from Kenton’s report:&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2" face="Verdana"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt"&gt;&lt;span style="FONT-SIZE: 8pt"&gt;&lt;font size="2" face="Verdana"&gt;“It appears that if you assert a fact in a rule, it hangs around for subsequent instantiations of the rule engine, behaving like a long-term fact.... I solved it by retracting each asserted fact on every exit path (I had a jump-out-early that halts and stops all other rules, so I had to retract the asserted facts here too)....Facts provided in the object[] passed to the BRE call are all retracted automatically. It appears that any others you assert within the rules must be manually retracted.”&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2" face="Verdana"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;span style="FONT-SIZE: 8pt"&gt;&lt;font size="2" face="Verdana"&gt;Kenton is quite correct.   The issue is actually to do with the Policy class, and there are good reasons why the engine behaves this way.   Read more at &lt;/font&gt;&lt;a href="http://geekswithblogs.net/cyoung/archive/2009/04/28/131548.aspx"&gt;&lt;font size="2" face="Verdana"&gt;http://geekswithblogs.net/cyoung/archive/2009/04/28/131548.aspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Verdana"&gt;.&lt;/font&gt;  &lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131549"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131549" 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/131549.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2009/04/28/ms_bre__clearing_working_memory.aspx</guid>
            <pubDate>Wed, 29 Apr 2009 03:11:22 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/131549.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2009/04/28/ms_bre__clearing_working_memory.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/131549.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/131549.aspx</trackback:ping>
        </item>
        <item>
            <title>Constraint Satisfaction and Rete</title>
            <link>http://geekswithblogs.net/cyoung/archive/2009/02/24/129640.aspx</link>
            <description>&lt;p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"&gt;&lt;font size="2" face="Verdana"&gt;A few days ago, Daniel Selman of ILOG (now owned by IBM) published a solution to the Einstein puzzle.&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;See &lt;/font&gt;&lt;a href="http://blogs.ilog.com/brms/2009/02/16/einsteins-puzzle/"&gt;&lt;font color="#800080" size="2" face="Verdana"&gt;http://blogs.ilog.com/brms/2009/02/16/einsteins-puzzle/&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Verdana"&gt;.&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;He did this in response to a challenge from James Owen who is one of the organisers of the October Rules Fest conference. &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;James invited the various vendors who have involvement in the conference to provide a solution using whatever approach they deemed best.&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;See &lt;/font&gt;&lt;a href="http://orf2009.blogspot.com/2009/02/puzzle-1-for-conference.html"&gt;&lt;font color="#800080" size="2" face="Verdana"&gt;http://orf2009.blogspot.com/2009/02/puzzle-1-for-conference.html&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Verdana"&gt;.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"&gt;&lt;font size="2" face="Verdana"&gt;Daniel suggests that, if ILOG had used a Rete rules engine, they would have had to implement 'convoluted rules' to solve the problem. Daniel is correct, but I thought it would be interesting to look a little deeper at why this is the case.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"&gt;&lt;font size="2" face="Verdana"&gt;Read more at &lt;/font&gt;&lt;a href="http://geekswithblogs.net/cyoung/archive/2009/02/24/129639.aspx"&gt;&lt;font color="#800080" size="2" face="Verdana"&gt;http://geekswithblogs.net/cyoung/archive/2009/02/24/129639.aspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Verdana"&gt;.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129640"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129640" 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/129640.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2009/02/24/129640.aspx</guid>
            <pubDate>Tue, 24 Feb 2009 20:47:36 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/129640.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2009/02/24/129640.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/129640.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/129640.aspx</trackback:ping>
        </item>
        <item>
            <title>Microsoft BRE Survey</title>
            <link>http://geekswithblogs.net/cyoung/archive/2008/10/21/125973.aspx</link>
            <description>&lt;p&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 9pt"&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;I'm delighted to report that Microsoft is currently asking for responses to an on-line survey on the use of Microsoft BRE - delighted because it indicates that serious thought is being given to the evolution of this technology.    If your organisation uses MS BRE, do please take a few minutes to provide feedback.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Verdana"&gt;The survey is at:   &lt;/font&gt;&lt;a target="_blank" href="https://live.datstat.com/MSCSD-Collector/Survey.ashx?Name=BRE_Usage_Survey_Blog"&gt;&lt;font size="2" face="Verdana"&gt;https://live.datstat.com/MSCSD-Collector/Survey.ashx?Name=BRE_Usage_Survey_Blog&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Verdana"&gt;The only issue I would highlight is that the survey deals mainly with present and past use of MS BRE, and not about how its use could be extended in the future.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125973"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125973" 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/125973.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Charles Young</dc:creator>
            <guid>http://geekswithblogs.net/cyoung/archive/2008/10/21/125973.aspx</guid>
            <pubDate>Tue, 21 Oct 2008 21:09:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cyoung/comments/125973.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cyoung/archive/2008/10/21/125973.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/cyoung/comments/commentRss/125973.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cyoung/services/trackbacks/125973.aspx</trackback:ping>
        </item>
        <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 06: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>Mon, 14 Jan 2008 04: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>
            <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 18: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>8</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 23: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>Fri, 20 Jul 2007 01: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>
            <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 21: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>1</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>
    </channel>
</rss>