<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Kavitak's WebLog : WF Rules</title><link>http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx</link><description>Tags: WF Rules</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>WF 4 Migration Guidance now live on MSDN</title><link>http://blogs.msdn.com/kavitak/archive/2009/06/05/wf-4-migration-guidance-now-live-on-msdn.aspx</link><pubDate>Fri, 05 Jun 2009 20:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9701630</guid><dc:creator>kavitak</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/9701630.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=9701630</wfw:commentRss><description>&lt;P&gt;Our team has posted a set of WF 4 Migration documents on MSDN.&lt;/P&gt;
&lt;P&gt;You'll find 4 papers initially - &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;an overview document which introduces migration concerns and what to do for the WF3 developer.&lt;/LI&gt;
&lt;LI&gt;a best practices for WF3 development paper - how to design your WF3 artifacts today to help with the move to WF4&lt;/LI&gt;
&lt;LI&gt;a document on Rules guidance which I've authored&lt;/LI&gt;
&lt;LI&gt;a document on State Machine guidance&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;You can find them here:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bd94c260-b5e0-4d12-93ec-53567505e685&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=bd94c260-b5e0-4d12-93ec-53567505e685&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;We hope you find these documents useful, and I am personally interested in hearing from the Rules folks on the guidance I've provided in the Rules document.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9701630" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/kavitak/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/kavitak/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>PDC, here we come!</title><link>http://blogs.msdn.com/kavitak/archive/2008/10/07/pdc-here-we-come.aspx</link><pubDate>Wed, 08 Oct 2008 02:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8988684</guid><dc:creator>kavitak</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/8988684.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=8988684</wfw:commentRss><description>&lt;P&gt;The premier Microsoft conference, the &lt;A class="" href="http://microsoftpdc.com/" mce_href="http://microsoftpdc.com/"&gt;PDC&lt;/A&gt; - Professional Developers Conference, is happening in the week of Octobert 26th in Los Angeles! Microsoft stars will join movie stars and present a bunch of upcoming technologies and paradigms to thousands of developers.&lt;/P&gt;
&lt;P&gt;There are still seats left, so please &lt;A class="" href="http://microsoftpdc.com/Registration/" mce_href="http://microsoftpdc.com/Registration/"&gt;register&lt;/A&gt; if you havent already. You can pre-register for sessions you'd like to attend &lt;A class="" href="https://sessions.microsoftpdc.com/public/sessions.aspx" mce_href="https://sessions.microsoftpdc.com/public/sessions.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;We have a few talks on the technologies my team works on - WCF/WF. I hope to see you at these sessions or in the lounge where a bunch of product folks will be hanging around waiting to answer your questions. We know we've been quiet and we want to break the silence!&lt;/P&gt;
&lt;P&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;A href="http://channel9.msdn.com/pdc2008/TL17/"&gt;&lt;FONT face=Calibri size=3&gt;WF 4.0: A First Look&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;, Kenny Wolf&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;Programs coordinate work. The code for coordination and state management often obscures a program's purpose. Learn how programming with Windows Workflow Foundation (WF) 4.0 provides clarity of intent while preserving the functional richness of the .NET framework. See how easy it is to build workflows with the new Visual Studio workflow designer. Learn about text-based authoring options for WF. Hear how WF integrates well with other Microsoft technologies (WCF, WPF, ASP.NET). If you've looked at WF before, come and see the changes to data flow, composition, and new control flow styles. Significant improvements to usability, composability, and performance make Workflow a great fit for a broad range of solutions on both the client and the server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;A href="http://channel9.msdn.com/pdc2008/TL06/"&gt;&lt;FONT face=Calibri size=3&gt;WCF 4.0: Building WCF Services with WF in Microsoft .NET 4.0&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;, Ed Pinto&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;Eliminate the tradeoff between ease of service authoring and performant, scalable services. Hear about significant enhancements in WCF and WF to deal with the ever increasing complexity of communication. Learn how to use WCF to correlate messages to service instances using transport, context, and application payloads. See how the new WF messaging activities enable the modeling of rich protocols. Learn how WCF provides a default host for workflows exposing features such as distributed compensation and discovery. See how service definition in XAML completes the union of WF and WCF with a unified authoring experience that simplifies configuration and is fully integrated with IIS activation and deployment&lt;/SPAN&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;A href="http://channel9.msdn.com/pdc2008/TL21/"&gt;&lt;FONT face=Calibri size=3&gt;WF 4.0: Extending with Custom Activities&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; , Matt Winkler&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;Windows Workflow Foundation (WF) coordinates and manages individual units of work, encapsulated into activities. WF comes with a rich library of activities. Learn how to extend this library by encapsulating your own APIs with custom activities. See how to compose those basic activities into higher level units using rules, flowchart, and state machine control flow styles. Learn how to build your own WF control styles. Learn how to customize and re-host the workflow authoring experience using the new WF designer framework.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;A href="http://channel9.msdn.com/pdc2008/TL35/"&gt;&lt;FONT face=Calibri size=3&gt;WCF: Developing RESTful Services&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; , Steve Maine&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;Learn the latest features in Windows Communication Foundation (WCF) for building Web 2.0-style services that use URIs, HTTP GET, and other data formats beyond XML. See how these features can be applied to AJAX web sites, "REST" applications, and data feeds.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;A href="http://channel9.msdn.com/pdc2008/TL36/"&gt;&lt;FONT face=Calibri size=3&gt;Microsoft .NET Framework: Declarative Programming Using XAML&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; , Rob Relyea/Daniel Roth&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;If you're using Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), or Windows Workflow Foundation (WF), then XAML is your new best friend! Learn how an entire application-from presentation to data to services to workflow--can be authored using simple, declarative XAML notations introduced in the next version of the .NET Framework. Learn about XAML additions like: support for generics, object references, non-default constructors, and more.&lt;/SPAN&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;&lt;A href="http://channel9.msdn.com/pdc2008/TL38/"&gt;&lt;FONT face=Calibri size=3&gt;WCF: Zen of Performance and Scale&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; , Nicholas Allen&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;Join us for an interactive lunch discussion about different kinds of performance and scale requirements that are a crucial part of any distributed systems development life cycle. Learn the principles of Windows Communication Foundation (WCF) throughput and responsiveness optimization. Hear about WCF scalability improvements in the next version of the Microsoft .NET Framework.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A class="" title=_MailEndCompose name=_MailEndCompose&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8988684" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/kavitak/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/kavitak/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>Rule Reevaluation Behavior - need your feedback and scenarios</title><link>http://blogs.msdn.com/kavitak/archive/2008/01/14/rule-reevaluation-behavior-need-your-feedback-and-scenarios.aspx</link><pubDate>Tue, 15 Jan 2008 03:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7113480</guid><dc:creator>kavitak</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/7113480.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=7113480</wfw:commentRss><description>&lt;P&gt;RuleReevaluationBehavior has been supported in WF Rules since .NET Framework 3.0. It is an enum that you can tweak to control forward chaining and the re-evaluation on a per rule basis. Typically this property is used to prevent infinite looping due to dependencies that the rule has, either on it's own actions or on other rules.&lt;/P&gt;
&lt;P&gt;To learn more about this, please go to &lt;A href="http://msdn2.microsoft.com/en-us/library/system.workflow.activities.rules.rulereevaluationbehavior.aspx"&gt;http://msdn2.microsoft.com/en-us/library/system.workflow.activities.rules.rulereevaluationbehavior.aspx&lt;/A&gt;&amp;nbsp;or &lt;A href="http://msdn2.microsoft.com/en-us/library/aa480193.aspx#introwork_topic5"&gt;http://msdn2.microsoft.com/en-us/library/aa480193.aspx#introwork_topic5&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;We are trying to find more about the usage of RuleReevaluationBehavior - if you are using it in your WF Rules apps, please email me (contact me through my blog) as I am interested in learning about your scenario. We are considering removing this knob and want to determine the impact and understand what kind of scenarios it is being used for today.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7113480" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>Some open positions and Business Rules Forum 2007</title><link>http://blogs.msdn.com/kavitak/archive/2007/10/14/some-open-positions-and-business-rules-forum-2007.aspx</link><pubDate>Mon, 15 Oct 2007 06:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5457062</guid><dc:creator>kavitak</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/5457062.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=5457062</wfw:commentRss><description>&lt;P&gt;It's been a while since I blogged, due to vacations and just a lot of work. I also have some additional responsibilities at work and now own Activities, Rules and Community which has been keeping me busy. Part of the reason I am busy is that I have two open Program Manager positions, both posted on our career site - one for &lt;A class="" href="http://members.microsoft.com/careers/search/details.aspx?JobID=045FE61C-C657-497D-B4D4-186D9EF7744A&amp;amp;start=1&amp;amp;interval=10&amp;amp;SortCol=DatePosted" mce_href="http://members.microsoft.com/careers/search/details.aspx?JobID=045FE61C-C657-497D-B4D4-186D9EF7744A&amp;amp;start=1&amp;amp;interval=10&amp;amp;SortCol=DatePosted "&gt;Rules&lt;/A&gt; and one for the &lt;A class="" href="http://members.microsoft.com/careers/search/details.aspx?JobID=C062AFE8-51A7-404D-A639-E128C49F9447&amp;amp;start=1&amp;amp;interval=10&amp;amp;SortCol=DatePosted" mce_href="http://members.microsoft.com/careers/search/details.aspx?JobID=C062AFE8-51A7-404D-A639-E128C49F9447&amp;amp;start=1&amp;amp;interval=10&amp;amp;SortCol=DatePosted"&gt;Community&lt;/A&gt;&amp;nbsp;that I am actively trying to fill.&lt;/P&gt;
&lt;P&gt;I am attending the &lt;A class="" href="http://businessrulesforum.com/att_enterprise.php" mce_href="http://businessrulesforum.com/att_enterprise.php"&gt;Business Rules Forum&lt;/A&gt; next week in Orlando where I am co-presenting a session on &lt;A class="" href="http://businessrulesforum.com/abstracts.php?id=212" mce_href="http://businessrulesforum.com/abstracts.php?id=212"&gt;"Workflow and Rules: Better Together" with InRule's Theresa O' Neil&lt;/A&gt;. Looking forward to see what's new in the Rules community.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5457062" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>Windows Workflow Foundation Rules - Part II Webcast</title><link>http://blogs.msdn.com/kavitak/archive/2007/07/02/windows-workflow-foundation-rules-part-ii-webcast.aspx</link><pubDate>Mon, 02 Jul 2007 22:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3663474</guid><dc:creator>kavitak</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/3663474.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=3663474</wfw:commentRss><description>&lt;P&gt;I did a &lt;A class="" href="http://blogs.msdn.com/kavitak/archive/2007/05/17/intro-to-wf-rules-webcast.aspx" mce_href="http://blogs.msdn.com/kavitak/archive/2007/05/17/intro-to-wf-rules-webcast.aspx"&gt;webcast&lt;/A&gt; in May on Introduction to Windows Workflow Foundation Rules. I am doing another one this Friday, on some advanced scenarios and extensibility. I hope to see you there!&lt;/P&gt;
&lt;P&gt;Here's the registration link. I've been told that the recording will be available via the same link for 60 days.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'"&gt;Event Name: Webcast: Introduction to Windows Workflow Foundation Rules - Part II&lt;BR&gt;Start Date: 7/6/07&lt;BR&gt;Start Time: 1:30 PM (GMT-05:00) Eastern Time (US &amp;amp; Canada)&lt;BR&gt;End Time: 3:00 PM (GMT-05:00) Eastern Time (US &amp;amp; Canada)&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;BR&gt;Audio conferencing: +1 (866) 500-6738&lt;BR&gt;Participant code: 7545634&lt;BR&gt;Presenter code: 9070863&lt;BR&gt;&lt;BR&gt;Please click on the following link for more information regarding this Webcast&lt;BR&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344008&amp;amp;Culture=en-US"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344008&amp;amp;Culture=en-US&lt;/A&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3663474" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>Intro to WF Rules Webcast</title><link>http://blogs.msdn.com/kavitak/archive/2007/05/17/intro-to-wf-rules-webcast.aspx</link><pubDate>Thu, 17 May 2007 19:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2698733</guid><dc:creator>kavitak</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/2698733.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=2698733</wfw:commentRss><description>&lt;P&gt;I will be giving a "Introduction to Windows Workflow Foundation Rules" webcast on Friday May 18th at 11am PST. Hope to see you there!&lt;/P&gt;
&lt;P&gt;Description:&lt;/P&gt;
&lt;P&gt;This session provides an introduction to the rules engine capabilities provided in Windows Workflow Foundation (WF). In this webcast learn more about the WF Rules mechanisms, which also supports more advanced scenarios. See an example of how to externalize rules so that they can be maintained separately from the workflow assembly. In addition, learn how to author and execute rules outside of a workflow.&lt;/P&gt;
&lt;P&gt;Start Date: &lt;STRONG&gt;5/18/07&lt;BR&gt;&lt;/STRONG&gt;Start Time: 2:00 PM (GMT-05:00) Eastern Time (US &amp;amp; Canada)&lt;BR&gt;End Time: 3:30 PM (GMT-05:00) Eastern Time (US &amp;amp; Canada)&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Register Here &lt;BR&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032336112&amp;amp;Culture=en-US"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032336112&amp;amp;Culture=en-US&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2698733" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>Business Analyst Authoring support</title><link>http://blogs.msdn.com/kavitak/archive/2007/04/06/business-analyst-authoring-support.aspx</link><pubDate>Sat, 07 Apr 2007 03:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2042924</guid><dc:creator>kavitak</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/2042924.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=2042924</wfw:commentRss><description>In WF V1, we targeted developers and worked with some partners to enable high level authoring capabilities on top of our foundation. InRule went out with the general availability of their support for WF this week - you can read about it &lt;A class="" href="http://blogs.msdn.com/rulesteam/archive/2007/04/04/inrule-announces-general-availability-for-windows-workflow-foundation.aspx" mce_href="http://blogs.msdn.com/rulesteam/archive/2007/04/04/inrule-announces-general-availability-for-windows-workflow-foundation.aspx"&gt;here&lt;/A&gt;.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2042924" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>Another sample from the rules team - Rules against XML</title><link>http://blogs.msdn.com/kavitak/archive/2007/02/21/another-sample-from-the-rules-team-rules-against-xml.aspx</link><pubDate>Wed, 21 Feb 2007 22:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1736733</guid><dc:creator>kavitak</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/1736733.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=1736733</wfw:commentRss><description>&lt;P&gt;There's another new sample up, written by one of our testers Charlie.&amp;nbsp;This sample shows how the WF Rules&amp;nbsp;Engine can be used to process rules on Xml documents. This is something BizTalk BRE customers were able to do inside the Business Rules Composer, but is not obvious how to do with the WF Rules engine because of lack of first class tooling. However, since all the WF Rules Engine deals with is a .NET type, if you can convert your data as expose it to the engine as a type, you can easily accomplish the scenario. &lt;/P&gt;
&lt;P&gt;Get the sample here - &lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;A href="http://wf.netfx3.com/files/folders/rules_samples/entry8981.aspx"&gt;http://wf.netfx3.com/files/folders/rules_samples/entry8981.aspx&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1736733" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>A new custom activity sample - PolicyFromFile activity</title><link>http://blogs.msdn.com/kavitak/archive/2007/02/21/a-new-custom-activity-sample-policyfromfile-activity.aspx</link><pubDate>Wed, 21 Feb 2007 08:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1733118</guid><dc:creator>kavitak</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/1733118.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=1733118</wfw:commentRss><description>&lt;P&gt;Maggie, a tester on the Rules team, recently wrote a PolicyFromFile sample. The idea here is similar to the PolicyFromService sample that is part of the &lt;A class="" href="http://wf.netfx3.com/files/folders/rules_samples/entry309.aspx" mce_href="http://wf.netfx3.com/files/folders/rules_samples/entry309.aspx"&gt;ExternalRuleSetDemo&lt;/A&gt;, except that the PolicyFromFile activity does not use a database and externalizes rules to a file outside the workflow. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;At design time, the activity will read from a specified rules file, or if no .rules was defined, a default .rules file with the same name as the workflow file will be created. The name of the .rules file is set on the RulesFileName property.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Get the sample &lt;A class="" href="http://wf.netfx3.com/files/folders/rules_samples/entry8850.aspx" mce_href="http://wf.netfx3.com/files/folders/rules_samples/entry8850.aspx"&gt;here&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1733118" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>Authoring rules against a collection</title><link>http://blogs.msdn.com/kavitak/archive/2006/12/21/authoring-rules-against-a-collection.aspx</link><pubDate>Thu, 21 Dec 2006 22:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1341982</guid><dc:creator>kavitak</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/1341982.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=1341982</wfw:commentRss><description>&lt;P&gt;Sometimes you want to write rules against all items in a collection. In WF V1, this is not supported natively but can be achieved in the following manner: (you can come up with other ways too, but the essential idea is you want to simulate looping using forward chaining in rules)&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Rule 1 (Highest priority rule; Priority = 2)&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;IF true &lt;/P&gt;
&lt;P&gt;THEN&amp;nbsp;index = 0&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Rule 2 (Next higher priority rule; Priority = 1)&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;IF&amp;nbsp;index &amp;gt; myCollection.Length&lt;/P&gt;
&lt;P&gt;THEN Halt&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Rule 3 (Lowest priority rule; Priority = 0)&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;IF myCollection[index].... (do whatever you want with that element)&lt;/P&gt;
&lt;P&gt;THEN (whatever action you want); index = index + 1&lt;/P&gt;
&lt;P&gt;So, the way rule execution proceeds is that the highest priority rule (Rule 1) executes and initializes the index. The next rule (Rule 2) will fail the condition at the beginning but will be true when you reach the end of the collection, at which time, the ruleset execution will stop due to the special "Halt" action. The lowest priority rule (Rule 3) is really the one you wanted to write to do whatever check / action you wanted to do against an item. The fact that you increment the index causes a re-evaluation of Rule 2 (and hence the ruleset stops when you go through all the elements) and also Rule 3.&lt;/P&gt;
&lt;P&gt;Clearly, this is a workable solution, but not really pretty since you have to think about how to get this done when all you really would have liked to do is write the main rule (that is Rule 3). In our next version, this is one of the things we are going to make easier by providing native support for collections. How that will look is still being discussed, so I will not write about how will be able to write it, but imagine accomplishing the above scenario with just Rule 3 and some special syntax to indicate to the WF V.Next rule engine to manage the collection underneath for you.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1341982" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>TechReady 4 in Seattle</title><link>http://blogs.msdn.com/kavitak/archive/2006/12/19/techready-4-in-seattle.aspx</link><pubDate>Wed, 20 Dec 2006 02:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1327600</guid><dc:creator>kavitak</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/1327600.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=1327600</wfw:commentRss><description>As part of an effort to get the Microsoft field ready for the technologies the product teams are building, Microsoft organizes a conference called TechReady. It is Microsoft internal mainly meant for the Microsoft Technical Field community. TechReady 4 is in Seattle in February. As part of that, I am giving a talk on Windows Workflow Foundation Rules Extensibility. Over the holidays, one of the things I am going to be doing is getting my deck and demos in place. I want to get it done before the work madness begins again in January. Jurgen has given this &lt;A class="" href="http://wf.netfx3.com/files/folders/teched_2006_chalk_talks/entry3613.aspx" mce_href="http://wf.netfx3.com/files/folders/teched_2006_chalk_talks/entry3613.aspx"&gt;talk before&lt;/A&gt;, so I will be tailoring it mostly based on the feedback he has got and showing some new examples. If you are planning to attend and are curious to learn about a specific aspect, do let me know.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1327600" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>Linq to XSD releases Alpha today</title><link>http://blogs.msdn.com/kavitak/archive/2006/11/28/linq-to-xsd-releases-alpha-today.aspx</link><pubDate>Tue, 28 Nov 2006 09:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1164253</guid><dc:creator>kavitak</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/1164253.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=1164253</wfw:commentRss><description>&lt;P&gt;A month ago I was investigating authoring WF rules against XML. We dont support it out of the box, but a simple way of achieving this is by exposing your XML schema as a .Net type - and then author rules against that type. Simple, and doable with XSD.exe. Then I came across the "Linq to XSD" project within Microsoft, which gives you another way of doing this - it creates a .Net type for your schema which is Linq friendly which means you get all the type-ness you get from XSD and you also get the rich query model of Linq. The Linq to XSD project template has an additional build action on your .xsd and generates the type behind the scenes and compiles it in your assembly - pretty decent integration. And then if you love the expressiveness of Linq, you can just party on the generated type. &lt;/P&gt;
&lt;P&gt;The team has finally released a public alpha preview today so I can actually talk about this - Congrats to Ralf and his team! Check out the alpha today - you will find all you need here: &lt;A href="http://blogs.msdn.com/xmlteam/archive/2006/11/27/typed-xml-programmer-welcome-to-linq.aspx" mce_href="http://blogs.msdn.com/xmlteam/archive/2006/11/27/typed-xml-programmer-welcome-to-linq.aspx"&gt;http://blogs.msdn.com/xmlteam/archive/2006/11/27/typed-xml-programmer-welcome-to-linq.aspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you try to get this working with a WF project template in VS, you wont be able to do so in the same project. The reason is that WF needs a C# Code Provider corresponding to the version of the C# compiler used by Linq and that's not available yet in the set up. Questions, let me know.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1164253" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>How to write a caching Policy Activity to improve the performance of your WF rules</title><link>http://blogs.msdn.com/kavitak/archive/2006/10/17/how-to-write-a-caching-policy-activity-to-improve-the-performance-of-your-wf-rules.aspx</link><pubDate>Tue, 17 Oct 2006 23:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:836084</guid><dc:creator>kavitak</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/836084.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=836084</wfw:commentRss><description>&lt;P&gt;To follow up on my post from yesterday on &lt;A class="" href="http://blogs.msdn.com/kavitak/archive/2006/10/16/tuning-the-performance-of-your-rules.aspx" mce_href="http://blogs.msdn.com/kavitak/archive/2006/10/16/tuning-the-performance-of-your-rules.aspx"&gt;Tuning the performance of your WF Rules&lt;/A&gt;, here is some code that you can use to write a custom PolicyActivity that does caching of rule sets.&lt;/P&gt;
&lt;P&gt;The dictionary caches your rule set.&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: blue; mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;public&lt;/SPAN&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;PolicyCacheService&lt;/SPAN&gt; : &lt;SPAN style="COLOR: teal"&gt;WorkflowRuntimeService&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;Dictionary&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: teal"&gt;Type&lt;/SPAN&gt;, &lt;SPAN style="COLOR: teal"&gt;RuleDefinitions&lt;/SPAN&gt;&amp;gt; ruleCachedDefinitions = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;Dictionary&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: teal"&gt;Type&lt;/SPAN&gt;, &lt;SPAN style="COLOR: teal"&gt;RuleDefinitions&lt;/SPAN&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;RuleDefinitions&lt;/SPAN&gt; GetRuleDefinitions (&lt;SPAN style="COLOR: teal"&gt;Type&lt;/SPAN&gt; workflowType)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;RuleDefinitions&lt;/SPAN&gt; ruleDefinitions = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;lock&lt;/SPAN&gt; (ruleCachedDefinitions)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ruleCachedDefinitions.TryGetValue(workflowType, &lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt; ruleDefinitions);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (ruleDefinitions == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ruleDefinitions = GetRuleDefinitionsFromManifest(workflowType);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ruleCachedDefinitions.Add(workflowType, ruleDefinitions);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; (ruleDefinitions);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;RuleDefinitions&lt;/SPAN&gt; GetRuleDefinitionsFromManifest(&lt;SPAN style="COLOR: teal"&gt;Type&lt;/SPAN&gt; workflowType)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;(workflowType == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;throw&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;ArgumentNullException&lt;/SPAN&gt;(&lt;SPAN style="COLOR: maroon"&gt;"workflowType"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;RuleDefinitions&lt;/SPAN&gt; rules = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;String&lt;/SPAN&gt; resourceName = workflowType.Name + &lt;SPAN style="COLOR: maroon"&gt;".rules"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;Stream&lt;/SPAN&gt; stream = workflowType.Module.Assembly.GetManifestResourceStream(workflowType, resourceName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;(stream == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;stream = workflowType.Module.Assembly.GetManifestResourceStream(resourceName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;(stream != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; (&lt;SPAN style="COLOR: teal"&gt;StreamReader&lt;/SPAN&gt; reader = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;StreamReader&lt;/SPAN&gt;(stream))&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; (&lt;SPAN style="COLOR: teal"&gt;XmlReader&lt;/SPAN&gt; xmlReader = &lt;SPAN style="COLOR: teal"&gt;XmlReader&lt;/SPAN&gt;.Create(reader))&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;rules = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;WorkflowMarkupSerializer&lt;/SPAN&gt;().Deserialize(xmlReader) &lt;SPAN style="COLOR: blue"&gt;as&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;RuleDefinitions&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; rules;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -9pt"&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;The execute method of your custom activity would look something like this.&lt;/P&gt;
&lt;P&gt;Here, you access the rule set from the PolicyCacheService - the PolicyCacheService returns you a rule set from its cache or fetches it from disk.&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;ActivityExecutionStatus&lt;/SPAN&gt; Execute(&lt;SPAN style="COLOR: teal"&gt;ActivityExecutionContext&lt;/SPAN&gt; executionContext)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;PolicyCacheService&lt;/SPAN&gt; polCacheSvc = executionContext.GetService&amp;lt;&lt;SPAN style="COLOR: teal"&gt;PolicyCacheService&lt;/SPAN&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (polCacheSvc == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;) &lt;SPAN style="COLOR: blue"&gt;throw&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;InvalidOperationException&lt;/SPAN&gt;(&lt;SPAN style="COLOR: maroon"&gt;"PolicyCacheService is needed"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;Activity&lt;/SPAN&gt; root = &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green; mso-no-proof: yes; mso-bidi-font-family: Arial; mso-bidi-font-size: 8.0pt"&gt;// Getting the root activity&lt;/SPAN&gt;&lt;SPAN style="mso-no-proof: yes; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;while&lt;/SPAN&gt; (root.Parent!= &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;root = root.Parent;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; (&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; i = 0; i &amp;lt; RuleSetNames.Length; i++)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;RuleDefinitions&lt;/SPAN&gt; ruleDefs = polCacheSvc.GetRuleDefinitions(root.GetType());&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;RuleSet&lt;/SPAN&gt; rs = ruleDefs.RuleSets[RuleSetNames[i]];&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (rs != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;RuleEngine&lt;/SPAN&gt; re = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;RuleEngine&lt;/SPAN&gt;(rs,root.GetType());&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;re.Execute(root,executionContext);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;.Execute(executionContext);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=CodeGray2 style="BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0in 0in 0pt 81pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=836084" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>Business Rules Forum</title><link>http://blogs.msdn.com/kavitak/archive/2006/10/16/business-rules-forum.aspx</link><pubDate>Tue, 17 Oct 2006 02:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:833184</guid><dc:creator>kavitak</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/833184.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=833184</wfw:commentRss><description>I'll be attending the &lt;A class="" href="http://www.businessrulesforum.com/" mce_href="http://www.businessrulesforum.com/"&gt;Business Rules Forum&lt;/A&gt; in Washington D.C. in November. Really looking forward to getting immersed in a conference just focusing on Rules! Hopefully some of you rules folks who read my blog will be there at the conference as well, I'd love to meet you and get feedback on WF Rules. &lt;A class="" href="http://blogs.msdn.com/moustafa/default.aspx" mce_href="http://blogs.msdn.com/moustafa/default.aspx"&gt;Moustafa&lt;/A&gt;, the other Rules PM is also planning to be there.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=833184" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item><item><title>Tuning the performance of your WF rules</title><link>http://blogs.msdn.com/kavitak/archive/2006/10/16/tuning-the-performance-of-your-rules.aspx</link><pubDate>Tue, 17 Oct 2006 01:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:833182</guid><dc:creator>kavitak</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/kavitak/comments/833182.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kavitak/commentrss.aspx?PostID=833182</wfw:commentRss><description>&lt;P&gt;Someone asked a &lt;A class="" href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=826514&amp;amp;SiteID=1" mce_href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=826514&amp;amp;SiteID=1"&gt;question on the WF forum today&lt;/A&gt; about tuning the performance of his rules. &lt;/P&gt;
&lt;P&gt;Basically the WF Rules Engine is single threaded and we dont expose any knobs for you to tweak the performance of the rules in WF V1. One way for you to improve the performance of your rules is by really thinking about the design of your rules. &lt;/P&gt;
&lt;P&gt;One question to ask is - do I really need forward chaining? You can control whether or not by tweaking with the RuleChainingBehavior. Basically we will&amp;nbsp;keep re-evaluating higher priority rules if actions of other lower priority rules actions updated the fields used in the high priority rule's condition - if you dont think that's going to change the results of your rule evaluation, you could yourself order and prioritize rules in a way that you explicitly disable chaining and optimise how your rule set runs. &lt;/P&gt;
&lt;P&gt;One thing that can help you with your analysis is rules tracing - this is enabled by the following addition to your config file.&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;system.diagnostics&amp;gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;switches&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="System.Workflow.Activities.Rules" value="All" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/switches&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/system.diagnostics&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;FONT face=Arial&gt;Another way you can improve the performance is to write a custom PolicyActivity by deriving from it and then caching the RuleExecution and RuleValidation so that if the WF has other YourCustomPolicy activities which use the same RuleSet, then you can use the cached version and get better performance.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=833182" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kavitak/archive/tags/WF+Rules/default.aspx">WF Rules</category></item></channel></rss>