<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://developers.de/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag 'SharePoint'</title><link>http://developers.de/search/SearchResults.aspx?o=DateDescending&amp;tag=SharePoint&amp;orTags=0</link><description>Search results matching tag 'SharePoint'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Power of Windows Azure PaaS: State Share and Persistence in the cloud</title><link>http://developers.de/blogs/damir_dobric/archive/2013/04/22/state-share-and-persistence-in-the-cloud.aspx</link><pubDate>Mon, 22 Apr 2013 13:00:00 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:524764</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;If you are experienced enterprise developer who targets the Microsoft platform, you have probably at least once in your have a requirement to share some state across different instance of an application.    &lt;br /&gt;But, if you are hobby developer or any other professional developer, who possible do not focus distributed systems, you will might find the term “State” in context of persistence a pure theory thing.     &lt;br /&gt;So who ever you are, let’s start with a simple theory thing.     &lt;br /&gt;Imaging you have in theory a trivial application (today I call such applications simply “apps”). Assume this is an app running on smart phone or any other mobile device. This app has a variable ‘A’ and value assigned to this variable ‘1’. This value is not the default value. It is rather the value which user has assigned at some point of time.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_010BAA6F.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_59652E44.png" width="158" height="152" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Now, imagine the application crashes and you start it again. The value of variable A is obviously lost. If you want to keep this value somewhere, so it can be loaded even if application crashes. We call that usually persistence. Depending on application and your skill, there are several ways to persists the value of an variable. For example you can use any kind of local cache, like a file system.     &lt;br /&gt;    &lt;br /&gt;But what if your application has to survive the hardware damage? Or what if your application is consisted multiple clients which have to share the same value? In this case you will have to use some kind of database.     &lt;br /&gt;As long you are in control of your infrastructure (means application is deployed in your enterprise) you can use some database to persist the value. The good example of this is Workflow Foundation. Long running processes require by default the state persistence.     &lt;br /&gt;Unfortunately we have more often scenarios where applications are distributed across the web. In such cases the only sharing artifact between such applications is the cloud. Following picture shows&amp;#160; how two apps (or applications) share their state through the cloud.     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_5245F1CC.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_7914080C.png" width="578" height="157" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;This is a nice theoretical case which is practically a horror to implement. I strongly believe that today we are implicitly preparing for dominance of devices in the web. In this hypothetical scenario both devices (see picture above) should act as services to be able to share their state. If you are distributed application or integration developer you know that connectivity us such scenarios is a big, big issue. Or simply, it is the fact, devices in the web have a private IP address and because of that they are not reachable by anybody. So if the microscope on the left cannot reach the smart-phone on the right, the state from left to right cannot be propagated and vice versa.    &lt;br /&gt;    &lt;br /&gt;If this to theoretical to you, imagine just a service which is running distributed across cloud. This might be WCF service, Windows Service (running in SCM) or even Web Api based service. Whatever technology you peek, it does not matter. The only important thing is that you want run multiple instances of the service, but on two machines which are not in the same environment (if they are in the same environment even better). So that means, independent on a case, devices or services or both, we have the same requirement:&lt;/p&gt;  &lt;p&gt;1. Sharing of the state between applications distributed in the web    &lt;br /&gt;2. Persisting of the state without database.&lt;/p&gt;  &lt;p&gt;You believe or not, this problem can be solved by using Windows Azure Service Bus, which in this case plays a role of cloud artifact. To illustrate how this can work, take a look on following example.    &lt;br /&gt;This is a console application in C#. The state which should be shared and persisted across many applications is stared in variable State. &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;class&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;Program&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;{ &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;static&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WebState&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;string&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;gt; State { &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;get&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;set&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;; }&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;            &lt;p&gt;&amp;#160;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;static&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;void&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; Main(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;string&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;[] args)              &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{ &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;State = &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;new&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WebState&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;string&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;gt;(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;ConfigurationManager&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;.AppSettings[&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;quot;SbConnStr&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;],&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;quot;BusinessDomain&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;, &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;ConfigurationManager&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;.AppSettings[&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;quot;Node&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;]);              &lt;br /&gt;              &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;/span&gt;            &lt;p&gt;&amp;#160;&lt;/p&gt;         &lt;/p&gt;         &lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;State.StateChanged += State_StateChanged;             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;Console&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;.WriteLine(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;quot;I&amp;#39;m node with name: &amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; + &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;ConfigurationManager&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;.AppSettings[&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;quot;Node&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;]);            &lt;p&gt;&lt;/p&gt;         &lt;/span&gt;          &lt;p&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;/span&gt;            &lt;p&gt;&amp;#160;&lt;/p&gt;         &lt;/p&gt;         &lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;Console&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;.WriteLine(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;quot;Running with state: {0}&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;, State.Value);            &lt;p&gt;&lt;/p&gt;         &lt;/span&gt;          &lt;p&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;/span&gt;            &lt;p&gt;&amp;#160;&lt;/p&gt;         &lt;/p&gt;         &lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;while&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; (&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;true&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;)            &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;State.Value = &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;Console&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;.ReadLine();            &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}             &lt;p&gt;&lt;/p&gt;         &lt;/span&gt;          &lt;p&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;/span&gt;            &lt;p&gt;&amp;#160;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;static&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;void&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; State_StateChanged(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;object&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; sender, &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WebStateEventArg&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;string&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;gt; e)              &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{               &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;Console&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;.WriteLine(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;quot;State changed by {0} at value: {1}&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;, e.InstanceName, e.NewValue);              &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;"&gt;}&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;"&gt; &lt;/span&gt;            &lt;p&gt;&amp;#160;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;          &lt;p class="MsoNormal"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;line-height:115%;mso-highlight:white;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt; &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;As you see this variable is of type &lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WebState&lt;/span&gt;, which is implemented by me. When you start this&amp;#160; application, enter some text on the console. The text will be immediately persisted in the cloud after following line of code is executed:     &lt;br /&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;     &lt;br /&gt;State.Value = …&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Now stop the application gracefully and start it again. You will notice that application write out the value which was as last one persisted. In fact event with one participant in the system you have achieved the persistence.    &lt;br /&gt;The magic behind this is implemented on top of Windows Azure Service Bus queues. Each time the value is changed, the WebState implementation receives the existing message from the queue and put back the new message in the queue which basically holds the serialized value of variable State, and so on. Because access to the queue is session based, Service Bus guaranties that no any other applications which shares this value, will access the queue in the same time. I don’t want to call this distributed transaction, but it behaves in persistence this scenario like it would be one. In fact the WebState class uses the Queue as a unit of storage. By reading and immediate writing back of the new value, it is guarantied that the queue holds one and only one message all the time.     &lt;br /&gt;Following picture illustrate this. Each time the value i changed the old value is stored in the queue as a message. The old value is received from queue and the new message with new value is sent to the queue. At the end the old one is completed, because &lt;em&gt;PeekAndLock&lt;/em&gt; receive is used.When the new instance of the State is created (for example when application is started) the same cycle with receive/send is done. This is how multiple applications obtain there actual state.     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_1FE21E4D.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_11A3A55D.png" width="657" height="492" /&gt;&lt;/a&gt;     &lt;br /&gt;Additionally the implementation of the WebState takes a care about state sharing. For this purpose there is a topic used to share state changes. All participants in this distributed system have to create a subscription on that topic.     &lt;br /&gt;In this case (see picture below) the new value is published as a message to the topic. After that all subscribers can receive the message with the new value. The publishing process additionally updates the new value in the persistence queue from previous example.     &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_7F5ADE9A.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;margin-left:0px;display:inline;border-top-width:0px;margin-right:0px;" border="0" alt="image" align="left" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_2A3342AD.png" width="857" height="525" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Because topic-subscriptions are used, the application which was not running for a while, will automatically receive all state changes which have happened in the mean time.    &lt;br /&gt;    &lt;br /&gt;This examples shows how complex patterns can be implemented by using connectivity service in Windows Azure. I know that majority of people out there still think a..bout cloud as an old thing. There is also a group of people who thinks that cloud is unsafe think to keep the data. If you are one them them please rethink your thinking. The scenario and solution shown above is a new way of thinking and using cloud services. And the nice think here is that practically no real data is stored in the cloud.     &lt;br /&gt;As you see, the cloud is more than solely putting of some application online. :)     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;The code for this will be published soon.&lt;/p&gt;</description></item><item><title>Welcome to WinDays 2013</title><link>http://developers.de/blogs/damir_dobric/archive/2013/04/21/welcome-to-windays-2013.aspx</link><pubDate>Sun, 21 Apr 2013 14:06:16 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:525321</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;I&amp;#39;m very happy that 01. Mai is on the front. This is my favorite Barbie Queue day.    &lt;br /&gt;But till than one more public conference only. &lt;a href="https://www.windays.hr/registration/"&gt;WinDays&lt;/a&gt; is probably after Tech Ed the biggest developer conference in Europe.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.windays.hr/registration/"&gt;&lt;img alt="" src="http://www.windays.hr/_cache/5ecb7ec947b1e8709a506c5f114bb284.png" width="498" height="332" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;Traditionally I will give few talks there. As always I will talk about things which publicly never been covered from perspective I usually do.   &lt;br /&gt;I’m ready for new year of more or less new fiscal strategies. This time my focus will be story about Devices and Service in context of cloud.    &lt;br /&gt;A good short introduction in upcoming content will be presented in my keynote.    &lt;br /&gt;Of course as MVP and VTSP I will focus Windows Azure Cloud and my personal expertise area around Distributed Systems, heavy architectures, Service Bus, Workflow Manager etc.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Here is short summary:   &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;Devices and Service Intro&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;22.04.: Keynote   &lt;br /&gt;To be covered very common and useful scenarios for devices in the cloud. What can you do with Service Bus and why is Service Bus one of core &lt;strong&gt;PaaS&lt;/strong&gt; components of Windows Azure.    &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;How to build Services for Devices&lt;/strong&gt;    &lt;br /&gt;24.04: &lt;a href="https://www.windays.hr/raspored/predavanje/139ffae6-0d8b-e211-b448-02bfc0a89f37"&gt;Distributed Applications for Windows, Cloud &amp;amp; SharePoint&lt;/a&gt; (400)    &lt;br /&gt;&lt;a href="https://www.windays.hr/raspored/dan/srijeda"&gt;srijeda&lt;/a&gt;15:05 - 15:50&lt;a href="https://www.windays.hr/raspored/dvorana/d11e7665-ff8a-e211-b448-02bfc0a89f37"&gt;Coral 5&lt;/a&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;Runtime for Devices&lt;/strong&gt;&lt;/p&gt;  &lt;h5&gt;24.04: &lt;a href="https://www.windays.hr/raspored/predavanje/739ffae6-0d8b-e211-b448-02bfc0a89f37"&gt;Runtime 8 Fight-Club&lt;/a&gt;    &lt;br /&gt;&lt;a href="https://www.windays.hr/raspored/dan/srijeda"&gt;srijeda&lt;/a&gt;18:20 - 19:05&lt;a href="https://www.windays.hr/raspored/dvorana/d11e7665-ff8a-e211-b448-02bfc0a89f37"&gt;Coral 5&lt;/a&gt;&lt;/h5&gt;</description></item><item><title>Cumulative Updates for Workflow Manager, Service Bus (SharePoint 2013 – Workflow Engine)</title><link>http://developers.de/blogs/damir_dobric/archive/2013/02/28/cumulative-updates-for-workflow-manager-service-bus-sharepoint-2013-workflow-engine.aspx</link><pubDate>Thu, 28 Feb 2013 10:23:12 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:521325</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;The first Cumulative Update for Workflow Manager and Service Bus or formally known SharePoint workflow is online. which actually includes Suspend/Resume of instances support. (It will also be available via WebPI soon).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;WF Manager&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;KB article (KB2799754): &lt;a href="http://support.microsoft.com/kb/2799754"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Download page: &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=36800&amp;amp;WT.mc_id=rss_windows_allproducts"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Service Bus:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;KB article (KB2799752): &lt;a href="http://support.microsoft.com/kb/2799752"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Download page: &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=36794"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img alt="Windows" src="http://i.microsoft.com/global/ImageStore/PublishingImages/logos/56x56/windows_symbol_clr_56x56.png" /&gt;&lt;/p&gt;</description></item><item><title>Deploying of the new version of SharePoint Workflow</title><link>http://developers.de/blogs/damir_dobric/archive/2012/12/04/deploying-of-the-new-version-of-sharepoint-workflow.aspx</link><pubDate>Tue, 04 Dec 2012 07:58:00 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:422937</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;Assume you have an activity which is executing for very long time. This is so called Long-Running workflow. In fact long-running scenario is one of scenarios in Commuter Sciences which practically can very easy be solved by Using Microsoft Workflow Foundation.   &lt;br /&gt;Following workflow show never ending workflow which is often used in Integration scenarios where some kind of listening or long-polling need to be implemented.    &lt;br /&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_4F01C047.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_7563A392.png" width="472" height="511" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The question in this post is: “&lt;em&gt;After this workflow is started, what happens with this workflow when SharePoint deploys the new version&lt;/em&gt;?”. This is usually the case when some bug has been fixed or some new feature has been implemented.    &lt;br /&gt;During deployment of the new version SharePoint will not take a care about running instances. Instead, all running instances of the version N will be terminated with following error:&amp;#160; &lt;br /&gt;    &lt;br /&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;The instance has been terminated because the workflow associated with this instance is no longer available.&lt;/font&gt;&lt;/em&gt;    &lt;br /&gt;    &lt;br /&gt;After this has happened, the new version N+1 is (should be) deployed and ready to start. Currently it is not clear&amp;#160; (to me at least) if there is a way at all in SharePoint to figure out such issues. Fortunately Workflow Manager provides way to figure out such issues.&amp;#160; &lt;br /&gt;Following code shows how we do that. Just call &lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;enlistInstancesInState(…) &lt;/span&gt;to obtain all workflows in specified state.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;static&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;void&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; enlistInstancesInState(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WorkflowInstanceStatus&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; status)             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;enlistAllScopes(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;null&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;, (client) =&amp;gt;             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{              &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;var&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; cnt = client.Instances.GetCount();             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;if&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; (cnt &amp;gt; 0)             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{              &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;foreach&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; (&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;var&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; wfInst &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;in&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; client.Instances.Get(0, cnt))             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;if&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; (&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WorkflowInstanceStatus&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;.NotSpecified != status &amp;amp;&amp;amp; wfInst.WorkflowStatus == status)             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;traceOutWorkflow(wfInst);              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;else&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;if&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; (&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WorkflowInstanceStatus&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;.NotSpecified == status)             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;"&gt;traceOutWorkflow(wfInst);             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}              &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}              &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;});              &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;                &lt;br /&gt;                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;///&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:green;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;lt;summary&amp;gt;             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;///&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:green;mso-highlight:white;mso-ansi-language:en-us;"&gt; Enlists all scopes starting at root.             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;///&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:green;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;lt;/summary&amp;gt;             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;///&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:green;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;lt;param name=&amp;quot;scopeRoot&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:green;mso-highlight:white;mso-ansi-language:en-us;"&gt;Scope to be enlisted.&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;lt;/param&amp;gt;             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;private&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;static&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;void&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; enlistAllScopes(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WorkflowManagementClient&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; client, &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;Action&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WorkflowManagementClient&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;gt; action)             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;if&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;(client == &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;null&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;)             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;client = getWfMgmClient(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;null&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;);             &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;if&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; (action != &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;null&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;)             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;action(client);&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;             &lt;p&gt;&amp;#160;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;var&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; scopes = client.CurrentScope.GetChildScopes();             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;             &lt;p&gt;&amp;#160;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;foreach&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; (&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;var&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; childScope &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;in&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; scopes)             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{              &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;enlistAllScopes(getWfMgmClient(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;Path&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;.Combine(m_Root.TrimEnd(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;) + childScope.Path)), action);             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}              &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;             &lt;p&gt;&amp;#160;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;             &lt;p&gt;&amp;#160;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;///&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:green;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;lt;summary&amp;gt;             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;///&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:green;mso-highlight:white;mso-ansi-language:en-us;"&gt; Creates the instance of the WF-client.             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;///&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:green;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:gray;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;lt;/summary&amp;gt;             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;static&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WorkflowManagementClient&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; getWfMgmClient(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;string&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; scope)             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WorkflowManagementClient&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; client;             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;             &lt;p&gt;&amp;#160;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;if&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; (scope == &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;null&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;)             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;client = &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;new&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WorkflowManagementClient&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;(m_Root);             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;else             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;client = &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;mso-ansi-language:en-us;"&gt;new&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;mso-highlight:white;mso-ansi-language:en-us;"&gt;WorkflowManagementClient&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;(scope);             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;             &lt;p&gt;&amp;#160;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;mso-highlight:white;"&gt;return&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;mso-highlight:white;"&gt; client;             &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;line-height:115%;mso-highlight:white;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;</description></item><item><title>How do SharePoint 2013 Workflows look like under the hub?</title><link>http://developers.de/blogs/damir_dobric/archive/2012/11/29/how-do-sharepoint-2013-workflows-look-like-under-the-hub.aspx</link><pubDate>Thu, 29 Nov 2012 07:40:00 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:422347</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;To get a feeling how SharePoint Workflows look like under the hub take a look on following example: &lt;a title="http://developers.de/media/p/422263.aspx" href="http://developers.de/media/p/422263.aspx"&gt;http://developers.de/media/p/422263.aspx&lt;/a&gt;.    &lt;br /&gt;This is the original XML which fully (natively) describe the workflow deployed by SharePoint.&lt;/p&gt;  &lt;p&gt;Following picture shows a snapshot of the XML which can be downloaded above:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_02E88CD0.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_5A69AABB.png" width="1317" height="817" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Note that the dump shown above describe the &lt;strong&gt;WorkflowDescription&lt;/strong&gt; without activities. However notice that description contains the reference to activity &lt;strong&gt;ActivityPath&lt;/strong&gt;.    &lt;br /&gt;Similarly you can dump activities as follows:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://fides:12291/SharePoint/default/eac2871d-0758-4a2e-8b03-c02598c63c0b/8256fccd-21e8-4435-8327-2affb3234c23/$Activities" href="http://host:12291/SharePoint/default/eac2871d-0758-4a2e-8b03-c02598c63c0b/8256fccd-21e8-4435-8327-2affb3234c23/$Activities"&gt;http://host:12291/SharePoint/default/eac2871d-0758-4a2e-8b03-c02598c63c0b/8256fccd-21e8-4435-8327-2affb3234c23/$Activities&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This call will return list of activities by their name. For example: &lt;strong&gt;WorkflowXaml_78ba2e34_c23f_4ea9_94fb_86d3efcd3c80&lt;/strong&gt;    &lt;br /&gt;That name can be used to obtain the original XAML    &lt;br /&gt;&lt;a title="http://fides:12291/SharePoint/default/eac2871d-0758-4a2e-8b03-c02598c63c0b/8256fccd-21e8-4435-8327-2affb3234c23/$Activities" href="http://host:12291/SharePoint/default/eac2871d-0758-4a2e-8b03-c02598c63c0b/8256fccd-21e8-4435-8327-2affb3234c23/$Activities/WorkflowXaml_78ba2e34_c23f_4ea9_94fb_86d3efcd3c80"&gt;http://host:12291/SharePoint/default/eac2871d-0758-4a2e-8b03-c02598c63c0b/8256fccd-21e8-4435-8327-2affb3234c23/$Activities/&lt;strong&gt;WorkflowXaml_78ba2e34_c23f_4ea9_94fb_86d3efcd3c80&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And finally, here is the result which dups out the XAML of the workflow:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_123BEEDF.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_056198C1.png" width="944" height="526" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Examples shown above has been taken out of Workflow Manager which is running on Premise. However same or similar workflow descriptions are used when running in Office 365 and Windows Azure.   &lt;br /&gt;I will describe the meaning of all of required artifacts in my future blog posts.&lt;/p&gt;</description></item><item><title>What will happen if WorkflowManager crashes?</title><link>http://developers.de/blogs/damir_dobric/archive/2012/11/27/what-will-happen-if-workflowmanager-crashes.aspx</link><pubDate>Tue, 27 Nov 2012 11:20:00 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:422399</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;If The Workflow Manager Backend service terminates unexpectedly all workflow’s persisted data will remain persisted in database, but the workflow itself will stop the execution. In this case there is an event id &lt;strong&gt;7031&lt;/strong&gt; in &lt;strong&gt;System Event Log&lt;/strong&gt;: &lt;em&gt;The Workflow Manager Backend service terminated unexpectedly&lt;/em&gt;.    &lt;br /&gt;    &lt;br /&gt;If there is one node in cluster only, the machine which runs Workflow Backend Service (this is the service which executes the workflow) will try to restart the service. This will also happen if there are more nodes in cluster. However in this case some other node will probable schedule execution of the workflow. In a case of one node in cluster the Workflow Backend Service will try to restart in 30 seconds. This action will be repeated over and over again. If you want to change this behavior you can do it in Service Properties. Following picture shows default settings:    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_1A2005E2.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_24DD5D37.png" width="421" height="472" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In fact, temporary crashing of the process which executes the workflow will just temporary stop the execution of the workflow. Even if the recovery takes years, the persisted instance of the workflow will remain in the WorkflowState=’Started’ as long one Workflow Manager host takes it out of database and schedule execution.   &lt;br /&gt;&lt;/p&gt;  &lt;h4&gt;Persistence &lt;/h4&gt;  &lt;p&gt;   &lt;br /&gt;But what is with unpersisted data? This is right question on right place. &lt;/p&gt;  &lt;p&gt;Persistence in Workflow Manager is a feature which works automatically out-of-the box. PersistActivity which is just most trivial possibility to explicitly persist the instance is in general not required. Anyhow it is not a part of &lt;a href="http://developers.de/blogs/damir_dobric/archive/2012/09/16/workflow-trusted-surface.aspx"&gt;trusted surface&lt;/a&gt;.    &lt;br /&gt;For example, Workflow Manager will automatically persist the workflow when workflow instance enters &lt;strong&gt;DelayActivity&lt;/strong&gt; or any of awaiting activities which cause listening for message.    &lt;br /&gt;Whenever such activities are scheduled Manager will enforce persistence of workflow instance. States of all variables which has been changed between two activities which cause persistence will be lost! Keep that in mind.    &lt;br /&gt;If you want to enforce persistence, just schedule Delay activity of any interval. Unlike to AppFabric Server Workflow Manager will persist on any delay interval. AppFabric Service has a configuration is would block CPU for all other tenants.&lt;/p&gt;</description></item><item><title>SharePoint Workflow TrustedSurface</title><link>http://developers.de/blogs/damir_dobric/archive/2012/11/26/sharepoint-workflow-trustedsurface.aspx</link><pubDate>Mon, 26 Nov 2012 07:23:00 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:422309</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;As I described &lt;a href="http://developers.de/blogs/damir_dobric/archive/2012/09/16/workflow-trusted-surface.aspx"&gt;here&lt;/a&gt; Windows Azure Workflow (Workflow Manager) is originally designed to run in the cloud. That means it designed as multitenant application. because of that the Workflow Manager must fulfill several very sensitive security requirements. One of used approaches is so called “Reduced Trusted Surface”. This means that subset of common primitive types is supported only. Unfortunately SharePoint requires many activities which are not the part of Trusted Surface of Workflow Manager.    &lt;br /&gt;For this reason, SharePoint team has extended the Type System of the Workflow Manager.    &lt;br /&gt;The list shown below is the full list of all SharePoint custom activities which extends the default Trusted Surface described in the post above:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;MatchesString         &lt;br /&gt;IsLessThanOrEqualDateTime          &lt;br /&gt;IsLessThanDateTime          &lt;br /&gt;IsGreaterThanOrEqualDateTime          &lt;br /&gt;IsGreaterThanDateTime          &lt;br /&gt;IsEqualUser          &lt;br /&gt;IsEqualStringIgnoreCase          &lt;br /&gt;IsEqualDynamicValue          &lt;br /&gt;IsEqualDateTime          &lt;br /&gt;IsEqualDate          &lt;br /&gt;ContainsStringIgnoreCase          &lt;br /&gt;WriteToHistory          &lt;br /&gt;WorkflowInterop          &lt;br /&gt;WordsInTitle          &lt;br /&gt;WaitForItemEvent          &lt;br /&gt;WaitForFieldChange          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;WaitForCustomEvent         &lt;br /&gt;UpdateListItem          &lt;br /&gt;UndoCheckOutItem          &lt;br /&gt;TranslateDocument          &lt;br /&gt;SetWorkflowStatus          &lt;br /&gt;SetTimeField          &lt;br /&gt;SetRelatedItem          &lt;br /&gt;SetField          &lt;br /&gt;ReplaceEmailTokens          &lt;br /&gt;RegisterForSharePointEvent          &lt;br /&gt;ModifiedInRange          &lt;br /&gt;ModifiedBy          &lt;br /&gt;LoopNTimes          &lt;br /&gt;LookupWorkflowContextProperty          &lt;br /&gt;LookupSPUserProperty          &lt;br /&gt;LookupSPUser&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;LookupSPTaskListItemAssignedTo         &lt;br /&gt;LookupSPTaskAssignedToDisplayName          &lt;br /&gt;LookupSPPrincipalProperty          &lt;br /&gt;LookupSPPrincipalId          &lt;br /&gt;LookupSPPrincipal          &lt;br /&gt;LookupSPFields          &lt;br /&gt;LookupSPField          &lt;br /&gt;LookupSPListProperty          &lt;br /&gt;LookupSPListItemStringProperty          &lt;br /&gt;LookupSPListItemSPFieldLookupProperty          &lt;br /&gt;LookupSPListItemSPFieldLookupMultiProperty          &lt;br /&gt;LookupSPListItemPropertyNameInREST          &lt;br /&gt;LookupSPListItemProperty          &lt;br /&gt;LookupSPListItemInt32Property          &lt;br /&gt;LookupSPListItemGuid          &lt;br /&gt;LookupSPListItemDynamicValueProperty          &lt;br /&gt;LookupSPListItemDoubleProperty          &lt;br /&gt;LookupSPListItemDateTimeProperty          &lt;br /&gt;LookupSPListItemBooleanProperty          &lt;br /&gt;LookupSPListItem          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;LookupSPList         &lt;br /&gt;LookupSPGroupMembers          &lt;br /&gt;LookupSPGroup          &lt;br /&gt;LookupSPChoiceFieldIndex          &lt;br /&gt;JoinSPPrincipalPropertyFromInitFormParamUserMulti          &lt;br /&gt;JoinSiteUserInfoListPropertyFromSPFieldUserMulti          &lt;br /&gt;JoinIdOrValueFromSPFieldLookupMulti          &lt;br /&gt;JoinChoicesFromSPFieldMultiChoice          &lt;br /&gt;IsValidUser          &lt;br /&gt;IsSPListItemPropertyLookupToDocsField          &lt;br /&gt;GetHistoryListId          &lt;br /&gt;GetTaskListId          &lt;br /&gt;GetCurrentListId          &lt;br /&gt;GetCurrentItemGuid          &lt;br /&gt;GenerateEmailDynamicValue          &lt;br /&gt;ExtractSubstringFromIndexLength          &lt;br /&gt;ExtractSubstringFromIndex          &lt;br /&gt;ExtractSubstringFromStart          &lt;br /&gt;ExtractSubstringFromEnd          &lt;br /&gt;ExpandInitFormUsers          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;ExpandGroupToUsers         &lt;br /&gt;Email          &lt;br /&gt;DeleteListItem          &lt;br /&gt;DelayUntil          &lt;br /&gt;DelayFor          &lt;br /&gt;DefaultRetryPolicy          &lt;br /&gt;DateInterval          &lt;br /&gt;IsNull          &lt;br /&gt;WebUri          &lt;br /&gt;CreateListItem          &lt;br /&gt;CreatedInRange          &lt;br /&gt;CreatedBy          &lt;br /&gt;CopyItem          &lt;br /&gt;ConvertPropertiesForSPListItem          &lt;br /&gt;CompositeTaskHelper          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;CompositeTask         &lt;br /&gt;Comment          &lt;br /&gt;CheckOutItem          &lt;br /&gt;ConvertTimeZoneFromUtcToSPLocal          &lt;br /&gt;BuildSPUri          &lt;br /&gt;ConvertTimeZoneFromSPLocalToUtc          &lt;br /&gt;CheckInItem          &lt;br /&gt;CallHTTPWebService          &lt;br /&gt;Calc          &lt;br /&gt;BuildSPListItemWebLink          &lt;br /&gt;AtomicTaskItemUpdatedHelper          &lt;br /&gt;SingleTask          &lt;br /&gt;AppOnlySequence&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;All of activities are deployed to following scope:    &lt;br /&gt;&lt;a title="http://fides:12291/" href="http://spswfmanagermachine:12291/sharepoint"&gt;http://spswfmanagermachine:12291/sharepoint&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note that SharePoint Workflow Manager by default also installs the scope ‘default’ (&lt;a title="http://fides:12291/" href="http://spswfmanagermachine:12291/sharepoint/default"&gt;http://spswfmanagermachine:12291/sharepoint/default&lt;/a&gt;)    &lt;br /&gt;This scope currently does not contain any activity.    &lt;br /&gt;    &lt;br /&gt;When working with Workflows in Office 365, these activities are present by default too.&lt;/p&gt;</description></item><item><title>Agenda for SharePoint Workflow Engine Deep Dive</title><link>http://developers.de/blogs/damir_dobric/archive/2012/11/18/agenda-for-sharepoint-workflow-engine-deep-dive.aspx</link><pubDate>Sun, 18 Nov 2012 21:05:01 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:423236</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;Announcing agenda for session “SharePoint Workflow Engine Deep Dive” at conference “&lt;em&gt;Knowledge Days rund um SharePoint - DAS Event zu Microsoft SharePoint 2013&lt;/em&gt;” in Munic at     &lt;br /&gt;Nov. 20 and Nov.21. 2012.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_07135DFA.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_4671118A.png" width="813" height="752" /&gt;&lt;/a&gt; &lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_661FEB52.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_10F84F65.png" width="244" height="56" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;AGENDA&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_65B3B85D.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_3E796F28.png" width="973" height="419" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Deployment of Workflows in Workflow Manager</title><link>http://developers.de/blogs/damir_dobric/archive/2012/11/18/deployment-of-workflows-in-workflow-manager.aspx</link><pubDate>Sun, 18 Nov 2012 10:48:51 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:422358</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;When deploying Workflows within Workflow Manager as long activities inside of trusted surface are used, there is no assembly which should be referenced or published to the host.    &lt;br /&gt;All required is contained in a XAML.     &lt;br /&gt;    &lt;br /&gt;Usually one workflow is WorkflowDefinition which basically defines the activation envelope of the around the activity.     &lt;br /&gt;That means one workflow is defined by two XAML-s: Activit.Xaml and Workflow.Xaml.    &lt;br /&gt;Activity.Xaml fully implements the workflow in XAML. Workflow.Xaml defines configuration, activation, etc. and sets the reference to Activity.xaml which will be executed.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;So, Deployment is two-phase process:   &lt;br /&gt;    &lt;br /&gt;client.Activities.Publish(Activity.Xaml) and&lt;/p&gt;  &lt;p&gt;client.Workflows.Publish(Workflow.Xaml);   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;As we see, first root activity is published to the manager database and then the workflow envelope (workflow description) itself. This is because, Workflow has a dependency to root activity, so activity has to be deployed first.   &lt;br /&gt;As long you use build-in activities defined by &lt;a href="http://developers.de/blogs/damir_dobric/archive/2012/09/16/workflow-trusted-surface.aspx"&gt;trusted surface &lt;/a&gt;there is no need for any assembly to be deployed. All you have and need&amp;#160; is declarative XAML.    &lt;br /&gt;However in a case of extending of trusted surface, fist assemblies which implement custom types have to be deployed. After they are deployed, workflow publishing works as already described above.&lt;/p&gt;  &lt;p&gt;To get a feeling about publishing open the browser and paste following:&lt;/p&gt;  &lt;p&gt;GET //&lt;u&gt;SharePoint/default/eac2871d-0758-4a2e-8b03-c02598c63c0b/8256fccd-21e8-4435-8327-2affb3234c23/&lt;/u&gt;$Workflows?$skip=0&amp;amp;$top=100&lt;/p&gt;  &lt;p&gt;Note, the underlined part is the scope path of workflow at your machine (this one is example from my machine). This statement is a REST call to Workflow Manager which will return up to 100 installed workflow definitions.   &lt;br /&gt;Similarly following REST call would get the full Workflow Description of workflow with name=’ d1991cf0-0fa3-46d7-9cf7-32014141c6aa‘:&lt;/p&gt;  &lt;p&gt;GET //SharePoint/default/eac2871d-0758-4a2e-8b03-c02598c63c0b/8256fccd-21e8-4435-8327-2affb3234c23/$Workflows/d1991cf0-0fa3-46d7-9cf7-32014141c6aa   &lt;br /&gt;    &lt;br /&gt;There is also a REST call which can dump-out the whole XAML implementation.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://fides:12291/SharePoint/default/eac2871d-0758-4a2e-8b03-c02598c63c0b/8256fccd-21e8-4435-8327-2affb3234c23/$Activities" href="http://host:12291/yourscope/$Activities/WorkflowXaml_78ba2e34_c23f_4ea9_94fb_86d3efcd3c80"&gt;http://host:12291/yourscope/$Activities/&lt;strong&gt;WorkflowXaml_78ba2e34_c23f_4ea9_94fb_86d3efcd3c80&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image7_5F00_077B7FAA.png"&gt;&lt;img title="image_thumb[3]" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image_thumb[3]" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb3_5F00_30A317E8.png" width="244" height="138" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Validate that file name before uploading a file to the SharePoint library!</title><link>http://developers.de/blogs/adis_jugo/archive/2009/10/29/validate-a-file-name-before-upload-to-the-sharepoint-library.aspx</link><pubDate>Thu, 29 Oct 2009 13:36:00 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:8735</guid><dc:creator>ajugo</dc:creator><description>&lt;p&gt;&lt;a href="http://blog.sharedove.com/adisjugo/index.php/2009/10/29/validate-that-file-name-before-uploading-a-file-to-the-sharepoint-library/"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="moved" border="0" alt="moved" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/adis_5F00_jugo/moved_5F00_2B007BD5.png" width="500" height="160" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;   &lt;hr /&gt;This blog post has moved to a &lt;a href="http://blog.sharedove.com/adisjugo/index.php/2009/10/29/validate-that-file-name-before-uploading-a-file-to-the-sharepoint-library/" target="_blank"&gt;new address&lt;/a&gt;. &lt;a href="http://blog.sharedove.com/adisjugo/index.php/2009/10/29/validate-that-file-name-before-uploading-a-file-to-the-sharepoint-library/" target="_blank"&gt;Please read it there&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>