<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The .NET Endpoint : Activities</title><link>http://blogs.msdn.com/endpoint/archive/tags/Activities/default.aspx</link><description>Tags: Activities</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Migration Guidance for the WF Developer (Beta 1 - Part 2)</title><link>http://blogs.msdn.com/endpoint/archive/2009/07/21/migration-guidance-for-the-wf-developer-beta-1-part-2.aspx</link><pubDate>Wed, 22 Jul 2009 02:41:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9844065</guid><dc:creator>Cliff Simpkins</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/endpoint/comments/9844065.aspx</comments><wfw:commentRss>http://blogs.msdn.com/endpoint/commentrss.aspx?PostID=9844065</wfw:commentRss><description>&lt;p&gt;About six weeks ago, &lt;a href="http://blogs.msdn.com/endpoint/archive/2009/06/05/migration-guidance-for-the-wf-developer.aspx" target="_blank"&gt;the WF team published up the first four WF3-&amp;gt;WF4 migration guidance documents&lt;/a&gt;, aimed at helping WF developers prepare and think about the new WF object model runtime.&lt;/p&gt;  &lt;p&gt;Today, we published the next three documents in the series to the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=153313" target="_blank"&gt;WF4 Migration Guidance document set&lt;/a&gt;. With today’s release, we begin moving from the general guidance and start to present cookbook material, addressing more specific scenarios and presenting code.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;WF Migration Overview (&lt;font color="#008080"&gt;Already Live&lt;/font&gt;)        &lt;br /&gt;&lt;/strong&gt;&lt;em&gt;Overview of the document collection and an initial starting place for the WF3 developer&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;WF Migration: Best Practices for WF3 Development (&lt;font color="#008080"&gt;Already Live&lt;/font&gt;)&lt;/strong&gt;      &lt;br /&gt;&lt;i&gt;How to design WF3 artifacts so they are more easily migratable to WF4&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;WF Guidance: Rules (&lt;font color="#008080"&gt;&lt;font color="#008080"&gt;Already Live&lt;/font&gt;&lt;/font&gt;)        &lt;br /&gt;&lt;/strong&gt;&lt;i&gt;Discussion of how to bring rules-related investments forward into .NET 4&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;WF Guidance: State Machine (&lt;font color="#008080"&gt;Already Live&lt;/font&gt;)        &lt;br /&gt;&lt;/strong&gt;&lt;i&gt;Discussion of WF4 control flow modeling in the absence of a StateMachine activity&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;WF Migration Cookbook: Custom Activities (&lt;font color="#008080"&gt;Now Live!&lt;/font&gt;)        &lt;br /&gt;&lt;/strong&gt;&lt;i&gt;Examples and instructions for redesigning WF3 custom activities on WF4&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;WF Migration Cookbook: Workflows (&lt;font color="#008080"&gt;Now Live!&lt;/font&gt;)        &lt;br /&gt;&lt;/strong&gt;&lt;i&gt;Examples and instructions for redesigning WF3 workflows on WF4&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;WF Migration Cookbook: Workflow Services (&lt;font color="#008080"&gt;Now Live!&lt;/font&gt;)        &lt;br /&gt;&lt;/strong&gt;&lt;i&gt;Examples and instructions for redesigning WF3 workflow services on WF4&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;WF Migration Cookbook: Advanced Custom Activities (Coming Soon)       &lt;br /&gt;&lt;/strong&gt;&lt;i&gt;Examples and instructions for redesigning advanced WF3 custom activities on WF4&lt;/i&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As I mentioned in the last post about the documents, &lt;a href="http://go.microsoft.com/fwlink/?LinkID=153313" target="_blank"&gt;these documents&lt;/a&gt; are initial draft releases that the team is releasing to you. For these, they are all written for the object model and features that are part of Beta 1. We will be updating the documents as additional releases of .NET 4 are publicly released, and the documents will address further scenarios with each release.&lt;/p&gt;  &lt;p&gt;Also – again – the team will be supporting feedback and requests for the documents and accompanying sample code in the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/wfprerelease/threads"&gt;WF 4 forum on MSDN&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Happy reading!   &lt;br /&gt;Cliff&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9844065" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/endpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Activities/default.aspx">Activities</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Samples/default.aspx">Samples</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/4.0/default.aspx">4.0</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Migration/default.aspx">Migration</category></item><item><title>Sequential and Flowchart modeling styles</title><link>http://blogs.msdn.com/endpoint/archive/2009/06/12/sequential-and-flowchart-modeling-styles.aspx</link><pubDate>Fri, 12 Jun 2009 20:16:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9736250</guid><dc:creator>lwelicki</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/endpoint/comments/9736250.aspx</comments><wfw:commentRss>http://blogs.msdn.com/endpoint/commentrss.aspx?PostID=9736250</wfw:commentRss><description>&lt;p&gt;WF 4 ships with an &lt;a href="http://blogs.msdn.com/endpoint/archive/2009/05/29/a-tour-on-the-wf4-activity-palette.aspx"&gt;activity palette&lt;/a&gt; that consists of many activities – some of these are control flow activities that represent the different modeling styles developers can use to model their business process. &lt;b&gt;Sequence&lt;/b&gt; and &lt;b&gt;Flowchart&lt;/b&gt; are a couple of modeling styles we ship in WF 4. In this post, we will present these modeling styles, learn what they are, when to use what, and highlight the main differences between them.&lt;/p&gt;  &lt;h4&gt;Sequential modeling style&lt;/h4&gt;  &lt;p&gt;A sequential workflow executes a set of contained activities in sequential order. The &lt;b&gt;Sequence&lt;/b&gt; activity in WF 4 allows you to model workflows in the &lt;i&gt;sequential modeling style&lt;/i&gt;. A &lt;b&gt;Sequence&lt;/b&gt; contains a collection of activities that are scheduled in the order in which they have been added to the collection. Hence, the order of execution of the activities is predictable. &lt;/p&gt;  &lt;p&gt;You can add any activity to a &lt;b&gt;Sequence&lt;/b&gt; – control flow procedural constructs like &lt;b&gt;ForEach&lt;/b&gt;, &lt;b&gt;If&lt;/b&gt;, &lt;b&gt;Switch&lt;/b&gt;, &lt;b&gt;While&lt;/b&gt;, &lt;b&gt;DoWhile&lt;/b&gt;; or parallel constructs like &lt;b&gt;Parallel&lt;/b&gt; and &lt;b&gt;ParallelForEach&lt;/b&gt; to model parallel execution of logic; or any other activity we provide in the &lt;a href="http://blogs.msdn.com/endpoint/archive/2009/05/29/a-tour-on-the-wf4-activity-palette.aspx"&gt;WF 4 activity palette&lt;/a&gt; (or your own custom activity or a third party activity). &lt;/p&gt;  &lt;p&gt;The next figure shows a Vacation Approval workflow modeled as a sequential workflow using the &lt;b&gt;Sequence&lt;/b&gt; activity and other activities. In this workflow, we first check if the employee has enough available days, wait for his manager approval, and finally update his vacation information in the company’s HR database. The activity highlighted in the orange box (&lt;i&gt;Get Manager Approval&lt;/i&gt;) is actually a &lt;b&gt;While &lt;/b&gt;activity (collapsed in the main &lt;b&gt;Sequence&lt;/b&gt;) that executes another &lt;b&gt;Sequence&lt;/b&gt; of activities (&lt;i&gt;AskForApproval&lt;/i&gt;) while the &lt;i&gt;approvedByManager&lt;/i&gt; &lt;b&gt;variable&lt;/b&gt; value is &lt;b&gt;False&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/db969246434c_8E12/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/db969246434c_8E12/image_thumb.png" width="483" height="224" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Workflows modeled using the sequential modeling style are easy to understand and author. They can be used to model simple to moderately complex processes. Since procedural activities have strong parity with procedural statements in imperative programming languages, you can use this type of workflows to model almost any type of process. Sequential workflows are also a good fit to model simple processes with no human interactions (e.g. services).&lt;/p&gt;  &lt;p&gt;As the complexity of the process increases, the workflow will become more complex. In comparison to code, with workflows, you will get the benefit of visually looking at your process and visual debugging, however, you may want to factor out the logic into re-usable custom activities to improve the readability of large workflows. &lt;/p&gt;  &lt;h5&gt;Sequential Modeling Style and Sequence Activity&lt;/h5&gt;  &lt;p&gt;&lt;b&gt;Sequence&lt;/b&gt; is not a requirement to create workflows that use the sequential modeling style. As we will explain later in this post, any activity in WF 4 can be the root of a workflow. Therefore, we can create a workflow that does not contain a &lt;b&gt;Sequence&lt;/b&gt; but still uses the sequential modeling style and procedural activities. In the figure below, we have a workflow that has as a &lt;b&gt;ForEach&lt;/b&gt; as root activity that prints all the items in a list of strings with a length higher than 5.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/db969246434c_8E12/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/db969246434c_8E12/image_thumb_1.png" width="484" height="124" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h4&gt;Flowchart&lt;/h4&gt;  &lt;p&gt;Flowchart is a well known and intuitive paradigm to visually represent business processes. Business Analysts, Architects and Developers use often flowcharts as common language to express process definitions and flow of logic.&amp;#160; &lt;/p&gt;  &lt;p&gt;Since the release of WF 3, customers have given us feedback about what they like and don’t like.&amp;#160; One common point of feedback from customers using WF3 was that &lt;i&gt;“we want the simplicity of Sequence, Parallel, etc. but the flexibility of StateMachine.”&lt;/i&gt;&amp;#160; When we dug deeper to get at the scenario behind this sentiment, we found that customers have a process (or a portion of a process) that is &lt;i&gt;often quite sequential in nature&lt;/i&gt; but which &lt;i&gt;requires “loopbacks” under certain circumstances&lt;/i&gt; (for some customers the circumstances are “exceptional” in nature while for other customers they are “expected” but it really doesn’t matter to this discussion). The FlowChart activity is new in WF 4 and it squarely addresses this (rather large) class of scenarios.&amp;#160; Flowchart is a very powerful construct since it provides the simplicity of sequence plus the ability of looping back to a previous point of execution, which is quite common in real life business processes to simulate re-try of logic when handling external input.&lt;/p&gt;  &lt;p&gt;A Flowchart contains a set of nodes and arcs.&amp;#160; The nodes are FlowNodes – which contain activities or special common constructs such as a 2-way decision or a multi-way switch.&amp;#160; The arcs describe potential execution paths through the nodes.&amp;#160; The WF 4 Flowchart has a single path of execution; that is, it does not support split/join semantics that would enable multiple interleaved paths of execution. &lt;/p&gt;  &lt;p&gt;The next figure shows a simplified recruiting process modeled using a &lt;b&gt;Flowchart&lt;/b&gt;. In this case after a résumé is received, references are checked. If references are good, the process continues, otherwise the résumé is rejected. The next step verifies that the candidate skills are a good match for the position offered. If the candidate is a good match, then she will be offered a position. If she is not a good match for this position but interesting for future opportunities, the resume is saved in a database and a rejection letter is sent. Finally, if the candidate is not a good match, she is sent a rejection letter.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/db969246434c_8E12/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/db969246434c_8E12/image_thumb_2.png" width="463" height="440" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Flowchart modeling style is great to represent processes that are sequential in nature (with a single path of execution), but have loops to previous states. They use a very well known approach for modeling processes (based on “boxes and arrows”) and allow representing processes in a very visual manner. Control of flow is dominated by the transitions between the nodes and by two first-class branching activities (&lt;b&gt;FlowDecision&lt;/b&gt; and &lt;b&gt;FlowSwitch&lt;/b&gt;). Flowchart is a good fit to model processes with human interactions (e.g. human workflows).&lt;/p&gt;  &lt;h4&gt;Using Sequence and Flowchart together&lt;/h4&gt;  &lt;p&gt;WF 3 had a notion of a root activity. Only root activities could be used as the top level activity in a WF 3 workflow. WF 4 does not have a similar restriction. There is no notion of a root activity any more. Any activity can be the root of a workflow.&lt;/p&gt;  &lt;p&gt;Let me explain this in more detail… Activities &lt;b&gt;are a unit of work in WF&lt;/b&gt;. Activities &lt;b&gt;can be composed together &lt;/b&gt;into larger Activities. When an Activity is used as a top-level entry point, &lt;b&gt;we call it a &amp;quot;Workflow&amp;quot;&lt;/b&gt;, just like Main is simply another function that represents a top level entry point to CLR programs. Hence, there is nothing special about using &lt;b&gt;Sequence&lt;/b&gt; or &lt;b&gt;Flowchart&lt;/b&gt; as the top level activity; and they can be composed at will.&lt;/p&gt;  &lt;p&gt;The next figure shows a &lt;b&gt;Flowchart&lt;/b&gt; inside a &lt;b&gt;Sequence&lt;/b&gt;. The workflow below has three activities: a composite activity that does some work, a &lt;b&gt;Flowchart&lt;/b&gt; (highlighted in green) and finally another composite activity that does some more work.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/db969246434c_8E12/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/db969246434c_8E12/image_thumb_3.png" width="270" height="411" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The same can be also done in a &lt;b&gt;Flowchart&lt;/b&gt;. The next figure shows a &lt;b&gt;Flowchart&lt;/b&gt; that has a &lt;b&gt;Sequence&lt;/b&gt; (highlighted in green), a &lt;b&gt;FlowDecision&lt;/b&gt;, and then two &lt;b&gt;WriteLine&lt;/b&gt; activities for the &lt;b&gt;True&lt;/b&gt; and &lt;b&gt;False&lt;/b&gt; paths of the decision.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/db969246434c_8E12/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/db969246434c_8E12/image_thumb_4.png" width="377" height="281" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h4&gt;Beyond Sequence and Flowchart&lt;/h4&gt;  &lt;p&gt;WF 4 simplified activity authoring story makes easier writing your own custom composite activities to model any control of flow approach of your choice. In future posts, we will show how to write your own custom activities and designers.&lt;/p&gt;  &lt;h4&gt;Conclusion&lt;/h4&gt;  &lt;p&gt;In this post we have presented the Sequential and Flowchart modeling styles. We learned that &lt;b&gt;Sequence&lt;/b&gt; is used for modeling sequential behavior and that &lt;b&gt;Flowchart&lt;/b&gt; is used to model processes with a single path of execution and loops to previous states. We also learned that &lt;b&gt;Sequence&lt;/b&gt; and &lt;b&gt;Flowchart&lt;/b&gt; can be combined and used together as any other existing activity.&lt;/p&gt;  &lt;p&gt;The following table shows the main differences between &lt;b&gt;Sequence&lt;/b&gt; and &lt;b&gt;Flowchart&lt;/b&gt;. &lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="399"&gt;           &lt;p&gt;&lt;b&gt;Sequence&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="399"&gt;           &lt;p&gt;&lt;b&gt;Flowchart&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="399"&gt;           &lt;p&gt;Order of execution is explicit, close to imperative/code &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="399"&gt;           &lt;p&gt;Order of execution expressed as a graph with nodes and arcs&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="399"&gt;           &lt;p&gt;Loopbacks are represented combining control of flow activities (e.g. &lt;b&gt;While&lt;/b&gt; + &lt;b&gt;If&lt;/b&gt;)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="399"&gt;           &lt;p&gt;First class modeling of loopbacks &lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="399"&gt;           &lt;p&gt;Parity with imperative / procedural&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="399"&gt;           &lt;p&gt;Parity with boxes and arrows diagrams&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="399"&gt;           &lt;p&gt;Activities are executed in sequential order&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="399"&gt;           &lt;p&gt;Activities are executed in the order dictated by the arrows between them&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="399"&gt;           &lt;p&gt;Simple process / no human interaction (e.g. services)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="399"&gt;           &lt;p&gt;Complex processes / human interactions (e.g. human workflows / state machine scenarios)&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="399"&gt;           &lt;p&gt;The flow of the process is not visually obvious&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="399"&gt;           &lt;p&gt;Control of flow is visual, dominated by Boolean decisions (FlowDecision) or Switch (FlowSwitch)&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9736250" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/endpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Activities/default.aspx">Activities</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/4.0/default.aspx">4.0</category></item><item><title>A Tour on the WF4 Activity Palette</title><link>http://blogs.msdn.com/endpoint/archive/2009/05/29/a-tour-on-the-wf4-activity-palette.aspx</link><pubDate>Fri, 29 May 2009 09:03:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9651914</guid><dc:creator>lwelicki</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/endpoint/comments/9651914.aspx</comments><wfw:commentRss>http://blogs.msdn.com/endpoint/commentrss.aspx?PostID=9651914</wfw:commentRss><description>&lt;p&gt;WF4 beta 1 ships with a comprehensive set of activities (more than 35) that you can use to author your workflows or to create your own custom activities. This post will give you a quick tour through the activity palette and introduce you to the key characteristics of the out of the box activities.&lt;/p&gt;  &lt;p&gt;Activities are the unit of work in a workflow program. Activities in WF4 have a signature and body. The signature of an activity is defined in terms of its public arguments. These public arguments define the data flow into and out of an activity. The body of an activity is a chunk of execution logic that may execute over multiple pulses of work. This logic can be expressed declaratively in terms of other activities or with imperative code.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Quick note&lt;/u&gt;&lt;/b&gt;: As you may have noticed, the activities in the toolbox are not sorted alphabetically. This is something that we are aware of and that will be fixed in the next Beta. For Beta1, if this bothers you, you can simply right-click in the toolbox and choose &amp;quot;Sort Items Alphabetically&amp;quot; and it will sort the items for you for easy discoverability.&lt;/p&gt;  &lt;h4&gt;Procedural&lt;/h4&gt;  &lt;p&gt;Procedural activities provide a mechanism to model sequential control flow using concepts you know from standard procedural languages like C# or VB like if, assign, while, etc. Procedural activities include the basic building blocks to represent sequential behavior, including control of flow, method invocation on CLR objects, collection manipulation, and error handling. It also covers advanced scenarios like parallel activities, transaction management, compensation, cancellation, and persistence. The table below contains all the activities in the procedural category. The words in &lt;b&gt;bold&lt;/b&gt; in the description of each activity represent its most important arguments.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;    &lt;table border="1" cellspacing="0" cellpadding="0" width="502"&gt;&lt;tbody&gt;       &lt;tr bgcolor="#dcdcdc"&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;&lt;b&gt;Activity&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;b&gt;Designer&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr bgcolor="#f0f0f0"&gt;         &lt;td valign="top" width="100%" colspan="3"&gt;           &lt;p&gt;&lt;b&gt;&lt;i&gt;Collection Management&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;AddToCollection&amp;lt;T&amp;gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Adds an &lt;b&gt;Item&lt;/b&gt; to a &lt;b&gt;Collection&lt;/b&gt;. &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image001_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image001_thumb.jpg" width="159" height="39" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;RemoveFromCollection&amp;lt;T&amp;gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Removes an &lt;b&gt;Item&lt;/b&gt; from a &lt;b&gt;Collection&lt;/b&gt;.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image002_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image002_thumb.jpg" width="162" height="39" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;ClearCollection&amp;lt;T&amp;gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Clears a &lt;b&gt;Collection&lt;/b&gt;, removing all items stored in it.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image003_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image003" border="0" alt="clip_image003" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image003_thumb.jpg" width="162" height="38" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;ExistsInCollection&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Verifies if an &lt;b&gt;Item&lt;/b&gt; exists in a &lt;b&gt;Collection&lt;/b&gt;. If the item exists, its &lt;strong&gt;Result&lt;/strong&gt; argument will yield True.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image004_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image004_thumb.jpg" width="162" height="38" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr bgcolor="#f0f0f0"&gt;         &lt;td valign="top" width="100%" colspan="3"&gt;           &lt;p&gt;&lt;b&gt;&lt;i&gt;Control of Flow&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;If&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;The If activity selects a child activity for execution based on the value of a Boolean expression.&lt;/p&gt;            &lt;p&gt;If the Boolean expression &lt;b&gt;Condition&lt;/b&gt; yields True (and “Then” activity is configured), the “&lt;b&gt;Then&lt;/b&gt;” activity is scheduled. If the expressions yields False (and “Else” activity is set), the “&lt;b&gt;Else&lt;/b&gt;” expression is scheduled.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/image_thumb.png" width="190" height="69" /&gt;&lt;/a&gt; &lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;DoWhile&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Executes its &lt;b&gt;Body&lt;/b&gt; until the &lt;b&gt;Condition&lt;/b&gt; evaluates to True. The Body will be executed at least once.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image008_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image008_thumb.jpg" width="183" height="70" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;ForEach / ForEach&amp;lt;T&amp;gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;ForEach activity contains a list of &lt;b&gt;Values&lt;/b&gt; and a &lt;b&gt;Body&lt;/b&gt;. At runtime, the list is iterated and the body is executed for each value in the list.&lt;/p&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image010_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image010" border="0" alt="clip_image010" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image010_thumb.jpg" width="181" height="117" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;Pick&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;The Pick Activity provides event-based control flow modeling in WF. The only valid children for a Pick activity are PickBranches. &lt;/p&gt;            &lt;p&gt;At the beginning of a Pick execution, all the Trigger activities from all its &lt;strong&gt;Branches&lt;/strong&gt; are scheduled. When the first Trigger completes its corresponding Action activity is scheduled, and all other Trigger activities are canceled. &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image011_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image011" border="0" alt="clip_image011" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image011_thumb.jpg" width="166" height="62" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;PickBranch&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;PickBranch represents a branch in a Pick. It consists of a &lt;b&gt;Trigger&lt;/b&gt; and &lt;b&gt;Action&lt;/b&gt;. PickBranch can only be added to a Pick activity. &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image013_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image013_thumb.jpg" width="137" height="187" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;Sequence&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;The Sequence activity allows for the execution of one or more &lt;b&gt;Activities&lt;/b&gt; in order. &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image014_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image014" border="0" alt="clip_image014" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image014_thumb.jpg" width="181" height="100" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;Switch&amp;lt;T&amp;gt; &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Switch activity is similar to &lt;a href="http://msdn.microsoft.com/en-us/library/06tc147t.aspx"&gt;switch&lt;/a&gt; statement in C#. It contains an &lt;b&gt;Expression&lt;/b&gt; and a set of &lt;b&gt;Cases&lt;/b&gt; (each case has a key and an activity). After the expression is evaluated, the Switch activity looks for a &lt;b&gt;Case&lt;/b&gt; with a key that matches the result of the expression and if found, it schedules the activity associated with that Case.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image016_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image016" border="0" alt="clip_image016" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image016_thumb.jpg" width="191" height="115" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;While&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;The While activity executes it's &lt;b&gt;Body&lt;/b&gt; while a Boolean &lt;b&gt;Condition&lt;/b&gt; is True. &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image018_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image018" border="0" alt="clip_image018" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image018_thumb.jpg" width="192" height="73" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr bgcolor="#f0f0f0"&gt;         &lt;td valign="top" width="100%" colspan="3"&gt;           &lt;p&gt;&lt;b&gt;&lt;i&gt;Parallel Execution&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;Parallel&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Parallel activity allows parallel execution of its children. It operates by scheduling each WorkflowElement in its &lt;b&gt;Branches&lt;/b&gt; collection at the beginning of its execution.&amp;#160; It completes when all of its Branches complete or when its &lt;strong&gt;CompletionCondition&lt;/strong&gt; property evaluates to true.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image019_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image019" border="0" alt="clip_image019" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image019_thumb.jpg" width="188" height="66" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;ParallelForEach /&amp;#160; ParallelForEach&amp;lt;T&amp;gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;The ParallelForEach activity enumerates the elements of a collection(&lt;strong&gt;Values&lt;/strong&gt;) and executes an &lt;strong&gt;Activity &lt;/strong&gt;for each element of the collection, in a similar way than the ForEach activity does. The main difference is that the embedded statement is executed in a parallel fashion. &lt;/p&gt;            &lt;p&gt;Just like the Parallel Activity, ParallelForEach has a &lt;strong&gt;CompletionCondition&lt;/strong&gt;, so that the ParallelForEach activity could complete early if the evaluation of the CompletionCondition returns true. The CompletionCondition is evaluated after each iteration is completed.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image021_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image021" border="0" alt="clip_image021" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image021_thumb.jpg" width="192" height="122" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr bgcolor="#f0f0f0"&gt;         &lt;td valign="top" width="100%" colspan="3"&gt;           &lt;p&gt;&lt;b&gt;&lt;i&gt;Error Handling&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;TryCatch&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;TryCatch activity is similar to the &lt;a href="http://msdn.microsoft.com/en-us/library/dszsf989.aspx"&gt;try..catch&lt;/a&gt; construct in C#: all activities in the &lt;b&gt;Try&lt;/b&gt; block are executed and if an exception occurs, it will schedule the &lt;b&gt;Catch&lt;/b&gt; block that best matches that exception (if no matching catch is found, the workflow is aborted). All Catch blocks are contained in a collection called Catches.&lt;/p&gt;            &lt;p&gt;TryCatch activity also has a &lt;b&gt;Finally&lt;/b&gt; block that is executed after the Try (and any eventual Catch).&lt;/p&gt;            &lt;p&gt;&lt;b&gt;&lt;u&gt;A note on unhandled exceptions&lt;/u&gt;&lt;/b&gt;:&lt;/p&gt;            &lt;p&gt;TryCatch provides exception handling at the workflow level. When an unhandled exception is thrown, the workflow is aborted and therefore the Finally block won’t be executed. This behavior is consistent with C#.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image023_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image023" border="0" alt="clip_image023" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image023_thumb.jpg" width="162" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;Catch&amp;lt;T&amp;gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Represents one catch block to be used in a TryCatch activity. If an exception is thrown within a Try Element, the TryCatch will attempt to find a matching &lt;b&gt;Catch&lt;/b&gt; element based on the type of the thrown exception.&lt;/p&gt;            &lt;p&gt;Catch&amp;lt;T&amp;gt; can only be used inside a TryCatch activity&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image025_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image025" border="0" alt="clip_image025" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image025_thumb.jpg" width="185" height="66" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;Throw&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Throw activity throws an exception within a workflow. Throw activity has an &lt;b&gt;Exception&lt;/b&gt; property that contains the exception that will be thrown at execution time.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image026_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image026" border="0" alt="clip_image026" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image026_thumb.jpg" width="157" height="37" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr bgcolor="#f0f0f0"&gt;         &lt;td valign="top" width="100%" colspan="3"&gt;           &lt;p&gt;&lt;b&gt;&lt;i&gt;Utilities&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;Assign&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;The Assign activity assigns the value of its &lt;b&gt;Value&lt;/b&gt; argument to its &lt;b&gt;To &lt;/b&gt;argument.&lt;/p&gt;            &lt;p&gt;The types of both arguments must be compatible. This compatibility is verified at runtime.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image027_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image027" border="0" alt="clip_image027" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image027_thumb.jpg" width="165" height="55" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;Delay&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Delay Activity, as its name suggests, will block the current workflow execution path for a &lt;b&gt;Duration&lt;/b&gt; specified by user. After the duration expires, the workflow continues execution as expected. The duration of the delay is set using a &lt;a href="http://msdn.microsoft.com/en-us/library/system.timespan.aspx"&gt;TimeSpan&lt;/a&gt;.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image028_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image028" border="0" alt="clip_image028" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image028_thumb.jpg" width="150" height="37" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;InvokeMethod / InvokeMethod&amp;lt;T&amp;gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;InvokeMethod is the activity that allows you to call an existing CLR instance or static method. To invoke a method all you need to do is provide the owner of the method (&lt;b&gt;TargetType&lt;/b&gt; for static methods, &lt;b&gt;TargetObject&lt;/b&gt; for instance methods), the &lt;b&gt;MethodName&lt;/b&gt;, and its &lt;b&gt;Parameters&lt;/b&gt;.&lt;/p&gt;            &lt;p&gt;InvokeMethod supports the following method invocation scenarios:&lt;/p&gt;            &lt;p&gt;· Public instance and static methods&lt;/p&gt;            &lt;p&gt;· Parameter passing by value and by reference&lt;/p&gt;            &lt;p&gt;· Support for parameter arrays&lt;/p&gt;            &lt;p&gt;· Support for generic parameters&lt;/p&gt;            &lt;p&gt;· Asynchronous method invocation&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image029_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image029" border="0" alt="clip_image029" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image029_thumb.jpg" width="182" height="106" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;WriteLine&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Writes text to the configured output console. &lt;/p&gt;            &lt;p&gt;&lt;b&gt;&lt;u&gt;Writing beyond the System.Console&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;            &lt;p&gt;WriteLine has a TextWriter argument can be configured to write to different outputs. For example, we can configure the TextWriter property to send the text to an ASP.NET page. If the TextWriter is not set, it will be set by default to the &lt;a href="http://msdn.microsoft.com/en-us/library/system.console.aspx"&gt;System Console&lt;/a&gt;.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image030_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image030" border="0" alt="clip_image030" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image030_thumb.jpg" width="155" height="38" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr bgcolor="#f0f0f0"&gt;         &lt;td valign="top" width="100%" colspan="3"&gt;           &lt;p&gt;&lt;b&gt;Advanced (Cancellation, Compensation, Transactions, and Persistence)&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;CancellationScope&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;The CancellationScope activity consists of two main parts, the &lt;b&gt;Body&lt;/b&gt; and the &lt;b&gt;CancelHandler&lt;/b&gt;. The body is the code path that normally executes. If the activity gets canceled, then the cancel handler is called. &lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;            &lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image032_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image032" border="0" alt="clip_image032" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image032_thumb.jpg" width="161" height="187" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;CompensatableActivity&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;CompensableActivity is used to define a potentially long running activity with accompanying &lt;strong&gt;Compensation&lt;/strong&gt; and &lt;strong&gt;Confirmation &lt;/strong&gt;logic.&lt;/p&gt;            &lt;p&gt;Compensation allows the user to specify corrective action to be taken on an activity based upon activity which occurs after the successful completion of the &lt;strong&gt;Body &lt;/strong&gt;of the activity.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image033_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image033" border="0" alt="clip_image033" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image033_thumb.jpg" width="132" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;Compensate&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Compensate is used to explicitly invoke the compensation handler of a CompensableActivity.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image034_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image034" border="0" alt="clip_image034" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image034_thumb.jpg" width="148" height="36" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;Confirm&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Confirm is used to explicitly invoke the confirmation handler of a CompensableActivity.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image035_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image035" border="0" alt="clip_image035" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image035_thumb.jpg" width="146" height="36" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;Persist&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;Persists the workflow instance. Persistence will be done using the configuration of the WorkflowInstance that is being executed (this activity doesn’t have any arguments).&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image036_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image036" border="0" alt="clip_image036" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image036_thumb.jpg" width="148" height="36" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="20%"&gt;           &lt;p&gt;TransactionScopeActivity&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="36%"&gt;           &lt;p&gt;The TransactionScopeActivity provides the mechanism for initializing a new transaction, making the transaction handle ambient (a workflow execution property) and calling complete on the transaction once the &lt;b&gt;Body&lt;/b&gt; of the TransactionScope activity has completed.&lt;/p&gt;            &lt;p&gt;TransactionScopeActivity supports “Requires” semantics. If there is already an ambient transaction it is used, else a new one is created. &lt;/p&gt;            &lt;p&gt;&lt;b&gt;&lt;u&gt;Nested transaction scopes:&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;            &lt;p&gt;TransactionScopeActivity can be nested in another TransactionScopeActivity. A TransactionScopeActivity nested in another TransactionScopeActivity will use the existing transaction.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="43%"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image037_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image037" border="0" alt="clip_image037" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image037_thumb.jpg" width="135" height="119" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;h4&gt;Flowchart&lt;/h4&gt;  &lt;p&gt;Flowchart is a new modeling style that we have introduced in WF4. Flowchart is a well known and intuitive paradigm to visually represent business processes. Business Analysts, Architects and Developers use often flowcharts as common language to express processes.&amp;#160; &lt;/p&gt;  &lt;p&gt;Flowchart is a very powerful construct since it provides the simplicity of sequence plus the ability of looping back to a previous point of execution. All this is conveyed using a very well known conceptual paradigm that is common across several disciplines beyond computer science! &lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="0" width="502"&gt;&lt;tbody&gt;       &lt;tr bgcolor="#dcdcdc"&gt;         &lt;td valign="top" width="97"&gt;           &lt;p&gt;&lt;b&gt;Activity&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="191"&gt;           &lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;           &lt;p&gt;&lt;b&gt;Designer&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="97"&gt;           &lt;p&gt;Flowchart&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="191"&gt;           &lt;p&gt;This is the root for a Flowchart. Since Flowchart is an activity like any other, it can be composed inside any container activity.&lt;/p&gt;            &lt;p&gt;For example, we can add a Flowchart inside of a Sequence or a Flowchart inside another Flowchart.&lt;/p&gt;            &lt;p&gt;The green ball in the image at the right represents the &lt;b&gt;start node&lt;/b&gt; of the Flowchart.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/image_thumb_4.png" width="185" height="244" /&gt;&lt;/a&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="97"&gt;           &lt;p&gt;FlowDecision&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="191"&gt;           &lt;p&gt;FlowDecision models conditional forks within a Flowchart. It can be seen as the equivalent of the procedural If activity in the Flowchart world.&lt;/p&gt;            &lt;p&gt;This activity contains a Boolean expression &lt;b&gt;Condition&lt;/b&gt;. If the expression evaluates to “True”, the true path is executed (otherwise, the false path is scheduled).&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212" align="center"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/image_thumb_1.png" width="89" height="70" /&gt;&lt;/a&gt; &lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="97"&gt;           &lt;p&gt;FlowSwitch&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="191"&gt;           &lt;p&gt;FlowSwitch activity selects a next node depending on the value of an &lt;b&gt;expression&lt;/b&gt;. FlowSwitch can be seen as the equivalent of the procedural Switch activity in the Flowchart world.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="212" align="center"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/image_thumb_2.png" width="66" height="64" /&gt;&lt;/a&gt; &lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;h4&gt;Messaging&lt;/h4&gt;  &lt;p&gt;The WF4 Messaging Activities are designed to support message-oriented workflows and provide better integration of messaging into workflows. They enable workflows to send data out to other systems and receive data from other systems. These activities can be composed together and along with correlation can model many complex Message Exchange Patterns.&lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr bgcolor="#dcdcdc"&gt;         &lt;td valign="top" width="252"&gt;           &lt;p&gt;&lt;b&gt;Activity&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="636"&gt;           &lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="605"&gt;           &lt;p&gt;&lt;b&gt;Designer&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="252"&gt;           &lt;p&gt;Receive&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="636"&gt;           &lt;p&gt;Models one way receive of a message. It can receive data of the following types: Message, DataContract types, XmlSerializable types, and MessageContracts.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="605"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image041_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image041" border="0" alt="clip_image041" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image041_thumb.jpg" width="189" height="84" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="252"&gt;           &lt;p&gt;ReceiveAndSendReply&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="636"&gt;           &lt;p&gt;This activity template represents a correlated Receive activity and SendReply activity. &lt;/p&gt;            &lt;p&gt;By using this template you can wait for an incoming message and then send a reply to the sender.&lt;/p&gt;            &lt;p&gt;Since the Receive and the SendReply are inside a sequence, you can add any activity between them.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="605"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image042_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image042" border="0" alt="clip_image042" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image042_thumb.jpg" width="198" height="231" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="252"&gt;           &lt;p&gt;Send&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="636"&gt;           &lt;p&gt;Models one way send of a message. It can receive data of the following types: Message, DataContract types, XmlSerializable types, and MessageContracts.&lt;/p&gt;            &lt;p&gt;This activity can be used in two ways:&lt;/p&gt;            &lt;p&gt;1. Client: this activity can be used to send a request to a service. This is equivalent to a WCF client calling a service operation. No contract inference is performed on the client side.&lt;/p&gt;            &lt;p&gt;2. On the server side the Send activity can be used to send a reply to a previous Receive. In this case the Send and Receive activities must have the same OperationName, Action and CorrelationHandle.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="605"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image043_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image043" border="0" alt="clip_image043" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image043_thumb.jpg" width="204" height="90" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="252"&gt;           &lt;p&gt;SendAndReceiveReply&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="636"&gt;           &lt;p&gt;This activity template represents a correlated Send activity and ReceiveReply activity. &lt;/p&gt;            &lt;p&gt;By using this template you can send a message and then wait for a reply from the destination. &lt;/p&gt;            &lt;p&gt;Since the Send and the ReceiveReply activities are inside a sequence, you can add any activity between them.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="605"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image044_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image044" border="0" alt="clip_image044" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image044_thumb.jpg" width="199" height="233" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;h4&gt;PowerShell&lt;/h4&gt;  &lt;p&gt;PowerShell activities, as their name imply, allow invoking &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx"&gt;PowerShell&lt;/a&gt; cmdlets (commandlets) and scripts from WF programs.&lt;/p&gt;  &lt;p&gt;Please note that while these activities are included by default in the Beta1 toolbox, they will not be available in the final RTM bits when we release. This is because .NET Framework does not allow taking a dependency on a technology that does not ship in the framework. We're working on a longer term strategy here since many customers have requested PowerShell activities. For RTM, you will find these activities in the SDK samples instead. &lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr bgcolor="#dcdcdc"&gt;         &lt;td valign="top" width="261"&gt;           &lt;p&gt;&lt;b&gt;Activity&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="584"&gt;           &lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="648"&gt;           &lt;p&gt;&lt;b&gt;Designer&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="261"&gt;           &lt;p&gt;InvokePowerShell&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="584"&gt;           &lt;p&gt;Invokes a PowerShell cmdlet that does not have a return value. InvokePowerShell can be used to invoke simple cmdlets and scripts. We can also pass parameters and input objects to the cmdlet. After execution, the activity provides a set of errors (if any occurred).&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="648"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image045_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image045" border="0" alt="clip_image045" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image045_thumb.jpg" width="209" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="261"&gt;           &lt;p&gt;InvokePowerShell&amp;lt;T&amp;gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="584"&gt;           &lt;p&gt;An activity that invokes and retrieves the resultant output from a PowerShell cmdlet. This flavor of the activity has all the same arguments than the non-generic version plus an InitializationAction. &lt;/p&gt;            &lt;p&gt;The InitializationAction is used to map the results of the execution of the cmdlet to variables in our workflows.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="648"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image046_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image046" border="0" alt="clip_image046" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image046_thumb.jpg" width="218" height="119" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;h4&gt;Migration&lt;/h4&gt;  &lt;p&gt;WF 3.x and 4.0 can exist side by side, but you can also use WF 3.x activities in WF4 workflows using the Interop activity. &lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr bgcolor="#dcdcdc"&gt;         &lt;td valign="top" width="261"&gt;           &lt;p&gt;&lt;b&gt;Activity&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="584"&gt;           &lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="648"&gt;           &lt;p&gt;&lt;b&gt;Designer&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="261"&gt;           &lt;p&gt;Interop&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="584"&gt;           &lt;p&gt;The Interop activity is a WF4 activity that wraps a WF3 activity (a non-abstract CLR type that derives from System.Workflow.ComponentModel.Activity) thus allowing the WF3 activity to be used in WF4 workflows.&amp;#160; Note that the WF3 activity can be a single leaf activity, or an entire compiled workflow (tree of activities). &lt;/p&gt;            &lt;p&gt;The Interop activity bridges the WF4 and WF3 activity execution models, facilitates data flow across the interop boundary, and enables persistence and tracking of WF3 activity instances within WF4 workflow instances.&lt;/p&gt;            &lt;p&gt;The Interop activity allows WF developers to move to the WF4 model in an incremental fashion:&lt;/p&gt;            &lt;p&gt;· Quickly experiment with WF4 using existing WF3 activity artifacts&lt;/p&gt;            &lt;p&gt;· Wrap WF3 activities the developer isn’t ready to redesign on the WF4 model&lt;/p&gt;            &lt;p&gt;· Wrap WF3 activities for which the developer doesn’t own or possess the source code (e.g. they purchased the activity from a third party)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="648"&gt;           &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image047_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image047" border="0" alt="clip_image047" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/04171462c6f8_12786/clip_image047_thumb.jpg" width="186" height="62" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;h4&gt;Wrapping up&lt;/h4&gt;  &lt;p&gt;It’s been a long tour, hasn't it? And this is just the beginning! There are a lot of new exciting features in WF4 and we are eager to share them with you in future posts.&lt;/p&gt;  &lt;p&gt;This post is an introduction to the activities that we are shipping in the activities toolbox. If you want to see these activities in action, please check our &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=5aca0622-d87d-4cc9-a22c-0d58205a56b4&amp;amp;displaylang=en"&gt;WF samples&lt;/a&gt;. A good starting point are the samples under the folder %SamplesRoot%\WF\Built-InActivities.&lt;/p&gt;  &lt;p&gt;&lt;s&gt;&lt;/s&gt;&lt;/p&gt;  &lt;p&gt;We are keenly interested in understanding your scenarios and ideas, and helping you accomplish your goals on WF4.&amp;#160; We’d appreciate your feedback (both positive and critical), and we look forward to continued dialogue about the activities that you would like to see in WF toolbox. We look forward to hearing from you!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9651914" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/endpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Activities/default.aspx">Activities</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/4.0/default.aspx">4.0</category></item><item><title>The Road to 4 – WF Changes between Beta 1 and CTP</title><link>http://blogs.msdn.com/endpoint/archive/2009/05/01/the-road-to-4-wf-changes-between-beta-1-and-ctp.aspx</link><pubDate>Sat, 02 May 2009 01:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9583028</guid><dc:creator>Cliff Simpkins</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/endpoint/comments/9583028.aspx</comments><wfw:commentRss>http://blogs.msdn.com/endpoint/commentrss.aspx?PostID=9583028</wfw:commentRss><description>&lt;p&gt;I can’t believe it’s been a few months since my post on &lt;a href="http://blogs.msdn.com/endpoint/archive/2009/01/20/the-road-to-wf-4-0-part-1.aspx"&gt;the Road to WF 4, and the expected impact of the new workflow model&lt;/a&gt;. It’s been a busy few months as the team develops and builds toward .NET 4; as we hosted an MVP Summit here in Redmond; and worked with TAP customers around using WF 4; and a few small scale shuffling around of job roles (one reason why you may not have seen much from me around updates on Channel9 and MSDN). And then, of course, there’s getting ready for TechEd in a couple weeks – we have some excellent presentations in store for Los Angeles, but I’ll circle back to that at the end of this article. All of that being said, I don't believe you're here for my digressions…&lt;/p&gt;  &lt;p&gt;The team has been busy coding away since our conversations at the PDC in October. Soon, we will be releasing a public build of Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF), which will be made available with the beta 1 build of .NET 4 and Visual Studio 2010 &amp;lt;and before you ask: I don't know when the beta will be posted&amp;gt;. Starting with this release, the WCF and WF builds will be part of the all-up VS2010 public drops, and the new System.Xaml.dll is provided within the box, as opposed to out.&lt;/p&gt;  &lt;p&gt;At the highest level, the beta includes a great number of enhancements: additional features have been added; the designer looks and performs better; and the codebase is much more stable. What I'd like to do is take a rather quick walk along the workflow-specific features new to the beta and point out some of the highlights, which we will explore in greater detail as we come upon the beta 1 release. To be clear, this particular entry is geared to the .NET developer that had attended the PDC or had the opportunity to evaluate the WCF/WF/’Dublin’ VPC that was distributed at the PDC and watch the recorded PDC sessions. My next blog entry will talk to the WF 3.&lt;i&gt;x&lt;/i&gt; developer, and introduce the new workflow model being released as WF 4.&lt;/p&gt;  &lt;p&gt;To begin on the CTP -&amp;gt; Beta 1 delta discussion, let's start with the building blocks of workflows - activities – and wind our way into the core.&lt;/p&gt;  &lt;p&gt;The activity team has made several improvements that will immediately pop to anyone who worked with the CTP bits provided at the PDC: more out-of-the-box (OOTB) activities, clean up of the activities you saw in the CTP, API improvements in the activity object model that make it easy to write custom activities, and support for VB expressions end to end.&lt;/p&gt;  &lt;h2&gt;Base Activity Library &lt;/h2&gt;  &lt;p&gt;Out-of-the-box, the new workflow designer in beta 1 will ship with a larger set of OOTB activities than was available in the CTP's designer palette. These new activities include the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Parallel&lt;/b&gt;: The parallel activity, which allows you to interleave the execution of activities along multiple paths, makes a triumphant return with a WF 4 designer. As an aside to those who used the parallel activity in WF 3, it’s important to note that the activity scheduling/queuing behavior changed in WF 4. We’ll get a much more detailed follow-up post on this topic next when Beta 1 comes out. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;ParallelForEach&lt;/b&gt;: The beauty of the OOTB activities is they do about what you would expect. In Beta 1, this new activity allows you to perform a parallel series of operations upon an object collection. Unlike the Replicator activity in .NET 3, the ParallelForEach activity (and ForEach activity) allows you to model this behavior in a fully declarative fashion. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Pick&lt;/b&gt;: The pick activity can perhaps be best thought of an equivalent to the listen activity from the current WF model or similar to a BPEL pick. The activity has a series of branches, with a defined trigger/event and execution steps. We expect that the combination of Pick with the WF 4 flowchart model’s capability to define free form activity transitions to become a popular design pattern. &lt;/li&gt;    &lt;li&gt;Collection Manipulation Activities: The Beta 1 release adds four activities (&lt;b&gt;ClearCollection&lt;/b&gt;, &lt;b&gt;AddToCollection&lt;/b&gt;, &lt;b&gt;RemoveFromCollection&lt;/b&gt;, and &lt;b&gt;ExistsInCollection&lt;/b&gt;) that allow you to manipulate object collections. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Service Activities&lt;/b&gt;: This will be discussed in a ‘What’s new in WCF Beta 1’ blog post that I will try to get out after TechEd, but it’s important to note that we’ve greatly improved the WCF activities in the beta. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In addition to the new activities highlighted above, the beta simplifies the visual presentation of other activities to take up less real estate on the designer. Feedback we received from folks who saw and used the PDC bits was that they didn’t want too much information on the activity shape, so more information for the OOTB activities has been moved back to the property grid to make the workflow designer surface more readable without having to use the resizer.&lt;/p&gt;  &lt;p&gt;On the topic around what’s not in the box, there are a number of activities that had been discussed at the PDC that you won’t find in the VS2010 beta 1 download, these include generic activities to interact with resources such as a database, with the file system, and with SharePoint. While it’s pretty clear that these won’t make it into the Framework 4 release, we are trying to find other ways to release them. For example, the beta 1 SDK includes a policy activity to interact with WF 3 rules sets. For those that don’t show up in the SDK, we are evaluating an option of making the activities available as a separate downloade post-Beta 1, but the location and timing of that is still being determined. &lt;/p&gt;  &lt;p&gt;Two other major WF 4 activities that were discussed at PDC, a new state machine activity and a new forward chaining ruleset activity, will not be available with the VS2010 beta 1 release – and we will cover each of these topics in greater depth in the next month. At this point, a new forward chaining rules engine won’t be ready for the .NET 4 timeframe, and will probably see a CTP release post-VS2010 to gather feedback and to allow customers the opportunity to evaluate the direction we are considering. It’s important to note that we are working to ensure integration with the WF 3 rules engine will be possible in a number of ways, though; one example of integration back to the WF 3 rules engine is the SDK sample activity I mentioned above, For the state machine, we are unable to include a new state machine activity in WF 4, but our work with TAP customers leads us to expect that using a combination of the new FlowChart + Pick activities should satisfy a large majority of the current scenarios that folks are currently using the state machine activity for (again, we can and will dive into this as a follow-up post), and we look forward to getting customer feedback on the capabilities and limitations of using FlowChart + Pick once the beta is released. &lt;/p&gt;  &lt;h2&gt;Activity Authoring Experience&lt;/h2&gt;  &lt;p&gt;The object model has changed between the PDC CTP release and Beta 1. While the core concepts have essentially remained the same, the class names have shifted a bit, and a couple new classes have been added into the mix. For most WF developers, there are really four activity classes that you will work with. Moving from the class with the fewest knobs to turn to the class that gives you full control, the activity classes are as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Activity&lt;/b&gt;: Used when creating a composite activity – an activity who’s execution is entirely expressed as a composition of other activities. Activities that you create from the Activity type can be designed in a declarative fashion (using XAML) and don’t allow for any imperative code. From a conceptual perspective, when authoring a “workflow” (in this case, defined as connecting a series of activities together), you are essentially authoring a derived “Activity” class. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;CodeActivity&lt;/b&gt;: Used when creating an activity that implements a custom Execute method, and is designed for short-running chunks of work. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;NativeActivity&lt;/b&gt;: Used when creating an activity that has full access to the core of the WF runtime features such scheduling child activities and manipulating bookmarks. This is intended as the type of last resort, and we don’t expect many folks to inherit from this type. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;WorkflowElement&lt;/b&gt;: This is the abstract base type that all activities derive from. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The inheritance model among these four classes is presented below. In addition to the above, the beta release adds the generic &lt;b&gt;WorkflowElement&amp;lt;T&amp;gt;&lt;/b&gt; class, which is useful for building expression activities (as an example of where this is used - the collection activities, mentioned above, inherit from the CodeActivity&amp;lt;T&amp;gt; class), and this is a topic for another blog post.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/TheRoadto4WFChangesbetweenBeta1andCTP_D185/activity-om_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="activity-om" border="0" alt="activity-om" src="http://blogs.msdn.com/blogfiles/endpoint/WindowsLiveWriter/TheRoadto4WFChangesbetweenBeta1andCTP_D185/activity-om_thumb.png" width="480" height="191" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;For most tasks, you will find that much of the custom activities authoring experience is the same between the CTP and Beta 1 builds. As we’ve been building WF 4, we have been doing usability work with customers and early adopters of WF 4 to improve the custom activity authoring experience (e.g., Beta 1 sees improvements around how developers interact with the &lt;b&gt;ActivityExecutionContext&lt;/b&gt;), and look forward to your feedback from Beta 1 to make further refinements as we continue to progress towards RTM. &lt;/p&gt;  &lt;p&gt;Before I move on to the designer experience, one other activity class that deserves a quick mention is the &lt;b&gt;DynamicActivity&lt;/b&gt;. DynamicActivity allows you to add arguments (both InArgs and OutArgs) around what is essentially loose XAML – and use that within your workflows without requiring the XAML to be compiled – allowing for assembly of activities into a higher-level abstraction without having to create/develop additional custom activities. This is also something that will be worth digging into a bit deeper in a much more technical blog post as we dive in deeper into WF 4 activity development.&lt;/p&gt;  &lt;h2&gt;Designer Experience for Activities and Workflows&lt;/h2&gt;  &lt;p&gt;As you sit down and start to work with the beta 1 bits to design activities and workflows, there are a few items that really jump out at you:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;IntelliSense and syntax-coloring&lt;/b&gt;: The expression editor within the property grid (and when editing argument and property values on the designer surface) within the Workflow designer experience now supports IntelliSense. As you type out your expressions (in VB), you get drop-downs and auto-complete capabilities as you type out your expressions to work with Strings and TimeSpans. This new expression editor can also be used in your own custom activities! &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Performance&lt;/b&gt;: As you would expect between a CTP (alpha build) and a beta 1 release, the experience with the designer is much more stable and much more performant. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Variable and argument designer&lt;/b&gt;: The visual presentation of the variable and argument boxes has changed slightly. Responding to feedback from the CTP designer, the team improved the boxes to make it easier for users to know the scope level of available variables. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Improved bread crumb trail&lt;/b&gt;: Based on feedback on the PDC CTP, as well as feedback from usability studies performed by the team, the breadcrumb trail should now be more intuitive. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The improvements should make the experience much more pleasurable and approachable than that available in the CTP.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h2&gt;Unified XAML Stack&lt;/h2&gt;  &lt;p&gt;This was a point that received a lot of discussion at PDC. With everything being in one Visual Studio and .NET build, this is now being delivered out of the box!&lt;/p&gt;  &lt;h2&gt;Tracking and Tracing Improvements&lt;/h2&gt;  &lt;p&gt;Tracking and tracing in WF 4 has changed quite a bit to improve performance and flexibility. In .NET 4, WCF and WF use much of the same tracking and tracing models, which provide consistency for .NET developers using both technologies, and makes it much easier to develop and host workflow services. WF 4 introduces the capability for WF developers to do use Event Tracing for Windows (ETW). This is an improvement that comes from the unification of the WCF and WF tracking, and is designed to provide more control to the folks managing a WF host at runtime while minimizing the performance overhead when tracking is enabled. This should provide tracking and tracing capabilities that developers and IT Pros can have more control over – specifying what to track, when to track it, and the level of verbosity to track. The beta builds upon the functionality released in the CTP, adding refinement and enhancements to tracking in WF:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Improved ETW Integration&lt;/b&gt;: Beta 1 provides .NET developers with the capability to In WF 4, this adds the &lt;b&gt;ETWTracking Participant&lt;/b&gt; to write tracking records to an ETW session. With the addition of this feature, the corresponding &lt;b&gt;SQLTracking participant&lt;/b&gt; has been removed from WF 4 in Beta 1 &lt;/li&gt;    &lt;li&gt;&lt;b&gt;End to End (E2E) Tracing With WCF&lt;/b&gt;: Beta 1 adds support to ensure that traces are emitted to tie together a request from a WCF service to a WF instance, allowing for a unified debugging experience for workflow services. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Tracking Profile Config Elements&lt;/b&gt;: The tracking profile in the .config file now uses the configuration elements instead of XAML. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;OptOut Model&lt;/b&gt;: In the PDC bits, developers had to explicitely mark variables and arguments for tracking (opt in model). Based on customer feedback, this has been changed to track all variables/arguments in a workflow unless the workflow or activity developer specifically suppresses tracking for a variable or argument. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Tracking Filtering&lt;/b&gt;: In WF 3, logging was an all-or-nothing event, the new functionality; with WF 4, more control is provided to extend and configure the runtime logging environment. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Work continues as we complete the designer and tighten down performance, but we feel that the code is in a state where customers can begin to seriously prototype their solutions on the new WF model and evaluate if it meets their needs. To help you do that, another big effort with this beta milestone is around helping you understand what the new WF model is, and how you can use it to workflow-enable your applications and services.&lt;/p&gt;  &lt;h2&gt;Supporting Material - Information You Can Use&lt;/h2&gt;  &lt;p&gt;Lastly, the team has put in a lot of effort around adding quality documentation and samples. With the CTP bits, the PDC session recordings and the hands on labs were perhaps the best place developers could go while experimenting with the bits. With beta 1, developers evaluating the beta release have a much better experience:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;When you press F1, online help is available to let you know what can be done &lt;/li&gt;    &lt;li&gt;The beta 1 SDK adds 63 new code samples (bringing us up to 88 SDK code samples), which do an excellent job of demonstrating how to accomplish more atomic tasks &lt;/li&gt;    &lt;li&gt;The hands on labs are being updated to beta 1, and they will be incorporating feedback received from those who ran the PDC labs &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In addition to the above, we will be releasing a few additional items via the blog and the WF 4 Dev Center: David Chappell is writing a new whitepaper that introduces folks to &lt;i&gt;The Workflow Way&lt;/i&gt; in .NET 4, the WF team is working on WF 3.x to WF 4 migration guidance documents that will help WF 3 developers understand the impact and options available with WF 4, and we will start doing blog posts and webcasts in the next month to aide developers in evaluating WF 4 – with some aimed at existing WF developers (discussing how existing WF developers should think about the new WF model) and others assuming no prior WF experience (simply introducing the new concepts and features). &lt;/p&gt;  &lt;p&gt;And, at TechEd, there is opportunity for folks to discuss what’s coming:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;There will be some folks from the WCF and WF team showing off WF 4 and VS2010 at the booth – I will be among the motley crew working the station, and would love to catch up &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.pluralsight.com/community/blogs/aaron/default.aspx"&gt;Aaron Skonnard&lt;/a&gt; will be doing a session on WCF and WF in .NET 4 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dasblonde.net/"&gt;Michele Leroux Bustamante&lt;/a&gt; and &lt;a href="http://www.workflowelement.com/"&gt;Zoiner Tejada&lt;/a&gt; will be doing a precon on WCF and WF 4, and the new ‘Dublin’technology extensions for Windows Server – enhancements that remove the need for WCF and WF developers from having to building a custom host (how cool is that?) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.workflowelement.com/"&gt;Zoiner Tejada&lt;/a&gt; will also be doing an interactive theatre session on his company’s experience as a WF 4 TAP customer – and the migration from WF 3.5 to WF 4 using the ‘Dublin’ extensions. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h2&gt;Wow! Deep Breath&lt;/h2&gt;  &lt;p&gt;I really hope that this is useful for you as you start to think about Visual Studio 2010 and .NET 4. I’m in the process of writing a complementary post around the WCF changes between the CTP and beta 1, which I hope to have up and posted by mid-week (May 6th-ish). I’ll then be taking a break from the writing while at TechEd (if you’re at the event, feel free to visit the booth and say hi), and then dive back into the word processor to pull together a ‘WF 4 for the .NET 3.5 developer’ to highlight changes since .NET 3.&lt;em&gt;x&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;There’s a problem with doing these really long posts – they’re hard to work into the work week. :)&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Note: Thanks to Jurgen Willis, Kavita Kamani, Vikram Desai, and Bob Schmidt for their invaluable feedback and help on this entry.&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9583028" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/endpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Activities/default.aspx">Activities</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/TechEd/default.aspx">TechEd</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/4.0/default.aspx">4.0</category></item></channel></rss>