<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>CodersLog</title>
    <description>Develop.Learn.Share</description>
    <link>http://coderslog.info/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://coderslog.info/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://feeds2.feedburner.com/Coderslog</blogChannel:blink>
    <dc:creator>Coderslog</dc:creator>
    <dc:title>CodersLog</dc:title>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Coderslog" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>Resumable Workflow Activity</title>
      <description>&lt;div&gt;
&lt;strong&gt;&lt;font face="Tunga"&gt;BACKGROUND&lt;/font&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&gt;
Recently, I have been working on &lt;strong&gt;W&lt;/strong&gt;indows &lt;strong&gt;W&lt;/strong&gt;orkflow &lt;strong&gt;F&lt;/strong&gt;oundation. We are trying to create a custom host for workflow, and this workflow host is supposed to have a facility, such that it shold be able to provide a way to &amp;nbsp;resume from the exact point where a workflow failed from the Admin UI. Something similar to the &lt;strong&gt;Biztalk&lt;/strong&gt; &lt;strong&gt;HAT&lt;/strong&gt;. 
&lt;/div&gt;
&lt;div&gt;
Well, having said that the question how can something like this can be achieved ? 
&lt;/div&gt;
&lt;div&gt;
What I am going to present here is one of the ways of achieving it. There would be other ways which would be better than the way I am going present here, need less to say, that I am still trying to learn my way through Windows Workflow Foundation. 
&lt;/div&gt;
&lt;div&gt;
Well, the idea came to me after going through some of msdn articles about Workflow from &lt;strong&gt;Matt Milner. {Personal Opinion: He is damn good at explaining}&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&gt;
1. &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419656.aspx"&gt;Error Handling In Workflows&lt;/a&gt; - &lt;em&gt;Matt Milner&lt;/em&gt; 
&lt;/div&gt;
&lt;div&gt;
2. &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163414.aspx"&gt;ActivityExecutionContext in Workflows&lt;/a&gt; - &lt;em&gt;Matt Milner&lt;/em&gt; 
&lt;/div&gt;
&lt;div&gt;
3. &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163504.aspx"&gt;Build Custom Activities To Extend The Reach Of Your Workflows&lt;/a&gt; - &lt;em&gt;Matt Milner&lt;/em&gt; 
&lt;/div&gt;
&lt;div&gt;
I would highly recommend to read these articles before reading below. Even if you are not interested, I would recommend you to read the above articles&lt;em&gt;,&lt;/em&gt; they give hell of an insight into workflow. 
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;&lt;font face="Tunga"&gt;SOLUTION&lt;/font&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&gt;
So now you have the background information of the required stuff and as well as we have a problem at hand that we want to solve. This idea is based of RetryActivity. So we create a general purpose, WFFaultReportingSystem Service. I am registering the service to the run time&lt;em&gt;.&lt;/em&gt; This service becomes the medium of reporting the error to the Host, that something wrong happened. 
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;&lt;font face="monospace" color="#004080"&gt;using System;&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;&lt;font face="monospace" color="#004080"&gt;namespace Coderslog.Workflow.Services&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public interface IWFFaultReportingSystem&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void ReportError(Exception ex, object message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void ReportResumableError(Guid wfInstanceId, string queueName,Exception ex, object message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;/font&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&gt;
Now lets look at the activity itself. 
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;&lt;font face="monospace" color="#004080"&gt;using System;&lt;br /&gt;
using System.ComponentModel;&lt;br /&gt;
using System.ComponentModel.Design;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Workflow.ComponentModel;&lt;br /&gt;
using System.Workflow.ComponentModel.Design;&lt;br /&gt;
using System.Workflow.ComponentModel.Compiler;&lt;br /&gt;
using System.Workflow.ComponentModel.Serialization;&lt;br /&gt;
using System.Workflow.Runtime;&lt;br /&gt;
using System.Workflow.Activities;&lt;br /&gt;
using System.Workflow.Activities.Rules;&lt;br /&gt;
using Coderslog.Workflow.Services;&lt;br /&gt;
&lt;br /&gt;
namespace Coderslog.Workflow.Activities&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="monospace" color="#990055"&gt;[Designer(typeof(SequenceDesigner), typeof(IDesigner))]&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public partial class ResumableActivity : CompositeActivity, IActivityEventListener&amp;lt;QueueEventArgs&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;public ResumableActivity()&lt;br /&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;{&lt;br /&gt;
&lt;/font&gt;&lt;/strong&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;font face="monospace" color="#008000"&gt;//The call to the partial generated class&lt;/font&gt; &lt;font face="monospace" color="#004080"&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;&amp;nbsp;&lt;/font&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;font face="monospace" color="#004080"&gt;InitializeComponent();&lt;br /&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;&lt;/font&gt;&lt;/strong&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;&amp;nbsp; 
&lt;/div&gt;
&lt;div&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;&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;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;font face="monospace" color="#004080"&gt;QueueName &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;quot;ResumableActivity&amp;quot;;&lt;br /&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;&lt;/font&gt;&lt;/strong&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;&amp;nbsp;&lt;strong&gt;&lt;font face="monospace" color="#004080"&gt;CurrentActivityIndex &amp;nbsp;&amp;nbsp;&amp;nbsp;= 0;&lt;br /&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;}&lt;br /&gt;
&lt;/font&gt;&lt;/strong&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;font face="monospace" color="#004080"&gt;&amp;nbsp;&lt;/font&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;font face="monospace" color="#008000"&gt;//The Last Error that happened while executing any child activity&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/strong&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;strong&gt;&lt;font face="monospace" color="#004080"&gt;[Browsable(false)]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/strong&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;strong&gt;&lt;font face="monospace" color="#004080"&gt;public Exception LastError { get; set; }&lt;br /&gt;
&lt;/font&gt;&lt;/strong&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;/div&gt;
&lt;div&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;font face="monospace" color="#008000"&gt;//The Current Activity that I am trying to process now&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/strong&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;strong&gt;&lt;font face="monospace" color="#004080"&gt;[Browsable(false)]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/strong&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;strong&gt;&lt;font face="monospace" color="#004080"&gt;public int CurrentActivityIndex { get; set; }&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/strong&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;&lt;strong&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;if (EnabledActivities.Count == 0)&lt;br /&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;return ActivityExecutionStatus.Closed;&lt;br /&gt;
&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;//try to execute the child activities in a new context&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&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;BeginIteration(executionContext);&lt;br /&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;return ActivityExecutionStatus.Executing;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;div&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;&lt;strong&gt;&lt;font face="monospace" color="#008000"&gt;//Initiating the Iteration&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private void BeginIteration(ActivityExecutionContext executionContext)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;/&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;/create a new activity execution context&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&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;Activity child = EnabledActivities[CurrentActivityIndex];&lt;br /&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;ActivityExecutionContext newContext = executionContext.ExecutionContextManager.CreateExecutionContext(child);&lt;br /&gt;
&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;//register for both closed and faulted events&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&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;newContext.Activity.Closed += new EventHandler&amp;lt;ActivityExecutionStatusChangedEventArgs&amp;gt;(child_Closed);&lt;br /&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;newContext.Activity.Faulting += new EventHandler&amp;lt;ActivityExecutionStatusChangedEventArgs&amp;gt;(Activity_Faulting);&lt;br /&gt;
&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;//execute the clone activity&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&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;newContext.ExecuteActivity(newContext.Activity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void Activity_Faulting(object sender, ActivityExecutionStatusChangedEventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;//if the child faults, clear the exception if retrying&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&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;e.Activity.Faulting -= Activity_Faulting;&lt;br /&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;&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;//Get hold of the error&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&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;LastError = (Exception)e.Activity.GetValue(ActivityExecutionContext.CurrentExceptionProperty);&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;font color="#008000"&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;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;strong&gt;&lt;font face="monospace" color="#008000"&gt;//Clear the Error, We don&amp;#39;t want anyone to know anything about the Error&lt;/font&gt; &lt;font face="monospace" color="#004080"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&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;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;font face="monospace" color="#004080"&gt;e.Activity.SetValue(ActivityExecutionContext.CurrentExceptionProperty, null);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// Creates the queue and registers for items to be available.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;parentContext&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;parentEventHandler&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void Subscribe(ActivityExecutionContext parentContext, IActivityEventListener&amp;lt;QueueEventArgs&amp;gt; parentEventHandler)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;WorkflowQueuingService qService = parentContext.GetService&amp;lt;WorkflowQueuingService&amp;gt;();&lt;br /&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;if (qService != null)&lt;br /&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;{&lt;br /&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;if (!qService.Exists(QueueName))&lt;br /&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;{&lt;br /&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;WorkflowQueue q = qService.CreateWorkflowQueue(QueueName, false);&lt;br /&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;q.RegisterForQueueItemAvailable(parentEventHandler, QualifiedName);&lt;br /&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;}&lt;br /&gt;
&lt;br /&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;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;font color="#008000"&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;&lt;/font&gt;&lt;strong&gt;&lt;font face="monospace" color="#008000"&gt;//Property for holding the QueueName on which to Subscribe and Expect the response&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Browsable(false)]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public string QueueName { get; private set; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// Removes the listener from the queue and deletes the queue. &amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;parentContext&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;parentEventHandler&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void Unsubscribe(ActivityExecutionContext parentContext, IActivityEventListener&amp;lt;QueueEventArgs&amp;gt; parentEventHandler)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;WorkflowQueuingService qService = parentContext.GetService&amp;lt;WorkflowQueuingService&amp;gt;();&lt;br /&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;if (qService != null)&lt;br /&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;{&lt;br /&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;WorkflowQueue queue = qService.GetWorkflowQueue(QueueName);&lt;br /&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;if (queue != null)&lt;br /&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;{&lt;br /&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;queue.UnregisterForQueueItemAvailable(parentEventHandler);&lt;br /&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;qService.DeleteWorkflowQueue(QueueName);&lt;br /&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;}&lt;br /&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;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;/font&gt;&lt;/strong&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;/div&gt;
&lt;div&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;strong&gt;&lt;font face="monospace" color="#008000"&gt;// Helper Method to Get Hold of the Queue&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private WorkflowQueue GetQueue(ActivityExecutionContext ctx)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;WorkflowQueuingService qService = ctx.GetService&amp;lt;WorkflowQueuingService&amp;gt;();&lt;br /&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;if (qService != null &amp;amp;&amp;amp; qService.Exists(QueueName))&lt;br /&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;return qService.GetWorkflowQueue(QueueName);&lt;br /&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;else&lt;br /&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;return null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;font color="#008000"&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;&lt;/font&gt;&lt;strong&gt;&lt;font face="monospace" color="#008000"&gt;//The Big Bang Close Method&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void child_Closed(object sender, ActivityExecutionStatusChangedEventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;ActivityExecutionContext thisContext = sender as ActivityExecutionContext;&lt;br /&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;ActivityExecutionContext childContext = thisContext.ExecutionContextManager.GetExecutionContext(e.Activity);&lt;br /&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;e.Activity.Closed -= child_Closed;&lt;br /&gt;
&lt;br /&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;thisContext.ExecutionContextManager.CompleteExecutionContext(childContext);&lt;br /&gt;
&lt;/font&gt;&lt;/strong&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;&amp;nbsp; 
&lt;/div&gt;
&lt;div&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;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;font face="monospace" color="#008000"&gt;//if of the EnabledActivities, the current one has completed successfully, move to the next one&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&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;if (e.ExecutionResult == ActivityExecutionResult.Succeeded &amp;amp;&amp;amp; CurrentActivityIndex &amp;lt; EnabledActivities.Count - 1)&lt;br /&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;{&lt;br /&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;this.SetValue(ActivityExecutionContext.CurrentExceptionProperty, null);&lt;br /&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;CurrentActivityIndex += 1;&lt;br /&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;BeginIteration(thisContext);&lt;br /&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;return;&lt;br /&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;}&lt;br /&gt;
&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;//if the child completed successfully, then we can close&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&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;if (e.ExecutionResult == ActivityExecutionResult.Succeeded &amp;amp;&amp;amp; CurrentActivityIndex == EnabledActivities.Count - 1)&lt;br /&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;{&lt;br /&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;this.SetValue(ActivityExecutionContext.CurrentExceptionProperty, null);&lt;br /&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;thisContext.CloseActivity();&lt;br /&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;return;&lt;br /&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;}&lt;br /&gt;
&lt;br /&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;&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;//otherwise, if we are not done retrying&lt;br /&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;//we need to resume again and make sure to clean up errors&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&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;if (this.ExecutionStatus == ActivityExecutionStatus.Executing)&lt;br /&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;{&lt;br /&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;SetResumePoint(e, thisContext);&lt;br /&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;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;/font&gt;&lt;/strong&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;/div&gt;
&lt;div&gt;
&lt;font color="#008000"&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;&lt;/font&gt;&lt;strong&gt;&lt;font face="monospace" color="#008000"&gt;// We try and get the instance of the Fault Reposrting System, if yes, we report the error and subscribe to the Queue&lt;/font&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&gt;
&lt;font color="#008000"&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;&lt;/font&gt;&lt;strong&gt;&lt;font face="monospace" color="#008000"&gt;// so that on basis of the users input we would be able to resume from the point where it broke or terminate&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private void SetResumePoint(ActivityExecutionStatusChangedEventArgs e, ActivityExecutionContext thisContext)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;IWFFaultReportingSystem wfFRS = thisContext.GetService&amp;lt;IWFFaultReportingSystem&amp;gt;();&lt;br /&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;var error = LastError;&lt;br /&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;if (wfFRS == null)&lt;br /&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;{&lt;br /&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;throw new Exception(&lt;/font&gt;&lt;font face="monospace" color="#990055"&gt;&amp;quot;This activity requires that the Service IWFFaultReportingSystem is registered&amp;quot;&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;);&lt;br /&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;}&lt;br /&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;if (error != null)&lt;br /&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;{&lt;br /&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;this.SetValue(ActivityExecutionContext.CurrentExceptionProperty, null);&lt;br /&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;Subscribe(thisContext, this);&lt;br /&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;wfFRS.ReportResumableError(WorkflowInstanceId, QueueName, error, null);&lt;br /&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;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;/font&gt;&lt;/strong&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;/div&gt;
&lt;div&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;strong&gt;&lt;font face="monospace" color="#008000"&gt;// Fires when there is the required actvity in the Queue&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void OnEvent(object sender, QueueEventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;//start a new iteration after the event happens&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&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;ActivityExecutionContext ctx = sender as ActivityExecutionContext;&lt;br /&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;if (sender == null)&lt;br /&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;throw new ArgumentException(&lt;/font&gt;&lt;font face="monospace" color="#990055"&gt;&amp;quot;Sender must be ActivityExecutionContext&amp;quot;&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;);&lt;br /&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;&lt;br /&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;WorkflowQueue q = GetQueue(ctx);&lt;br /&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;if (q != null)&lt;br /&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;{&lt;br /&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;object data = q.Dequeue();&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;//use the data - Resume&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;&lt;br /&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;if (data != null &amp;amp;&amp;amp; bool.Parse(data.ToString()))&lt;br /&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;{&lt;br /&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;Unsubscribe(ctx, this);&lt;br /&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;BeginIteration(ctx);&lt;br /&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;}&lt;br /&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;else&lt;br /&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;{&lt;br /&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;throw new ApplicationException(&lt;/font&gt;&lt;font face="monospace" color="#990055"&gt;&amp;quot;The Workflow cannot be Resumed from this point onwards!&amp;quot;&lt;/font&gt;&lt;font face="monospace" color="#004080"&gt;);&lt;br /&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;}&lt;br /&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;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;/font&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&gt;
The other peripherals: 
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;&lt;font face="monospace" color="#000080"&gt;using System;&lt;br /&gt;
using System.ComponentModel;&lt;br /&gt;
using System.ComponentModel.Design;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
using System.Workflow.ComponentModel;&lt;br /&gt;
using System.Workflow.ComponentModel.Design;&lt;br /&gt;
using System.Workflow.ComponentModel.Compiler;&lt;br /&gt;
using System.Workflow.ComponentModel.Serialization;&lt;br /&gt;
using System.Workflow.Runtime;&lt;br /&gt;
using System.Workflow.Activities;&lt;br /&gt;
using System.Workflow.Activities.Rules;&lt;br /&gt;
&lt;br /&gt;
namespace Coderslog.Workflow.Activities&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public partial class ResumableActivity&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;#region Designer generated code&lt;br /&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;&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#008000"&gt;/// &amp;lt;summary&amp;gt;&lt;br /&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;/// Required method for Designer support - do not modify&lt;br /&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;/// the contents of this method with the code editor.&lt;br /&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;lt;/summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/strong&gt;&lt;font color="#008000"&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;&lt;/font&gt;&lt;strong&gt;&lt;font face="monospace" color="#000080"&gt;[System.Diagnostics.DebuggerNonUserCode]&lt;br /&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;private void InitializeComponent()&lt;br /&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;{&lt;br /&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;&amp;nbsp;this.Name = &amp;quot;ResumableActivity&amp;quot;;&lt;br /&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;}&lt;br /&gt;
&lt;br /&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;#endregion&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;/font&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&gt;
This covers the Activity. I have tried and put comments where ever required. Hopefully it should be self explanatory. 
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;&lt;font face="Tunga"&gt;IMPORTANT PART OF CLIENT CODE - TEST HARNESS&lt;/font&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&gt;
Sample &lt;strong&gt;&lt;font color="#c00000"&gt;IWFFaultReportingSystem.cs implementation&lt;/font&gt;&lt;/strong&gt;. 
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;&lt;font face="monospace" color="#000080"&gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using CP.Services;&lt;br /&gt;
using System.Workflow.Runtime;&lt;br /&gt;
&lt;br /&gt;
namespace Coderslog.Client.ResumableWorkflow&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public class FaultReportingSystem:IWFFaultReportingSystem&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WorkflowRuntime _runtime;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="monospace" color="#ff0080"&gt;Guid &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_instanceId;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_queueName;&lt;/font&gt;&lt;font face="monospace" color="#000080"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public FaultReportingSystem(WorkflowRuntime runtime)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;_runtime = runtime;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#region IWFFaultReportingSystem Members&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void ReportError(Exception ex, object message)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;Console.WriteLine(ex.Message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void ReportResumableError(Guid wfInstanceId, string queueName, Exception ex, object message)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;Console.WriteLine(&amp;quot;WF ID :&amp;quot; + &amp;nbsp;wfInstanceId.ToString());&lt;br /&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;Console.WriteLine(&amp;quot;Queue Name :&amp;quot; + queueName);&lt;br /&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;Console.WriteLine(&amp;quot;Error :&amp;quot; + ex.Message);&lt;br /&gt;
&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#ff0080"&gt;_instanceId = wfInstanceId;&lt;br /&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;_queueName = queueName;&lt;/font&gt;&lt;font face="monospace" color="#000080"&gt;&lt;br /&gt;
&lt;br /&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;var action = new Action(ProcessError);&lt;br /&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;action.BeginInvoke(CallBack, action); &amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void ProcessError()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;Console.WriteLine(&amp;quot;What you want to do ? R for Resuming or any key for Exit&amp;quot;);&lt;br /&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;var key = Console.ReadLine();&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#ff0080"&gt;var instance = _runtime.GetWorkflow(_instanceId);&lt;/font&gt;&lt;font face="monospace" color="#000080"&gt;&lt;br /&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;if (key == &amp;quot;R&amp;quot; || key == &amp;quot;r&amp;quot;)&lt;br /&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;{&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#ff0080"&gt;instance.EnqueueItem(_queueName, true, null, null);&lt;/font&gt;&lt;font face="monospace" color="#000080"&gt;&lt;br /&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;}&lt;br /&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;else&lt;br /&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;{&lt;br /&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;&lt;/font&gt;&lt;font face="monospace" color="#ff0080"&gt;instance.EnqueueItem(_queueName, false, null, null);&lt;/font&gt;&lt;font face="monospace" color="#000080"&gt;&lt;br /&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;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endregion&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static void CallBack(IAsyncResult ar)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;var action = ar.AsyncState as Action;&lt;br /&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;if (action != null)&lt;br /&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;action.EndInvoke(ar);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;/font&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&gt;
The Highlighted part shows what the user needs to do to resume the workflow. Just drop a message in the Workflow Queue. 
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kwV1c5cXBpzhBeqeUGm4gE9Jdec/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kwV1c5cXBpzhBeqeUGm4gE9Jdec/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kwV1c5cXBpzhBeqeUGm4gE9Jdec/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kwV1c5cXBpzhBeqeUGm4gE9Jdec/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Coderslog/~4/qy-V_qSenhA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Coderslog/~3/qy-V_qSenhA/post.aspx</link>
      <author>mail.nospam@nospam.coderslog.info (ipsit)</author>
      <comments>http://coderslog.info/post/Resumable-Workflow-Activity.aspx#comment</comments>
      <guid isPermaLink="false">http://coderslog.info/post.aspx?id=62893a71-17fc-45f8-9fed-ec2ae540f04c</guid>
      <pubDate>Wed, 14 Oct 2009 21:19:00 +0000</pubDate>
      <category>.Net 3.0</category>
      <category>WF</category>
      <category>Custom Activity</category>
      <dc:publisher>ipsit</dc:publisher>
      <pingback:server>http://coderslog.info/pingback.axd</pingback:server>
      <pingback:target>http://coderslog.info/post.aspx?id=62893a71-17fc-45f8-9fed-ec2ae540f04c</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://coderslog.info/trackback.axd?id=62893a71-17fc-45f8-9fed-ec2ae540f04c</trackback:ping>
      <wfw:comment>http://coderslog.info/post/Resumable-Workflow-Activity.aspx#comment</wfw:comment>
      <wfw:commentRss>http://coderslog.info/syndication.axd?post=62893a71-17fc-45f8-9fed-ec2ae540f04c</wfw:commentRss>
    <feedburner:origLink>http://coderslog.info/post.aspx?id=62893a71-17fc-45f8-9fed-ec2ae540f04c</feedburner:origLink></item>
    <item>
      <title>Identifying the Name of the local Machine in C#</title>
      <description>&lt;p&gt;
&lt;font size="1"&gt;&lt;span style="color: #0000ff; font-size: x-small"&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="1"&gt;&lt;span style="color: #0000ff; font-size: x-small"&gt;string&lt;/span&gt;&lt;span style="font-size: x-small"&gt; name = &lt;/span&gt;&lt;span style="color: #2b91af; font-size: x-small"&gt;Environment&lt;/span&gt;&lt;span style="font-size: x-small"&gt;.MachineName;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #0000ff; font-size: x-small"&gt;string&lt;/span&gt;&lt;span style="font-size: x-small"&gt; name = System.Net.&lt;/span&gt;&lt;span style="color: #2b91af; font-size: x-small"&gt;Dns&lt;/span&gt;&lt;span style="font-size: x-small"&gt;.GetHostName();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #0000ff; font-size: x-small"&gt;string&lt;/span&gt;&lt;span style="font-size: x-small"&gt; name = System.Windows.Forms.&lt;/span&gt;&lt;span style="color: #2b91af; font-size: x-small"&gt;SystemInformation&lt;/span&gt;&lt;span style="font-size: x-small"&gt;.ComputerName;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #0000ff; font-size: x-small"&gt;string&lt;/span&gt;&lt;span style="font-size: x-small"&gt; name = System.&lt;/span&gt;&lt;span style="color: #2b91af; font-size: x-small"&gt;Environment&lt;/span&gt;&lt;span style="font-size: x-small"&gt;.GetEnvironmentVariable(&lt;/span&gt;&lt;span style="color: #a31515; font-size: x-small"&gt;&amp;ldquo;COMPUTERNAME&amp;rdquo;&lt;/span&gt;&lt;span style="font-size: x-small"&gt;);&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9n3gBMDpVY2dfnL_Oy4kn7XWXMk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9n3gBMDpVY2dfnL_Oy4kn7XWXMk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9n3gBMDpVY2dfnL_Oy4kn7XWXMk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9n3gBMDpVY2dfnL_Oy4kn7XWXMk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Coderslog/~4/z9wScdTQExg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Coderslog/~3/z9wScdTQExg/post.aspx</link>
      <author>mail.nospam@nospam.coderslog.info (editor)</author>
      <comments>http://coderslog.info/post/Identifying-the-Name-of-the-local-Machine-in-C.aspx#comment</comments>
      <guid isPermaLink="false">http://coderslog.info/post.aspx?id=f1183ff3-3863-4180-96f7-128e765bca8f</guid>
      <pubDate>Fri, 02 Oct 2009 14:36:00 +0000</pubDate>
      <category>.Net 3.0</category>
      <category>.Net 4.0</category>
      <dc:publisher>editor</dc:publisher>
      <pingback:server>http://coderslog.info/pingback.axd</pingback:server>
      <pingback:target>http://coderslog.info/post.aspx?id=f1183ff3-3863-4180-96f7-128e765bca8f</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://coderslog.info/trackback.axd?id=f1183ff3-3863-4180-96f7-128e765bca8f</trackback:ping>
      <wfw:comment>http://coderslog.info/post/Identifying-the-Name-of-the-local-Machine-in-C.aspx#comment</wfw:comment>
      <wfw:commentRss>http://coderslog.info/syndication.axd?post=f1183ff3-3863-4180-96f7-128e765bca8f</wfw:commentRss>
    <feedburner:origLink>http://coderslog.info/post.aspx?id=f1183ff3-3863-4180-96f7-128e765bca8f</feedburner:origLink></item>
    <item>
      <title>Simple Where Query Language</title>
      <description>&lt;div&gt;
Simple Where Query Language 
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;Background&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&gt;
There was this idea that was popped in for creation of CRUD Services for selected entities in the Current Project that I am working on. So, we ended up creating a set of &lt;strong&gt;C&lt;/strong&gt;reate&lt;strong&gt;U&lt;/strong&gt;pdate&lt;strong&gt;R&lt;/strong&gt;ead&lt;strong&gt;D&lt;/strong&gt;elete services. Now Create, Update and Delete are fine but Read had two overloads, Read by primary key and Read All. We wanted a way to filter it further. I know a purists is reading this, he would be detesting me about the idea of a CRUD Service, but I am just a developer and I am not the one who calls the shots here, I just do what I am asked to do and try to do it in a best possible way. Ne ways, we wanted to filter the Reads further and we wanted a soultion that was similar to SQL Where part and being limited to just one entity. 
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;Solution&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&gt;
I thought and even suggested, should we create a full blown where part or should we just use Regex friendly strings but was not solving our purpose. So I ended up writing a language and then generating a lexer and parser. So now you can guess, this one is a post about languages and definitely &lt;a href="http://www.antlr.org/"&gt;ANTLR&lt;/a&gt;. 
&lt;/div&gt;
&lt;div&gt;
Below is a simple sub part of the Grammar. This is the first time i am using ANTLR and I am not quite aware of the best practices and please pardon my ignorance. 
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;&lt;em&gt;Grammar:&lt;/em&gt;&lt;/strong&gt; 
&lt;/div&gt;
&lt;div&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;/div&gt;
&lt;blockquote&gt;
	&lt;div&gt;
	&lt;strong&gt;&lt;font face="monospace" color="#004080"&gt;grammar simplewhere;&lt;br /&gt;
	&lt;br /&gt;
	options&lt;br /&gt;
	{&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;language=CSharp2;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	tokens {&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AND=&amp;#39;?&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OR=&amp;#39;|&amp;#39;;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EQUALS =&amp;#39;=&amp;#39;;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LIKE=&amp;#39;like&amp;#39;;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GREATER=&amp;#39;&amp;gt;&amp;#39;;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LESSER=&amp;#39;&amp;lt;&amp;#39;;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GREATERTHANEQUALTO = &amp;#39;&amp;gt;=&amp;#39; ;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LESSERTHANEQUALTO = &amp;#39;&amp;lt;=&amp;#39;;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	clause &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;br /&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;&amp;nbsp;clauseitem&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;clauseitem (AND SPACE STARTGROUP SPACE clauseitem ENDGROUP SPACE)+&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;clauseitem (OR SPACE STARTGROUP SPACE clauseitem ENDGROUP SPACE)+&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;STARTGROUP SPACE clauseitem ENDGROUP SPACE (AND SPACE STARTGROUP SPACE clauseitem ENDGROUP SPACE)+&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;STARTGROUP SPACE clauseitem ENDGROUP SPACE (OR SPACE STARTGROUP SPACE clauseitem ENDGROUP SPACE)+&lt;br /&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;;&lt;br /&gt;
	&lt;br /&gt;
	clauseitem &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&lt;br /&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;&amp;nbsp;criteriaitem&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;criteriaitem (AND SPACE criteriaitem)+&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;criteriaitem (OR SPACE criteriaitem)+&lt;br /&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;&lt;br /&gt;
	&lt;br /&gt;
	criteriaitem &amp;nbsp;&amp;nbsp;&amp;nbsp;: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&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;&amp;nbsp;COLUMN SPACE EQUALS SPACE NUM SPACE&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;COLUMN SPACE EQUALS SPACE VALUE SPACE&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;COLUMN SPACE EQUALS SPACE GUID SPACE &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;COLUMN SPACE LIKE SPACE VALUE SPACE&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;COLUMN SPACE GREATER SPACE NUM SPACE&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;COLUMN SPACE LESSER SPACE NUM &amp;nbsp;SPACE&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;COLUMN SPACE GREATERTHANEQUALTO SPACE NUM &amp;nbsp;SPACE&lt;br /&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;&amp;nbsp;|&lt;br /&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;&amp;nbsp;COLUMN SPACE LESSERTHANEQUALTO SPACE NUM SPACE&lt;br /&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;;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	NUM &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;br /&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;&amp;nbsp;( &amp;nbsp;&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)+&lt;br /&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;;&lt;br /&gt;
	&lt;br /&gt;
	VALUE &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&lt;br /&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;&amp;nbsp;&amp;#39;\&amp;#39;&amp;#39;!(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;%&amp;#39;)+&amp;#39;\&amp;#39;&amp;#39;!&lt;br /&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;;&lt;br /&gt;
	&lt;br /&gt;
	GUID &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&lt;br /&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;&amp;nbsp;&amp;#39;\&amp;#39;&amp;#39;!(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)&lt;br /&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;&amp;nbsp;&amp;#39;-&amp;#39; (&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)&lt;br /&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;&amp;nbsp;&amp;#39;-&amp;#39;(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)&lt;br /&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;&amp;nbsp;&amp;#39;-&amp;#39;(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)&lt;br /&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;&amp;nbsp;&amp;#39;-&amp;#39;(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;|&amp;#39;0&amp;#39;..&amp;#39;9&amp;#39;)&lt;br /&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;&amp;nbsp;&amp;#39;\&amp;#39;&amp;#39;!&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	COLUMN &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;br /&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;&amp;nbsp;(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;|&amp;#39;A&amp;#39;..&amp;#39;Z&amp;#39;)+&lt;br /&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;&lt;br /&gt;
	&lt;br /&gt;
	STARTGROUP &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&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;&amp;nbsp;&amp;#39;(&amp;#39;&lt;br /&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;;&lt;br /&gt;
	&lt;br /&gt;
	ENDGROUP &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;br /&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;&amp;nbsp;&amp;#39;)&amp;#39;&lt;br /&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;;&lt;br /&gt;
	&lt;br /&gt;
	SPACE &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;br /&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;&amp;nbsp;&amp;#39;\t&amp;#39; |&lt;br /&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;&amp;nbsp;&amp;#39; &amp;#39; |&lt;br /&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;&amp;nbsp;&amp;#39;\r&amp;#39;|&lt;br /&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;&amp;nbsp;&amp;#39;\n&amp;#39;|&lt;br /&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;&amp;nbsp;&amp;#39;\u000C&amp;#39;&lt;br /&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;/font&gt;&lt;/strong&gt; 
	&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;
In the coming days I will start writing more about it and explain more on it. This is just an introduction. Keep reading. &amp;nbsp; :) 
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9Gs0oHlCgwDgVf9vUfxOdMVVG9Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9Gs0oHlCgwDgVf9vUfxOdMVVG9Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9Gs0oHlCgwDgVf9vUfxOdMVVG9Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9Gs0oHlCgwDgVf9vUfxOdMVVG9Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Coderslog/~4/-e0yxIiiGsI" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Coderslog/~3/-e0yxIiiGsI/post.aspx</link>
      <author>mail.nospam@nospam.coderslog.info (ipsit)</author>
      <comments>http://coderslog.info/post/Simple-Where-Query-Language.aspx#comment</comments>
      <guid isPermaLink="false">http://coderslog.info/post.aspx?id=acf4612a-82e4-4c97-b069-73d2c1dba477</guid>
      <pubDate>Wed, 30 Sep 2009 14:39:00 +0000</pubDate>
      <category>ANTLR</category>
      <category>DSL</category>
      <dc:publisher>ipsit</dc:publisher>
      <pingback:server>http://coderslog.info/pingback.axd</pingback:server>
      <pingback:target>http://coderslog.info/post.aspx?id=acf4612a-82e4-4c97-b069-73d2c1dba477</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://coderslog.info/trackback.axd?id=acf4612a-82e4-4c97-b069-73d2c1dba477</trackback:ping>
      <wfw:comment>http://coderslog.info/post/Simple-Where-Query-Language.aspx#comment</wfw:comment>
      <wfw:commentRss>http://coderslog.info/syndication.axd?post=acf4612a-82e4-4c97-b069-73d2c1dba477</wfw:commentRss>
    <feedburner:origLink>http://coderslog.info/post.aspx?id=acf4612a-82e4-4c97-b069-73d2c1dba477</feedburner:origLink></item>
    <item>
      <title>dynamic - II - Let's ILDASM it</title>
      <description>&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
You remember the &lt;a rel="Dynamic .Net 4.0 ILDASM" href="http://coderslog.info/post/dynamic-Introduction.aspx" title="Dynamic - Introduction"&gt;previous post&lt;/a&gt; on dynamic. We will today look into it in a bit more detail. Yeah, let&amp;#39;s ILDASM it and try and identify what is going on under the hood. But for the context of the post let&amp;#39;s look at a simpler tale.
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;blockquote&gt;
	&lt;blockquote&gt;
		&lt;blockquote&gt;
			&lt;blockquote&gt;
				&lt;div&gt;
				&lt;font face="monospace" color="#008000"&gt;namespace Coderslog.Net4.Samples&lt;br /&gt;
				{&lt;br /&gt;
				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public class SimpleDynamic&lt;br /&gt;
				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
				&lt;br /&gt;
				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void CallDoSomething()&lt;br /&gt;
				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;var instance = GetDoSomething();&lt;br /&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;instance.DoSometing();&lt;br /&gt;
				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
				&lt;br /&gt;
				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private dynamic GetDoSomething()&lt;br /&gt;
				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;return new BehaviourA();&lt;br /&gt;
				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
				}&lt;/font&gt;
				&lt;/div&gt;
			&lt;/blockquote&gt;
		&lt;/blockquote&gt;
	&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;div&gt;
A very basic class, hmmm which roughly translates to something like, I might not be absolutely correct, but to get a fair idea, it is something like the following
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
&lt;font face="monospace" color="#0000c0"&gt;public class SimpleDynamic&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Method: A Bit more involved than the reflection way, with Optimization &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;font face="monospace" color="#0000c0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void CallDoSomething()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;object instance = this.GetDoSomething();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (CallDoSometning_SiteContainer.delegatePlaceHolder == null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;CallDoSometning_SiteContainer.delegatePlaceHolder =&lt;br /&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;CallSite&amp;lt;Action&amp;lt;CallSite, object&amp;gt;&amp;gt;.Create&lt;/font&gt;&lt;font face="monospace" color="#ff0000"&gt;(&lt;/font&gt;&lt;font face="monospace" color="#0000c0"&gt;&lt;br /&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;&amp;nbsp;new CSharpInvokeMemberBinder&lt;/font&gt;&lt;font face="monospace" color="#00ff00"&gt;(&lt;/font&gt;&lt;font face="monospace" color="#0000c0"&gt;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="monospace" color="#0080ff"&gt;CSharpCallFlags.None&lt;/font&gt;&lt;font face="monospace" color="#400000"&gt;,&lt;/font&gt; &lt;font face="monospace" color="#0000c0"&gt;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&lt;/font&gt;&lt;font face="monospace" color="#0080ff"&gt;DoSometing&lt;/font&gt;&lt;font face="monospace" color="#0000c0"&gt;&amp;quot;&lt;/font&gt;&lt;font face="monospace" color="#400000"&gt;,&lt;/font&gt; &lt;font face="monospace" color="#0000c0"&gt;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;typeof(&lt;/font&gt;&lt;font face="monospace" color="#0080ff"&gt;SimpleDynamic&lt;/font&gt;&lt;font face="monospace" color="#0000c0"&gt;)&lt;/font&gt;&lt;font face="monospace" color="#400000"&gt;,&lt;/font&gt; &lt;font face="monospace" color="#0000c0"&gt;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;null&lt;/font&gt;&lt;font face="monospace" color="#400000"&gt;,&lt;/font&gt; &lt;font face="monospace" color="#0000c0"&gt;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new []&lt;br /&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;&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;br /&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;&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;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="monospace" color="#0080ff"&gt;new CSharpArgumentInfo(&lt;br /&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CSharpArgumentInfoFlags.None&lt;br /&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;, null&lt;br /&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;&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;&amp;nbsp;&amp;nbsp;)&lt;/font&gt; &lt;font face="monospace" color="#0000c0"&gt;&lt;br /&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;&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;br /&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;&amp;nbsp;&lt;/font&gt;&lt;font face="monospace" color="#00ff00"&gt;)&lt;/font&gt;&lt;font face="monospace" color="#ff0000"&gt;)&lt;/font&gt;&lt;font face="monospace" color="#0000c0"&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CallDoSometning_SiteContainer.&lt;br /&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;delegatePlaceHolder.&lt;br /&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;&amp;nbsp;Target.Invoke(&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CallDoSometning_SiteContainer.delegatePlaceHolder&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;, instance);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//But theres an attribute on the object of&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Type:System.Runtime.CompilerServices.DynamicAttribute&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private object GetDoSomething()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return new BehaviourA();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Nested Types&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Compiler Generated Class- Internal Class&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private static class CallDoSometning_SiteContainer&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Fields&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static CallSite&amp;lt;Action&amp;lt;CallSite, object&amp;gt;&amp;gt; delegatePlaceHolder;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;font face="monospace"&gt;&lt;br /&gt;
}&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
So as you can see, the internal static class is there so as to ensure that, we don&amp;#39;t always spend resources on the delegate, once it is evaluated.
&lt;/div&gt;
&lt;div&gt;
If we look at the GetDomethingMethod, the Dydnamic Attribute on the returned object from the method GetDoSomething tells the run time that &amp;quot;&lt;em&gt;Indicates that the use of &lt;a href="http://msdn.microsoft.com/en-us/library/system.object%28VS.100%29.aspx"&gt;&amp;nbsp;Object&lt;/a&gt; on a member is meant to be treated as a dynamically dispatched type.&lt;/em&gt;&amp;quot;. If you notice the type of the static field is of type &lt;font face="monospace" color="#0000c0"&gt;CallSite&amp;lt;Action&amp;lt;CallSite, object&amp;gt;&amp;gt;&lt;/font&gt; is &amp;nbsp;System.Runtime.CompilerServices..::.CallSite&amp;lt;(Of &amp;lt;(T&amp;gt;)&amp;gt;) { &lt;strong&gt;MSDN:&lt;/strong&gt; A dynamic call site base class. This type is used as a parameter type to the dynamic site targets.}. &amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
Lets look at the place where all the action is happening, i.e. the method &amp;nbsp;&lt;font face="monospace" color="#0000c0"&gt;CallDoSomething&lt;/font&gt;. the method checks if the class &lt;font face="monospace" color="#0000c0"&gt;CallDoSometning_SiteContainer&lt;/font&gt;.&lt;font face="monospace" color="#0000c0"&gt;delegatePlaceHolder&lt;/font&gt; is populated or not, but if not it initializes it with the Create Method and you can notice ... &lt;font face="monospace" color="#0000c0"&gt;CSharpInvokeMemberBinder&lt;/font&gt; {CompleteNamespace: Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder} {&lt;strong&gt;MSDN:&lt;/strong&gt; &amp;nbsp;Represents a dynamic method call in C#, providing the binding semantics and the details about the operation. Instances of this class are generated by the C# compiler }.
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
This feels like .Net Reflection and one tends to ask, how optimized is it. Well, something Microsoft can enlighten us more about.
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y1oCPLnsUOYsw-uFg713ME7PjNY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y1oCPLnsUOYsw-uFg713ME7PjNY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y1oCPLnsUOYsw-uFg713ME7PjNY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y1oCPLnsUOYsw-uFg713ME7PjNY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Coderslog/~4/fAR0DXHvNSk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Coderslog/~3/fAR0DXHvNSk/post.aspx</link>
      <author>mail.nospam@nospam.coderslog.info (ipsit)</author>
      <comments>http://coderslog.info/post/dynamic-II-Lets-ILDASM-it.aspx#comment</comments>
      <guid isPermaLink="false">http://coderslog.info/post.aspx?id=d9a678f7-cd50-4b6f-8aaa-391c509de5e1</guid>
      <pubDate>Tue, 04 Aug 2009 06:41:00 +0000</pubDate>
      <category>.Net 4.0</category>
      <dc:publisher>ipsit</dc:publisher>
      <pingback:server>http://coderslog.info/pingback.axd</pingback:server>
      <pingback:target>http://coderslog.info/post.aspx?id=d9a678f7-cd50-4b6f-8aaa-391c509de5e1</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://coderslog.info/trackback.axd?id=d9a678f7-cd50-4b6f-8aaa-391c509de5e1</trackback:ping>
      <wfw:comment>http://coderslog.info/post/dynamic-II-Lets-ILDASM-it.aspx#comment</wfw:comment>
      <wfw:commentRss>http://coderslog.info/syndication.axd?post=d9a678f7-cd50-4b6f-8aaa-391c509de5e1</wfw:commentRss>
    <feedburner:origLink>http://coderslog.info/post.aspx?id=d9a678f7-cd50-4b6f-8aaa-391c509de5e1</feedburner:origLink></item>
    <item>
      <title>Abstract Factory - II Abstract Factory vs Factory</title>
      <description>&lt;div&gt;
The other day we had a discussion related to the abstract factory and let me tell you, flames flew and it was high on melodrama.
&lt;/div&gt;
&lt;div&gt;
Anyways coming back to the main point, the root of whole discussion was,
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;A:&lt;/strong&gt; Why should I use the abstract factory, just for a parallel set of classes, what am I getting out of it ?
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;B:&lt;/strong&gt; You are abstracting your product, that&amp;#39;s why you are creating it. Apart from that, its a you have a mechanism for creating related set of products, which is important here, you see you should not forget that, its for creating a set of related family of products.
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;C:&lt;/strong&gt; But say if you are just creating is two set of components, a UI Components for rich mode and the simple mode, could you not do with a static Factory implementation instead of so much of fun fare? And also if you look closely, what you are doing is essentially now binding your classes to the implementation of the Abstract Factories some where, because to get the code running you have to write the Implementation class some where, so would not it be better if we had just a static factory class which gives us what we need.
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;B:&lt;/strong&gt; hmmmm...
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;A:&lt;/strong&gt; Apart from that so much of code to manage .... That&amp;#39;s a good one C:)
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;C:&lt;/strong&gt; Thanks! Man
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;B:&lt;/strong&gt; Factory Method &lt;em&gt;&lt;font color="#004080"&gt;defines an interface for creating an object, but lets subclasses decide which of those to instantiate. A factory method lets classes defer instantiation&lt;/font&gt; &lt;font color="#004080"&gt;to subclasses&lt;/font&gt;&lt;/em&gt;.By contrast, an Abstract Factory &lt;em&gt;&lt;font color="#004080"&gt;provides an interface for creating families of related or dependent objects without specifying their concrete classes&lt;/font&gt;&lt;/em&gt;.
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;C:&lt;/strong&gt; We have a family of related objects but, ... I don&amp;#39;t want to take a purists view or go by book view.. I look at convinience and unless you tell me why, I don&amp;#39;t see any reason why I should not go for a Factory than a Abstract Factory here.
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;A:&lt;/strong&gt; And if you ask me, I guess you are over complicating, is not this kind of an YAGNI. &amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;B:&lt;/strong&gt; Well, let me examine the definitions a bit more:
&lt;/div&gt;
&lt;div&gt;
Factory Method &lt;em&gt;&lt;font color="#004080"&gt;defines an interface for creating an object, but lets subclasses decide which of those to instantiate. A factory method lets classes defer instantiation&lt;/font&gt; &lt;font color="#004080"&gt;to subclasses&lt;/font&gt;&lt;/em&gt;.
&lt;/div&gt;
&lt;div&gt;
Which essentially means, in this case the decision is taken by sub class -&amp;gt; Inheritance is in action.
&lt;/div&gt;
&lt;div&gt;
Abstract Factory &lt;em&gt;&lt;font color="#004080"&gt;provides an interface for creating families of related or dependent objects without specifying their concrete classes&lt;/font&gt;&lt;/em&gt;. Now in this case the job of creating the instance of the products are delegated -&amp;gt; Composition in Action.
&lt;/div&gt;
&lt;div&gt;
And as you guys already know Composition allows you to delay the creation of back-end objects until (and unless) they are needed, as well as changing the back-end objects dynamically throughout the lifetime of the front-end object. With inheritance, you get the image of the superclass in your subclass object image as soon as the subclass is created, and it remains part of the subclass object throughout the lifetime of the subclass.
&lt;/div&gt;
&lt;div&gt;
So I would say, if you need it dynamically vary, take the composition root and enjoy the benefits of Abstarct Factory else, Factory should be just fine for you.
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;C:&lt;/strong&gt; hmmm..
&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;A:&lt;/strong&gt; ok
&lt;/div&gt;
&lt;div&gt;
Hope you like the dialogue....:)
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KE6PEJiTm-qU2TjIPSfMcOYoBmg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KE6PEJiTm-qU2TjIPSfMcOYoBmg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KE6PEJiTm-qU2TjIPSfMcOYoBmg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KE6PEJiTm-qU2TjIPSfMcOYoBmg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Coderslog/~4/hU1ylI5Wgoo" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Coderslog/~3/hU1ylI5Wgoo/post.aspx</link>
      <author>mail.nospam@nospam.coderslog.info (ipsit)</author>
      <comments>http://coderslog.info/post/Abstract-Factory-II-Abstract-Factory-vs-Factory.aspx#comment</comments>
      <guid isPermaLink="false">http://coderslog.info/post.aspx?id=ef34de31-b4ca-4f1e-83d3-c33c894e9dee</guid>
      <pubDate>Mon, 03 Aug 2009 17:32:00 +0000</pubDate>
      <category>Design Pattern</category>
      <category>General</category>
      <category>MAPI</category>
      <category>Refactoring</category>
      <dc:publisher>ipsit</dc:publisher>
      <pingback:server>http://coderslog.info/pingback.axd</pingback:server>
      <pingback:target>http://coderslog.info/post.aspx?id=ef34de31-b4ca-4f1e-83d3-c33c894e9dee</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://coderslog.info/trackback.axd?id=ef34de31-b4ca-4f1e-83d3-c33c894e9dee</trackback:ping>
      <wfw:comment>http://coderslog.info/post/Abstract-Factory-II-Abstract-Factory-vs-Factory.aspx#comment</wfw:comment>
      <wfw:commentRss>http://coderslog.info/syndication.axd?post=ef34de31-b4ca-4f1e-83d3-c33c894e9dee</wfw:commentRss>
    <feedburner:origLink>http://coderslog.info/post.aspx?id=ef34de31-b4ca-4f1e-83d3-c33c894e9dee</feedburner:origLink></item>
    <item>
      <title>Abstract Factory - I</title>
      <description>&lt;h5&gt;Intent:&lt;/h5&gt;
&lt;p&gt;
Provide interface for creating families of related or dependent classes without specifying there concrete classes. 
&lt;/p&gt;
&lt;h5&gt;Scenario:&lt;/h5&gt;
&lt;p&gt;
I have been wondering about a valid scenario where I would put the Abstract Factory Into play. To be honest it took me some time to really find a valid scenario where I should use it. The catch is &amp;quot;creating families of related or dependent classes&amp;quot;, and where would one need this. Where is it being used. We are currently working on development of a framework. Initially it used to have a Telerik controls based UI. And we also used the Ribbon Bar implementation on top of the telerik controls. What this did was made our pages heavy, in the rounds of ~2MB. This made us thinking, not everybody, would be happy to use it this way, so we thought of coming up with a light UI something that limits the page sizes considerabley. In the light UI, we are not using any ribbon controls, rather its a normal menu. Having said that, the solution that you are going to see is just not Abstract Factory only, so I would just omit out the other unrelevant in the context of the post. Apart from the above mentioned scenario, the other place it gets utilizied is ADO.Net. The idea is if you are using a SQL Data Provider then the Connection class should be of SqlConnection noly, like wise the SQLCommand class, the SQLDataAdapter class and so forth. But instead if you are connecting to a MySQL Database, then the connection class would be probably MySqlConnection class and like wise, MySqlCommand class and so forth. If you can notice a pattern, we are talking of creating a family of related products. Lets now look at the Abstract Factory: 
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;blockquote&gt;
		&lt;blockquote&gt;
			&lt;blockquote&gt;
				&lt;div align="center"&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;&lt;img src="http://www.coderslog.info/images/absfact.gif" border="0" alt="" /&gt; 
				&lt;/div&gt;
			&lt;/blockquote&gt;
		&lt;/blockquote&gt;
	&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;div align="left"&gt;
What the Abstract factory says is, 
&lt;/div&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div align="left"&gt;
	You define Abstract classes for the related products- In our case, we will have AbstractButton, AbstractDropdown for the UI Problem and in case of ADO.Net we have IDBConnection interface and IDBCommand and etc. 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div align="left"&gt;
	Then you define a Abstract Factory for creating the different instances of your abstract products - In our case, we would have CreateButton, CreateDropdown etc. I am not aware if, ADO.Net does provide a factory class. 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div align="left"&gt;
	Then what we need is implement the Abstract classes and Abstract Factory for creation of the related products and each group of related products being reprsented by a Implementation of the Factory. 
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="left"&gt;
What you get out of it ? 
&lt;/div&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div align="left"&gt;
	You abstract the creation process of the components from the code and this allows you to replace it by some other implementation of the Abstract Product. Flexibility and loose coupling is what you gain. 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div align="left"&gt;
	Reusablilty of the same code that uses your Abstract Products. 
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="left"&gt;
&lt;strong&gt;Sample:&lt;/strong&gt; 
&lt;/div&gt;
&lt;blockquote&gt;
	&lt;blockquote&gt;
		&lt;blockquote&gt;
			&lt;div&gt;
			&lt;font face="monospace" size="2" color="#004080"&gt;using System;&lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			namespace Coderslog.Tryst.DesignPatterns&lt;br /&gt;
			{&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//interface representing a Button&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public interface IButton&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Button Properties&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public class SimpleButton : IButton&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public class RichButton : IButton&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//interface representing a TextBox&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public interface ITextBox&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//TextBox Properties&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public class SimpleTextBox : ITextBox&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public class RichTextBox : ITextBox&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Abstract Factory interface for Creating UI Components&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public interface IUIComponentFactory&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IButton GetButton();&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ITextBox GetTextBox();&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Factory Class for Creating Simple UI Components&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public class SimpleUIFactory : IUIComponentFactory&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#region IUIComponentFactory Members&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public IButton GetButton()&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;return new SimpleButton();&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public ITextBox GetTextBox()&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;return new SimpleTextBox();&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endregion&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Factory Class for Creating Rich UI Components&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public class RichUIFactory : IUIComponentFactory&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#region IUIComponentFactory Members&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public IButton GetButton()&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;return new RichButton();&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public ITextBox GetTextBox()&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;return new RichTextBox();&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endregion&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///Usage&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public class UIComponentFactory : IUIComponentFactory&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private IUIComponentFactory _internalFactory;&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public UIComponentFactory()&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;_internalFactory = new RichUIFactory();&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public UIComponentFactory(string config)&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;if (config == &amp;quot;Simple&amp;quot;)&lt;br /&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;_internalFactory = new SimpleUIFactory();&lt;br /&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;else&lt;br /&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;_internalFactory = new RichUIFactory();&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#region IUIComponentFactory Members&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public IButton GetButton()&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;return _internalFactory.GetButton(); &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;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public ITextBox GetTextBox()&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&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;return _internalFactory.GetTextBox();&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endregion&lt;br /&gt;
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
			&lt;br /&gt;
			}&lt;/font&gt; 
			&lt;/div&gt;
		&lt;/blockquote&gt;
	&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eEnFbDvUohN40ak0nWLx3tzVrJk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eEnFbDvUohN40ak0nWLx3tzVrJk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eEnFbDvUohN40ak0nWLx3tzVrJk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eEnFbDvUohN40ak0nWLx3tzVrJk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Coderslog/~4/zeFshWkugwU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Coderslog/~3/zeFshWkugwU/post.aspx</link>
      <author>mail.nospam@nospam.coderslog.info (ipsit)</author>
      <comments>http://coderslog.info/post/Abstract-Factory-I.aspx#comment</comments>
      <guid isPermaLink="false">http://coderslog.info/post.aspx?id=45e6fbe0-8e62-4c15-a14f-deeda236ef01</guid>
      <pubDate>Mon, 03 Aug 2009 09:26:00 +0000</pubDate>
      <category>Design Pattern</category>
      <dc:publisher>ipsit</dc:publisher>
      <pingback:server>http://coderslog.info/pingback.axd</pingback:server>
      <pingback:target>http://coderslog.info/post.aspx?id=45e6fbe0-8e62-4c15-a14f-deeda236ef01</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://coderslog.info/trackback.axd?id=45e6fbe0-8e62-4c15-a14f-deeda236ef01</trackback:ping>
      <wfw:comment>http://coderslog.info/post/Abstract-Factory-I.aspx#comment</wfw:comment>
      <wfw:commentRss>http://coderslog.info/syndication.axd?post=45e6fbe0-8e62-4c15-a14f-deeda236ef01</wfw:commentRss>
    <feedburner:origLink>http://coderslog.info/post.aspx?id=45e6fbe0-8e62-4c15-a14f-deeda236ef01</feedburner:origLink></item>
    <item>
      <title>dynamic - Introduction</title>
      <description>&lt;div style="font-family: Tahoma;  font-size: 10pt;"&gt;

&lt;div&gt;Lets examine the dynamic key word introduced in .Net 4.0. It can keep an instance of any type. Then what is the difference between it and System.Object. Well the essential difference between them is the dynamic method dispatching which enables lazy binding, i.e. it allows you to write method, operator and indexer calls, property and field accesses, and even object invocations which bypass the normal static binding of C# and instead gets resolved dynamically.&lt;/div&gt;
&lt;div&gt;It provides a unified approach to selecting opeartions dynamically.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Lets see an example:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New" color="#008000"&gt;//Class Program.cs&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="monospace"&gt;using System;&lt;br&gt;
using System.Collections.Generic;&lt;br&gt;
using System.Linq;&lt;br&gt;
using System.Text;&lt;br&gt;
&lt;br&gt;
namespace Coderslog.Net4.Samples&lt;br&gt;
{&lt;br&gt;
    class Program&lt;br&gt;
    {&lt;br&gt;
        private static Type _toggle;&lt;br&gt;
&lt;br&gt;
        static void Main(string[] args)&lt;br&gt;
        {&lt;br&gt;
            var val = &amp;quot;&amp;quot;;&lt;br&gt;
            do&lt;br&gt;
            {&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;                                 &lt;font face="monospace" color="#0000FF"&gt;//Dynamic way&lt;br&gt;
                dynamic d = GetMeMyDynamicObject();&lt;br&gt;
                Console.WriteLine(d.GetType().FullName);&lt;br&gt;
                d.DoSometing();&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;                                 &lt;/div&gt;
&lt;div&gt;                                &lt;font face="monospace" color="#800080"&gt;//Reflection way&lt;br&gt;
                object inst = GetMeMyDynamicObject();&lt;br&gt;
                Console.WriteLine(inst.GetType().FullName);&lt;br&gt;
                Invoke(inst, &amp;quot;DoSometing&amp;quot; );       &lt;/font&gt;&lt;font face="monospace"&gt;         &lt;br&gt;
                &lt;/font&gt;&lt;/div&gt;
&lt;div&gt;                                 &lt;font face="monospace"&gt;Console.WriteLine(&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;                                             &lt;font face="monospace"&gt;&amp;quot;Press Q/q to quit and y/Y to continue!&amp;quot;);&lt;br&gt;
                val = Console.ReadLine();&lt;br&gt;
&lt;br&gt;
            } while (val.ToLower() != &amp;quot;q&amp;quot;);&lt;br&gt;
        }&lt;br&gt;
&lt;br&gt;
        &lt;/font&gt;&lt;font face="monospace" color="#800080"&gt;private static void Invoke(object inst, string methodName)&lt;br&gt;
        {&lt;br&gt;
            var methodInfo = inst.GetType().GetMethod(methodName);&lt;br&gt;
            methodInfo.Invoke(inst, null);&lt;br&gt;
        }&lt;/font&gt;&lt;font face="monospace"&gt;&lt;br&gt;
&lt;br&gt;
        private static dynamic GetMeMyDynamicObject()&lt;br&gt;
        {&lt;br&gt;
            if (_toggle == null)&lt;br&gt;
                _toggle = typeof(BehaviourB);&lt;br&gt;
            if (typeof(BehaviourB) == _toggle)&lt;br&gt;
            {&lt;br&gt;
                _toggle = typeof(BehaviourA);&lt;br&gt;
                return new BehaviourA();&lt;br&gt;
            }&lt;br&gt;
            else&lt;br&gt;
            {&lt;br&gt;
                _toggle = typeof(BehaviourB);&lt;br&gt;
                return new BehaviourB();&lt;br&gt;
            }&lt;br&gt;
        }&lt;br&gt;
    }&lt;br&gt;
}&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New" color="#008000"&gt;//Class&lt;/font&gt; &lt;font face="monospace" color="#008000"&gt;BehaviourA&lt;/font&gt;&lt;font face="Courier New" color="#008000"&gt;.cs&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="monospace"&gt;using System;&lt;br&gt;
using System.Collections.Generic;&lt;br&gt;
using System.Linq;&lt;br&gt;
using System.Text;&lt;br&gt;
&lt;br&gt;
namespace Coderslog.Net4.Samples&lt;br&gt;
{&lt;br&gt;
    public class BehaviourA&lt;br&gt;
    {&lt;br&gt;
        public void DoSometing()&lt;br&gt;
        {&lt;br&gt;
            Console.WriteLine(&amp;quot;Behaviour A - Do Something!&amp;quot;);&lt;br&gt;
        }&lt;br&gt;
    }&lt;br&gt;
}&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New" color="#008000"&gt;//Class&lt;/font&gt; &lt;font face="monospace" color="#008000"&gt;BehaviourB&lt;/font&gt;&lt;font face="Courier New" color="#008000"&gt;.cs&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="monospace"&gt;using System;&lt;br&gt;
using System.Collections.Generic;&lt;br&gt;
using System.Linq;&lt;br&gt;
using System.Text;&lt;br&gt;
&lt;br&gt;
namespace Coderslog.Net4.Samples&lt;br&gt;
{&lt;br&gt;
    public class BehaviourB&lt;br&gt;
    {&lt;br&gt;
        public void DoSometing()&lt;br&gt;
        {&lt;br&gt;
            Console.WriteLine(&amp;quot;Behaviour B - Do Something!&amp;quot;);&lt;br&gt;
        }&lt;br&gt;
    }&lt;br&gt;
}&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Notice the dynamic way of invoking the method and Reflection way. Thats the benefit of dyanmic and many more. But it comes with its own problem. The same problem that is there with the reflection way is still there.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;We will as well look at some other aspects of the dynamic in the following posts.&lt;/div&gt;

&lt;!-- content end --&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EQycdFz92-IeCTbISjlsjaBNVnY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EQycdFz92-IeCTbISjlsjaBNVnY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EQycdFz92-IeCTbISjlsjaBNVnY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EQycdFz92-IeCTbISjlsjaBNVnY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Coderslog/~4/pNV40QgG4XE" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Coderslog/~3/pNV40QgG4XE/post.aspx</link>
      <author>mail.nospam@nospam.coderslog.info (ipsit)</author>
      <comments>http://coderslog.info/post/dynamic-Introduction.aspx#comment</comments>
      <guid isPermaLink="false">http://coderslog.info/post.aspx?id=fb535a73-5dc3-44e3-b2f4-12cd09df30fc</guid>
      <pubDate>Thu, 30 Jul 2009 10:38:00 +0000</pubDate>
      <dc:publisher>ipsit</dc:publisher>
      <pingback:server>http://coderslog.info/pingback.axd</pingback:server>
      <pingback:target>http://coderslog.info/post.aspx?id=fb535a73-5dc3-44e3-b2f4-12cd09df30fc</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://coderslog.info/trackback.axd?id=fb535a73-5dc3-44e3-b2f4-12cd09df30fc</trackback:ping>
      <wfw:comment>http://coderslog.info/post/dynamic-Introduction.aspx#comment</wfw:comment>
      <wfw:commentRss>http://coderslog.info/syndication.axd?post=fb535a73-5dc3-44e3-b2f4-12cd09df30fc</wfw:commentRss>
    <feedburner:origLink>http://coderslog.info/post.aspx?id=fb535a73-5dc3-44e3-b2f4-12cd09df30fc</feedburner:origLink></item>
    <item>
      <title>The Tryst with MAPI</title>
      <description>&lt;p&gt;
For the past two weeks I was up against MAPI. I must admit, its a amazing piece of work and liked it, the more I delved into it. 
&lt;/p&gt;
&lt;p&gt;
Let me delve a bit more into the specifics of the problem a bit more.
&lt;/p&gt;
&lt;p&gt;
We have a piece of software, and it is used to synch up contacts across Exchange and a custom application using Mapi Server Client. Now this works fine if the Systems are Exchange Server 2003 on Win2k3, and Our Application is on Windows 2008. But the problem started appearing when we tried the same thing out when the combination is Exchange 2007 on Win2k8 and our application on Win 2k8.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
I dug deep and I resorted to aprroach, the only guy who I knew blogs about MAPI - &lt;a href="http://blogs.msdn.com/stephen_griffin/" title="SGriffin"&gt;SGriffin&lt;/a&gt;. And he did respond and put us on the right track.
&lt;/p&gt;
&lt;p&gt;
If you face same kind of problems that we faced, the things that you need to check is:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;There is a issue with with IPv6 - &lt;a href="http://blogs.msdn.com/stephen_griffin/archive/2008/08/15/mapi-and-ipv6.aspx" title="Click Here"&gt;Click Here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/stephen_griffin/archive/2009/01/28/more-issues-with-mapi-and-ipv6.aspx" title="Click Here"&gt;Click Here&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Ensure that you create the Service Account properly - &lt;a href="http://exchangeexchange.com/blogs/joel.stidley/archive/2006/12/10/giving-service-account-access-to-all-mailboxes-on-exchange-2007-server.aspx" title="Click Here"&gt;Click Here&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Make sure your user with whom you created your profile is a member of &amp;quot;Exchange Organization Administrator&amp;quot;&lt;/li&gt;
	&lt;li&gt;Ensure you download and install the latest Exchange MAPI server client &lt;/li&gt;
&lt;/ul&gt;
Hope this heps.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Rnu__xPokaxtusE-ZkiClS0KeDU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rnu__xPokaxtusE-ZkiClS0KeDU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Rnu__xPokaxtusE-ZkiClS0KeDU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rnu__xPokaxtusE-ZkiClS0KeDU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Coderslog/~4/WXIpDoHJScg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Coderslog/~3/WXIpDoHJScg/post.aspx</link>
      <author>mail.nospam@nospam.coderslog.info (ipsit)</author>
      <comments>http://coderslog.info/post/The-Tryst-with-MAPI.aspx#comment</comments>
      <guid isPermaLink="false">http://coderslog.info/post.aspx?id=550a5082-5ead-48fa-93ca-956fe185f64d</guid>
      <pubDate>Tue, 16 Jun 2009 08:12:00 +0000</pubDate>
      <category>MAPI</category>
      <dc:publisher>ipsit</dc:publisher>
      <pingback:server>http://coderslog.info/pingback.axd</pingback:server>
      <pingback:target>http://coderslog.info/post.aspx?id=550a5082-5ead-48fa-93ca-956fe185f64d</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://coderslog.info/trackback.axd?id=550a5082-5ead-48fa-93ca-956fe185f64d</trackback:ping>
      <wfw:comment>http://coderslog.info/post/The-Tryst-with-MAPI.aspx#comment</wfw:comment>
      <wfw:commentRss>http://coderslog.info/syndication.axd?post=550a5082-5ead-48fa-93ca-956fe185f64d</wfw:commentRss>
    <feedburner:origLink>http://coderslog.info/post.aspx?id=550a5082-5ead-48fa-93ca-956fe185f64d</feedburner:origLink></item>
    <item>
      <title>ASMX Style Authentication in WCF</title>
      <description>I thought twice before actually posting this. It was mostly because, of a guilt, that I might be recommending a wrong way of doing things. But then I did realize, that, even if it seems to wrong, it does provide some benefits. Anything that is beneficial, is not necessarily wrong. &lt;br /&gt;
&lt;br /&gt;
The problem at hand is, we want to enable ASMX style Authentication in WCF. Its not that WCF does not do a good job when it comes to Security, but because people are more inclined to send the credentials in clear text. The WCF security model is much more elaborate and it goes a step further to ensure that, ASMX style credentials are really very difficult to implement. Any ways, rather than mandating about wrongs and rights, I would say, the reason migh be not appropriate but this is a important technique which can be utilized. So how do we do it. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Important Interfaces&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="title"&gt;
&lt;font color="#3333ff"&gt;IEndpointBehavior&lt;/font&gt; Interface&lt;!----&gt;
&lt;/div&gt;
&lt;!--Content type: Devdiv1. Transform: orcas2mtps.xslt.--&gt;
&lt;p&gt;
&lt;!----&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div class="summary"&gt;
&lt;p&gt;
&lt;em&gt;Implements methods that can be used to extend run-time behavior for an endpoint in either a service or client application.&lt;/em&gt;
&lt;/p&gt;
&lt;div class="title"&gt;
&lt;font color="#3333ff"&gt;IClientMessageInspector&lt;/font&gt; Interface&lt;!----&gt;
&lt;/div&gt;
&lt;!--Content type: Devdiv1. Transform: orcas2mtps.xslt.--&gt;
&lt;p&gt;
&lt;!----&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div class="summary"&gt;
&lt;p&gt;
&lt;em&gt;Defines a message inspector object that can be added to the &lt;span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl02" href="http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.clientruntime.messageinspectors.aspx" onclick="javascript:Track('ctl00_MTContentSelector1_mainContentContainer_ctl00|ctl00_MTContentSelector1_mainContentContainer_ctl02',this);"&gt;MessageInspectors&lt;/a&gt;&lt;/span&gt; collection to view or modify messages.&lt;/em&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class="title"&gt;
&lt;font color="#3333ff"&gt;IDispatchMessageInspector&lt;/font&gt; Interface&lt;!----&gt;
&lt;/div&gt;
&lt;!--Content type: Devdiv1. Transform: orcas2mtps.xslt.--&gt;
&lt;p&gt;
&lt;!----&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div class="summary"&gt;
&lt;p&gt;
&lt;em&gt;Defines the methods that enable custom inspection or modification of inbound and outbound application messages in service applications.&lt;/em&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
How does the three work together?&lt;br /&gt;
&lt;br /&gt;
So behaviour is a way of extending an endpoint in WCF. When we try and communicate, with WCF, what it essentially does is, establishes two endpoints on either side, and takes care of sending the message{yes it is SOAP message oriented} from one end point to another. Which means if we add the Service Behaviour on both the side, then we can manipulate the messages before they are sent from one end point and like wise I can play around with the message after it has been recieved it at another endpoint. &lt;br /&gt;
&lt;br /&gt;
That explains &lt;font color="#3333ff"&gt;IEndpointBehavior&lt;/font&gt;in some good light. What about the other two:&lt;br /&gt;
Well as you can guess from the names: &lt;font color="#3333ff"&gt;IClientMessageInspector&lt;/font&gt; is when you can inspect and do something with the message at Endpoint at the client side.&lt;br /&gt;
&lt;br /&gt;
Like wise &lt;font color="#3333ff"&gt;IDispatchMessageInspector &lt;/font&gt;is when you can inspect and do something with the message at Endpoint at the server side.&lt;font color="#3333ff"&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;Need a Sample...&lt;a href="http://coderslog.info/Downloads/WCF_Basic_Authentication_Sample.zip"&gt;here &lt;/a&gt;you have got one. Till then enjoy coding and do not make me the villian for showing you a wrong way of doing things. It might be that the example is weak but the technique is not. :)&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CMpBHJUz2yIIGD2iURGABXdQg3I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CMpBHJUz2yIIGD2iURGABXdQg3I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CMpBHJUz2yIIGD2iURGABXdQg3I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CMpBHJUz2yIIGD2iURGABXdQg3I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Coderslog/~4/KXPxSwSH6tA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Coderslog/~3/KXPxSwSH6tA/post.aspx</link>
      <author>mail.nospam@nospam.coderslog.info (editor)</author>
      <comments>http://coderslog.info/post/ASMX-Style-Authentication-in-WCF.aspx#comment</comments>
      <guid isPermaLink="false">http://coderslog.info/post.aspx?id=672ab0e1-7e4f-447d-9f68-67d9daa8bc04</guid>
      <pubDate>Thu, 28 May 2009 10:12:00 +0000</pubDate>
      <dc:publisher>editor</dc:publisher>
      <pingback:server>http://coderslog.info/pingback.axd</pingback:server>
      <pingback:target>http://coderslog.info/post.aspx?id=672ab0e1-7e4f-447d-9f68-67d9daa8bc04</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://coderslog.info/trackback.axd?id=672ab0e1-7e4f-447d-9f68-67d9daa8bc04</trackback:ping>
      <wfw:comment>http://coderslog.info/post/ASMX-Style-Authentication-in-WCF.aspx#comment</wfw:comment>
      <wfw:commentRss>http://coderslog.info/syndication.axd?post=672ab0e1-7e4f-447d-9f68-67d9daa8bc04</wfw:commentRss>
    <feedburner:origLink>http://coderslog.info/post.aspx?id=672ab0e1-7e4f-447d-9f68-67d9daa8bc04</feedburner:origLink></item>
    <item>
      <title>Lord of the Rings - I am a Fan</title>
      <description>Frodo: I can&amp;#39;t do this Sam.&lt;br /&gt;
Sam: I know. It&amp;#39;s all wrong. By rights we shouldn&amp;#39;t even be here. But we are. It&amp;#39;s like in the great stories, Mr. Frodo. The ones that really mattered. Full of darkness and danger, they were. And sometimes you didn&amp;#39;t want to know the end. Because how could the end be happy? How could the world go back to the way it was when so much bad had happened? But in the end, it&amp;#39;s only a passing thing, this shadow. Even darkness must pass. A new day will come. And when the sun shines it will shine out the clearer. Those were the stories that stayed with you. That meant something, even if you were too small to understand why. But I think, Mr. Frodo, I do understand. I know now. Folk in those stories had lots of chances of turning back, only they didn&amp;#39;t. They kept going. Because they were holding on to something.&lt;br /&gt;
Frodo: What are we holding on to Sam?&lt;br /&gt;
Sam: That there&amp;#39;s some good in this world, Mr. Frodo... and it&amp;#39;s worth fighting for. &lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DF_Ut4UcO_czbIVahRFWMQCe1BY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DF_Ut4UcO_czbIVahRFWMQCe1BY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DF_Ut4UcO_czbIVahRFWMQCe1BY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DF_Ut4UcO_czbIVahRFWMQCe1BY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Coderslog/~4/zPePej54v64" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Coderslog/~3/zPePej54v64/post.aspx</link>
      <author>mail.nospam@nospam.coderslog.info (editor)</author>
      <comments>http://coderslog.info/post/Lord-of-the-Rings-I-am-a-Fan.aspx#comment</comments>
      <guid isPermaLink="false">http://coderslog.info/post.aspx?id=0ad8cef4-1241-4131-9bb7-56d152ef904d</guid>
      <pubDate>Mon, 11 May 2009 06:11:00 +0000</pubDate>
      <dc:publisher>editor</dc:publisher>
      <pingback:server>http://coderslog.info/pingback.axd</pingback:server>
      <pingback:target>http://coderslog.info/post.aspx?id=0ad8cef4-1241-4131-9bb7-56d152ef904d</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://coderslog.info/trackback.axd?id=0ad8cef4-1241-4131-9bb7-56d152ef904d</trackback:ping>
      <wfw:comment>http://coderslog.info/post/Lord-of-the-Rings-I-am-a-Fan.aspx#comment</wfw:comment>
      <wfw:commentRss>http://coderslog.info/syndication.axd?post=0ad8cef4-1241-4131-9bb7-56d152ef904d</wfw:commentRss>
    <feedburner:origLink>http://coderslog.info/post.aspx?id=0ad8cef4-1241-4131-9bb7-56d152ef904d</feedburner:origLink></item>
  </channel>
</rss>
