<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Syringe.Net.Nz - Windows Workflow</title>
    <link>http://www.syringe.net.nz/</link>
    <description>Irregular Injection Of Opinion</description>
    <language>en-us</language>
    <copyright>Chris J.T. Auld</copyright>
    <lastBuildDate>Tue, 08 Apr 2008 19:50:12 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>chris@syringe.net.nz</managingEditor>
    <webMaster>chris@syringe.net.nz</webMaster>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=0c95bf71-eae0-4246-9da1-5cfa841552eb</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,0c95bf71-eae0-4246-9da1-5cfa841552eb.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,0c95bf71-eae0-4246-9da1-5cfa841552eb.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=0c95bf71-eae0-4246-9da1-5cfa841552eb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">It was always going to happen and I'm now
sitting in a session with K2 looking at their new Silverlight based Workflow designer
(which ultimately compiles down to WF).<br />
Very cool.<br /><br />
Pics to follow later.<br /><p></p><img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=0c95bf71-eae0-4246-9da1-5cfa841552eb" /></body>
      <title>A Workflow Designer in Silverlight</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,0c95bf71-eae0-4246-9da1-5cfa841552eb.aspx</guid>
      <link>http://www.syringe.net.nz/2008/04/08/AWorkflowDesignerInSilverlight.aspx</link>
      <pubDate>Tue, 08 Apr 2008 19:50:12 GMT</pubDate>
      <description>It was always going to happen and I'm now sitting in a session with K2 looking at their new Silverlight based Workflow designer (which ultimately compiles down to WF).&lt;br&gt;
Very cool.&lt;br&gt;
&lt;br&gt;
Pics to follow later.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=0c95bf71-eae0-4246-9da1-5cfa841552eb" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,0c95bf71-eae0-4246-9da1-5cfa841552eb.aspx</comments>
      <category>Windows Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=ce9c2d61-e23a-40f7-9d02-1ef49d7eca79</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,ce9c2d61-e23a-40f7-9d02-1ef49d7eca79.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,ce9c2d61-e23a-40f7-9d02-1ef49d7eca79.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=ce9c2d61-e23a-40f7-9d02-1ef49d7eca79</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sitting in a session at mix and they have confirmed that CRM 4.0 will use Windows
Workflow Foundation to manage workflow.
</p>
        <img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=ce9c2d61-e23a-40f7-9d02-1ef49d7eca79" />
      </body>
      <title>CRM 4.0 will use Windows Workflow</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,ce9c2d61-e23a-40f7-9d02-1ef49d7eca79.aspx</guid>
      <link>http://www.syringe.net.nz/2007/05/02/CRM40WillUseWindowsWorkflow.aspx</link>
      <pubDate>Wed, 02 May 2007 19:03:25 GMT</pubDate>
      <description>&lt;p&gt;
Sitting in a session at mix and they have confirmed that CRM 4.0 will use Windows
Workflow Foundation to manage workflow.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=ce9c2d61-e23a-40f7-9d02-1ef49d7eca79" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,ce9c2d61-e23a-40f7-9d02-1ef49d7eca79.aspx</comments>
      <category>.NET</category>
      <category>Windows Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=ed50fdfa-b4b8-43af-83a4-b88fe8481471</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,ed50fdfa-b4b8-43af-83a4-b88fe8481471.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,ed50fdfa-b4b8-43af-83a4-b88fe8481471.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=ed50fdfa-b4b8-43af-83a4-b88fe8481471</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So late last week Microsoft published the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A438A9B9-9F15-42EC-866F-2EA58E10DB36&amp;displaylang=en">Windows
Workflow Foundation Web Workflow Approvals Starter Kit</a> or WFWWASK :-)
</p>
        <p>
This is the culmination of a lot of hard work by the Dunedin office of <a href="http://www.intergen.co.nz">Intergen</a> who
put together this sample for the .NET 3 team @ Microsoft in Redmond.
</p>
        <p>
It's a great demonstration of how you can use WF to achieve a multiuser task management
and assignment system. It uses roles to determine the routing of tasks.
</p>
        <p>
If WF interests you I encurage you to go and grab this sample kit to have a play.
Feel free to post comments in here if you have any questions.... I must get the rest
of our Dunedin team blogging!
</p>
        <p>
 
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=ed50fdfa-b4b8-43af-83a4-b88fe8481471" />
      </body>
      <title>Intergen writes the new Windows Workflow Foundation Web Workflow Approvals Starter Kit</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,ed50fdfa-b4b8-43af-83a4-b88fe8481471.aspx</guid>
      <link>http://www.syringe.net.nz/2007/04/10/IntergenWritesTheNewWindowsWorkflowFoundationWebWorkflowApprovalsStarterKit.aspx</link>
      <pubDate>Tue, 10 Apr 2007 01:51:01 GMT</pubDate>
      <description>&lt;p&gt;
So late last week Microsoft published the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A438A9B9-9F15-42EC-866F-2EA58E10DB36&amp;amp;displaylang=en"&gt;Windows
Workflow Foundation Web Workflow Approvals Starter Kit&lt;/a&gt; or WFWWASK :-)
&lt;/p&gt;
&lt;p&gt;
This is the culmination of a lot of hard work by the Dunedin office of &lt;a href="http://www.intergen.co.nz"&gt;Intergen&lt;/a&gt;&amp;nbsp;who
put together this sample for the .NET 3 team @ Microsoft in Redmond.
&lt;/p&gt;
&lt;p&gt;
It's a great demonstration of how you can use WF to achieve a multiuser task management
and assignment system. It uses roles to determine the routing of tasks.
&lt;/p&gt;
&lt;p&gt;
If WF interests you I encurage you to go and grab this sample kit to have a play.
Feel free to post comments in here if you have any questions.... I must get the rest
of our Dunedin team blogging!
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=ed50fdfa-b4b8-43af-83a4-b88fe8481471" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,ed50fdfa-b4b8-43af-83a4-b88fe8481471.aspx</comments>
      <category>.NET</category>
      <category>Windows Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=b807c843-50c3-4aa2-a79a-109fa069ca48</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,b807c843-50c3-4aa2-a79a-109fa069ca48.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,b807c843-50c3-4aa2-a79a-109fa069ca48.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=b807c843-50c3-4aa2-a79a-109fa069ca48</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Some discussion came up recently on a mailing list I'm on about how <a href="http://www.softinsight.com/bnoyes/PermaLink.aspx?guid=5e4dd2df-2d4b-4f03-a3ce-99c3c7b9202c">difficult
it is to get dataexchange working with WF</a>. Here is my reply
</p>
        <div id="idOWAReplyText33302" dir="ltr">
          <div dir="ltr">
            <font face="Arial" color="#000000" size="2">
              <div id="idOWAReplyText33302" dir="ltr">
                <div dir="ltr">
                  <font face="Arial" color="#000000" size="2">OK.</font>
                </div>
                <div dir="ltr">
                  <font face="Arial" size="2">
                  </font> 
</div>
                <div dir="ltr">
                  <font face="Arial" size="2">I'll stick my sticky beak in here because
I'm guessing that one of the 'samples that use the hardest technique' that you may
have looked at was written by me.</font>
                </div>
                <div dir="ltr">
                  <font face="Arial" size="2">
                  </font> 
</div>
                <div dir="ltr">
                  <font face="Arial" size="2">I'm going to talk about the whole ExternalDataExchange
thing for a bit.</font>
                </div>
                <div dir="ltr">
                  <font face="Arial" size="2">Take a look at that post from Brian for
some detail on what I'm talking about. A key thing to remember with WF is that, more
than any other part of .NET to date, it is aimed squarely at ISVs (and MSFT product
teams who are the same sort of thing).</font>
                </div>
                <div dir="ltr">
                  <font face="Arial" size="2">
                  </font> 
</div>
                <div dir="ltr">
                  <font face="Arial" size="2">Basically the whole external data exchange
mechanism is designed to make it easier to provide services to activites at run time.
It's not the only way to communicate into and out of a workflow, but, if you are doing
asynchronous processing it is the way that you *should* communicate into and out of
the workflow.</font>
                </div>
                <div dir="ltr">
                  <font face="Arial" size="2">
                  </font> 
</div>
                <div dir="ltr">
                  <font face="Arial" size="2">The whole ExternalDataExchange mechanism
has two key benefits.</font>
                </div>
                <div dir="ltr">
                  <font face="Arial" size="2">1. It provides a disconnect between the
abstract activity and the concrete implementation of that activity. If you take a
look at my whit paper on MSDN you'll see we have the abstract SendEmail activity and
three concrete implementations that send mail via SmtpService, Exchange WebDav and
Outlook. By implementing these three as different services we can create a mechanism
by which the administrator can chose how they want the SendEmal activity to be serviced
at runtime- the appropriate implementation of ISendEMail can be bound in by a 'simple'
configuration file setting. This benefit probably falls into the architecturally useful
basket.</font>
                </div>
                <div dir="ltr">
                  <font face="Arial" size="2">
                  </font> 
</div>
                <div dir="ltr">
                  <font face="Arial" size="2">2. It provides reliable async messaging
into and out of the workflow. When you implement the data exchange pattern your messages
out of the workflow (method calls) and more importantly messages into the workflow
(events) are proxied through a queing mechanism. It is very important that this happens
and let me tell you right now, using the data exchange services is a BUNDLE easier
than trying to do all the queuing stuff by hand. The reason it is important is that
it allows workflows to be serialized out to disc and then deserliaized on receipt
of a message. i.e. if we didn't queue the messages we'd have to dispatch the event
into thin air or block the call while we retrieved the workflow back off disk into
memory. This benefit falls into either the pretty much essential basket.</font>
                </div>
                <font face="Arial" size="2">
                </font>
              </div>
              <div dir="ltr"> 
</div>
              <div dir="ltr">Now then. Brian has indicated that he thinks that doing the DataExchange
stuff is a bit difficult. I encourage you all to read my white paper.
</div>
              <div dir="ltr">
                <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnlong/html/HmnWkFwWF.asp">
                  <font color="#800080">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnlong/html/HmnWkFwWF.asp</font>
                </a>
              </div>
              <div dir="ltr">It shows how to use some command line tools that let you go straight
from nicely written interface to strongly typed activities very easily.
</div>
              <div dir="ltr"> 
</div>
              <div dir="ltr">If any of you are in Malaysia for SEA techEd this coming week I'll
be presenting an ILL on this on Thursday I think.
</div>
              <div dir="ltr"> 
</div>
              <div dir="ltr"> 
</div>
            </font>
          </div>
        </div>
        <img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=b807c843-50c3-4aa2-a79a-109fa069ca48" />
      </body>
      <title>DataExchange in Windows Workflow</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,b807c843-50c3-4aa2-a79a-109fa069ca48.aspx</guid>
      <link>http://www.syringe.net.nz/2006/09/03/DataExchangeInWindowsWorkflow.aspx</link>
      <pubDate>Sun, 03 Sep 2006 00:30:41 GMT</pubDate>
      <description>&lt;p&gt;
Some discussion came up recently on a mailing list I'm on about how &lt;a href="http://www.softinsight.com/bnoyes/PermaLink.aspx?guid=5e4dd2df-2d4b-4f03-a3ce-99c3c7b9202c"&gt;difficult
it is to get dataexchange working with WF&lt;/a&gt;. Here is my reply
&lt;/p&gt;
&lt;div id=idOWAReplyText33302 dir=ltr&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial color=#000000 size=2&gt; 
&lt;div id=idOWAReplyText33302 dir=ltr&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial color=#000000 size=2&gt;OK.&lt;/font&gt;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;I'll stick my sticky beak in here because I'm
guessing that one of the 'samples that use the hardest technique' that you may have
looked at was written by me.&lt;/font&gt;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;I'm going to talk about the whole ExternalDataExchange
thing for a bit.&lt;/font&gt;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;Take a look at that post from Brian for some
detail on what I'm talking about. A key thing to remember with WF is that, more than
any other part of .NET to date, it is aimed squarely at ISVs (and MSFT product teams
who are the same sort of thing).&lt;/font&gt;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;Basically the whole external data exchange mechanism
is designed to make it easier to provide services to activites at run time. It's not
the only way to communicate into and out of a workflow, but, if you are doing asynchronous
processing it is the way that you *should* communicate into and out of the workflow.&lt;/font&gt;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;The whole ExternalDataExchange mechanism has
two key benefits.&lt;/font&gt;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;1. It provides a disconnect between the abstract
activity and the concrete implementation of that activity. If you take a look at my
whit paper on MSDN you'll see we have the abstract SendEmail activity and three concrete
implementations that send mail via SmtpService, Exchange WebDav and Outlook. By implementing
these three as different services we can create a mechanism by which the administrator
can chose how they want the SendEmal activity to be serviced at runtime- the appropriate
implementation of ISendEMail can be bound in by a 'simple' configuration file setting.
This benefit probably falls into the architecturally useful basket.&lt;/font&gt;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font face=Arial size=2&gt;2. It provides reliable async messaging into
and out of the workflow. When you implement the data exchange pattern your messages
out of the workflow (method calls) and more importantly messages into the workflow
(events) are proxied through a queing mechanism. It is very important that this happens
and let me tell you right now, using the data exchange services is a BUNDLE easier
than trying to do all the queuing stuff by hand. The reason it is important is that
it allows workflows to be serialized out to disc and then deserliaized on receipt
of a message. i.e. if we didn't queue the messages we'd have to dispatch the event
into thin air or block the call while we retrieved the workflow back off disk into
memory. This benefit falls into either the pretty much essential basket.&lt;/font&gt;
&lt;/div&gt;
&lt;font face=Arial size=2&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div dir=ltr&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div dir=ltr&gt;Now then. Brian has indicated that he thinks that doing the DataExchange
stuff is a bit difficult. I encourage you all to read my white paper.
&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnlong/html/HmnWkFwWF.asp"&gt;&lt;font color=#800080&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnlong/html/HmnWkFwWF.asp&lt;/font&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div dir=ltr&gt;It shows how to use some command line tools that let you go straight
from nicely written interface to strongly typed activities very easily.
&lt;/div&gt;
&lt;div dir=ltr&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div dir=ltr&gt;If any of you are in Malaysia for SEA techEd this coming week I'll be
presenting an ILL on this on Thursday I think.
&lt;/div&gt;
&lt;div dir=ltr&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div dir=ltr&gt;&amp;nbsp;
&lt;/div&gt;
&lt;/font&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=b807c843-50c3-4aa2-a79a-109fa069ca48" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,b807c843-50c3-4aa2-a79a-109fa069ca48.aspx</comments>
      <category>.NET</category>
      <category>Windows Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=0abee70d-d5b0-4017-8686-0327ef7238b8</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,0abee70d-d5b0-4017-8686-0327ef7238b8.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,0abee70d-d5b0-4017-8686-0327ef7238b8.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=0abee70d-d5b0-4017-8686-0327ef7238b8</wfw:commentRss>
      <slash:comments>60</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Windows Workflow can be a bit of a pain to debug some days. In particular there are
often scenarios where an exception gets swallowed somehwere in the runtime and you
go off and spend 20 hours barking up the wrong tree.
</p>
        <p>
Someone had one of these issues using some of the sample code from one of my MSDN
articles today.
</p>
        <p>
          <a href="http://forums.microsoft.com/MSDN/AddPost.aspx?PostID=575571&amp;SiteID=1&amp;ReturnUrl">http://forums.microsoft.com/MSDN/AddPost.aspx?PostID=575571&amp;SiteID=1&amp;ReturnUrl</a>=
</p>
        <p>
A hot tip is to turn on some of the debug tracing in the runtime- easy to do. Just
bigg the following into your config file.
</p>
        <p>
&lt;system.diagnostics&gt;<br />
    &lt;switches&gt;<br />
      &lt;add name="WorkflowTraceToDefault" value="1" /&gt;<br />
      &lt;add name="Host" value="All" /&gt;<br />
      &lt;add name="Runtime" value="All" /&gt;      
<br />
      &lt;add name="Activity" value="All" /&gt;<br />
    &lt;/switches&gt;<br />
  &lt;/system.diagnostics&gt;
</p>
        <img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=0abee70d-d5b0-4017-8686-0327ef7238b8" />
      </body>
      <title>Debugging Windows Workflow Foundation</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,0abee70d-d5b0-4017-8686-0327ef7238b8.aspx</guid>
      <link>http://www.syringe.net.nz/2006/07/24/DebuggingWindowsWorkflowFoundation.aspx</link>
      <pubDate>Mon, 24 Jul 2006 02:38:12 GMT</pubDate>
      <description>&lt;p&gt;
Windows Workflow can be a bit of a pain to debug some days. In particular there are
often scenarios where an exception gets swallowed somehwere in the runtime and you
go off and spend 20 hours barking up the wrong tree.
&lt;/p&gt;
&lt;p&gt;
Someone had one of these issues using some of the sample code from one of my MSDN
articles today.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://forums.microsoft.com/MSDN/AddPost.aspx?PostID=575571&amp;amp;SiteID=1&amp;amp;ReturnUrl"&gt;http://forums.microsoft.com/MSDN/AddPost.aspx?PostID=575571&amp;amp;SiteID=1&amp;amp;ReturnUrl&lt;/a&gt;=
&lt;/p&gt;
&lt;p&gt;
A hot tip is to turn on some of the debug tracing in the runtime- easy to do. Just
bigg the following into your config file.
&lt;/p&gt;
&lt;p&gt;
&amp;lt;system.diagnostics&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;switches&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="WorkflowTraceToDefault" value="1" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Host" value="All" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Runtime" value="All" /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Activity" value="All" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/switches&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;/system.diagnostics&amp;gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=0abee70d-d5b0-4017-8686-0327ef7238b8" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,0abee70d-d5b0-4017-8686-0327ef7238b8.aspx</comments>
      <category>.NET</category>
      <category>Windows Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=885c25e5-ba63-40b0-a569-e4f25cc208b7</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,885c25e5-ba63-40b0-a569-e4f25cc208b7.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,885c25e5-ba63-40b0-a569-e4f25cc208b7.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=885c25e5-ba63-40b0-a569-e4f25cc208b7</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We've done quite a bit of Workflow stuff for Microsoft recently.
</p>
        <p>
This morning two bits of stuff that we've worked on are featured on the front page
of 
<br />
MSDN.
</p>
        <p>
There's a <a href="http://go.microsoft.com/?linkid=4267495">Virtual Lab</a>- which
is basically some hands on labs that we've been working on running in a Virtual Machine
and also my article on <a href="http://msdn.microsoft.com/windowsvista/default.aspx?pull=/library/en-us/dnlong/html/hmnwkfwwf.asp">Simple
Human Workflow</a>.
</p>
        <p>
Neath huh!?!
</p>
        <p>
 
</p>
        <img src="/content/binary/frontpage.png" border="0" />
        <img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=885c25e5-ba63-40b0-a569-e4f25cc208b7" />
      </body>
      <title>W00t! Front Page of MSDN</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,885c25e5-ba63-40b0-a569-e4f25cc208b7.aspx</guid>
      <link>http://www.syringe.net.nz/2006/06/06/W00tFrontPageOfMSDN.aspx</link>
      <pubDate>Tue, 06 Jun 2006 17:21:33 GMT</pubDate>
      <description>&lt;p&gt;
We've done quite a bit of Workflow stuff for Microsoft recently.
&lt;/p&gt;
&lt;p&gt;
This morning two bits of stuff that we've worked on are featured on the front page
of 
&lt;br&gt;
MSDN.
&lt;/p&gt;
&lt;p&gt;
There's a &lt;a href="http://go.microsoft.com/?linkid=4267495"&gt;Virtual Lab&lt;/a&gt;- which
is basically some hands on labs that we've been working on running in a Virtual Machine
and also my article on &lt;a href="http://msdn.microsoft.com/windowsvista/default.aspx?pull=/library/en-us/dnlong/html/hmnwkfwwf.asp"&gt;Simple
Human Workflow&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Neath huh!?!
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img src="/content/binary/frontpage.png" border=0&gt;&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=885c25e5-ba63-40b0-a569-e4f25cc208b7" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,885c25e5-ba63-40b0-a569-e4f25cc208b7.aspx</comments>
      <category>.NET</category>
      <category>Windows Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=c6bf1016-fb7b-4ab6-ba04-8aa86bdae791</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,c6bf1016-fb7b-4ab6-ba04-8aa86bdae791.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,c6bf1016-fb7b-4ab6-ba04-8aa86bdae791.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=c6bf1016-fb7b-4ab6-ba04-8aa86bdae791</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Windows Communication Foundation and Windows Workflow Foundation now have Go Live
licenses.
</p>
        <p>
Beta 2 of WF was released to the public today and it's got some great changes.
</p>
        <p>
Make sure that you head to <a href="http://www.windowsworkflow.net/Default.aspx?tabindex=0&amp;tabid=1">http://www.windowsworkflow.net/</a> to
pick it up.
</p>
        <p>
Make sure that you also grab the Hands on Labs from here:
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=5DF74E3B-FB51-4A94-A11D-DFF70288A8BB&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=5DF74E3B-FB51-4A94-A11D-DFF70288A8BB&amp;displaylang=en</a>
        </p>
        <p>
These give worked examples of almost all the key functionality in Windows Workflow
Foundation. The team @ Kognition have spent the last month or so re-working and re-building
these labs for Beta2.
</p>
        <p>
My favourite of the labs is #10. We provide a fully worked example showing how to
</p>
        <p>
1. Host the WF Designer in your own application<br />
2. Set properties on your workflow activites at design time- including showing you
how easy it is to do activity binding in your own designer.<br />
3. Save and compile the workflows<br />
4. Run the workflow
</p>
        <img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=c6bf1016-fb7b-4ab6-ba04-8aa86bdae791" />
      </body>
      <title>Are YOu Ready To Go-Live?</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,c6bf1016-fb7b-4ab6-ba04-8aa86bdae791.aspx</guid>
      <link>http://www.syringe.net.nz/2006/01/18/AreYOuReadyToGoLive.aspx</link>
      <pubDate>Wed, 18 Jan 2006 20:20:22 GMT</pubDate>
      <description>&lt;p&gt;
Windows Communication Foundation and Windows Workflow Foundation now have Go Live
licenses.
&lt;/p&gt;
&lt;p&gt;
Beta 2 of WF was released to the public today and it's got some great changes.
&lt;/p&gt;
&lt;p&gt;
Make sure that you head to &lt;a href="http://www.windowsworkflow.net/Default.aspx?tabindex=0&amp;amp;tabid=1"&gt;http://www.windowsworkflow.net/&lt;/a&gt;&amp;nbsp;to
pick it up.
&lt;/p&gt;
&lt;p&gt;
Make sure that you also grab the Hands on Labs from here:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=5DF74E3B-FB51-4A94-A11D-DFF70288A8BB&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=5DF74E3B-FB51-4A94-A11D-DFF70288A8BB&amp;amp;displaylang=en&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
These give worked examples of almost all the key functionality in Windows Workflow
Foundation. The team @ Kognition have spent the last month or so re-working and re-building
these labs for Beta2.
&lt;/p&gt;
&lt;p&gt;
My favourite of the labs is #10. We provide a fully worked example showing how to
&lt;/p&gt;
&lt;p&gt;
1. Host the WF Designer in your own application&lt;br&gt;
2. Set properties on your workflow activites at design time- including showing you
how easy it is to do activity binding in your own designer.&lt;br&gt;
3. Save and&amp;nbsp;compile the workflows&lt;br&gt;
4. Run the workflow
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=c6bf1016-fb7b-4ab6-ba04-8aa86bdae791" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,c6bf1016-fb7b-4ab6-ba04-8aa86bdae791.aspx</comments>
      <category>.NET</category>
      <category>Windows Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=8c6606bf-6d61-4417-b990-9d04e9d1a551</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,8c6606bf-6d61-4417-b990-9d04e9d1a551.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,8c6606bf-6d61-4417-b990-9d04e9d1a551.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=8c6606bf-6d61-4417-b990-9d04e9d1a551</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So the WWF tools for VS.NET 2005 have some 'issues' that can rear their head as strange
build errors.
</p>
        <p>
The symptom is that your solution, which has no syntax errors at all, sometimes fails
to build and just spouts random bollocks.
</p>
        <p>
What seems to be happening is some wierd caching of types by the designer- reason
being is that the designer has to build your custom activities at design time so that
you get a nice design experience.
</p>
        <p>
So here are a few tips if you are seeing wierd build errors.
</p>
        <p>
#1. If you are closing VS.NET and/or your solution, make sure that all designer and
code documents are closed.
</p>
        <p>
#2. If it's behaving strangely have a crack and building some of the key projects
(communication service interfaces, services and activities) individually.
</p>
        <p>
3#. If none of that works, close all your documents, close VS.NET, reopen and rebuild
the solution as soon as you re-open.
</p>
        <img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=8c6606bf-6d61-4417-b990-9d04e9d1a551" />
      </body>
      <title>Tips For Resolving WWF Build Errors - Beta 1</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,8c6606bf-6d61-4417-b990-9d04e9d1a551.aspx</guid>
      <link>http://www.syringe.net.nz/2005/10/17/TipsForResolvingWWFBuildErrorsBeta1.aspx</link>
      <pubDate>Mon, 17 Oct 2005 19:57:46 GMT</pubDate>
      <description>&lt;p&gt;
So the WWF tools for VS.NET 2005 have some 'issues' that can rear their head as strange
build errors.
&lt;/p&gt;
&lt;p&gt;
The symptom is that your solution, which has no syntax errors at all, sometimes fails
to build and just spouts random bollocks.
&lt;/p&gt;
&lt;p&gt;
What seems to be happening is some wierd caching of types by the designer- reason
being is that the designer has to build your custom activities at design time so that
you get a nice design experience.
&lt;/p&gt;
&lt;p&gt;
So here are a few tips if you are seeing wierd build errors.
&lt;/p&gt;
&lt;p&gt;
#1. If you are closing VS.NET and/or your solution, make sure that all designer and
code&amp;nbsp;documents are closed.
&lt;/p&gt;
&lt;p&gt;
#2. If it's behaving strangely have a crack and building some of the key projects
(communication service interfaces, services and activities) individually.
&lt;/p&gt;
&lt;p&gt;
3#. If none of that works, close all your documents, close VS.NET, reopen and rebuild
the solution as soon as you re-open.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=8c6606bf-6d61-4417-b990-9d04e9d1a551" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,8c6606bf-6d61-4417-b990-9d04e9d1a551.aspx</comments>
      <category>.NET</category>
      <category>Windows Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=b0170ed3-f224-490b-b746-64ee8f397e2e</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,b0170ed3-f224-490b-b746-64ee8f397e2e.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,b0170ed3-f224-490b-b746-64ee8f397e2e.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=b0170ed3-f224-490b-b746-64ee8f397e2e</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
THey have just shown the WWF designer pulled up into IE to dynamically edit the Indigo
workflow they've just built...... and you can also edit currently running workflows.
</p>
        <p>
This is just SOOOOO cool....
</p>
        <p>
Imagine how good this could be for mobile routing solutions.... you can login 1/2
way through the transaction and reconfigure a running workflow to handle and exception
case.
</p>
        <p>
This is probably the coolest WWF demo that I've seen so far.
</p>
        <p>
THey showed a workflow hanging on a delay activity and they dropped in some new activities
after it stright from the web browser.
</p>
        <img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=b0170ed3-f224-490b-b746-64ee8f397e2e" />
      </body>
      <title>Holy Shitballs...... WWF Designer Hosted In IE</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,b0170ed3-f224-490b-b746-64ee8f397e2e.aspx</guid>
      <link>http://www.syringe.net.nz/2005/09/15/HolyShitballsWWFDesignerHostedInIE.aspx</link>
      <pubDate>Thu, 15 Sep 2005 23:45:40 GMT</pubDate>
      <description>&lt;p&gt;
THey have just shown the WWF designer pulled up into IE to dynamically edit the Indigo
workflow they've just built...... and you can also edit currently running workflows.
&lt;/p&gt;
&lt;p&gt;
This is just SOOOOO cool....
&lt;/p&gt;
&lt;p&gt;
Imagine how good this could be for mobile routing solutions.... you can login 1/2
way through the transaction and reconfigure a running workflow to handle and exception
case.
&lt;/p&gt;
&lt;p&gt;
This is probably the coolest WWF demo that I've seen so far.
&lt;/p&gt;
&lt;p&gt;
THey showed a workflow hanging on a delay activity and they dropped in some new activities
after it stright from the web browser.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=b0170ed3-f224-490b-b746-64ee8f397e2e" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,b0170ed3-f224-490b-b746-64ee8f397e2e.aspx</comments>
      <category>.NET</category>
      <category>Windows Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=aba8e471-58ef-4606-9f34-b57e73c6ea9b</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,aba8e471-58ef-4606-9f34-b57e73c6ea9b.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,aba8e471-58ef-4606-9f34-b57e73c6ea9b.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=aba8e471-58ef-4606-9f34-b57e73c6ea9b</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sitting in a Don Box session at the moment looking at some future stuff for how WWF
and WCF will talk together.
</p>
        <p>
Very cool concepts- theability to simply have a workflow be an Indigo service
but they really tightly integrated the two.... which is great.
</p>
        <p>
For example if you have a correlated receive and send pair or activities in your workflow
when exported as an Indigo service they will be matched up as a Send/Receive pair.....
This also means that we can model contracts more richly than just single pairs- we
can model contracts as conversations- i.e. we know the order in which our workflow
expects to recieve messages.
</p>
        <p>
Looks great. One thing that I'm interested in is just how much hosting support they're
going to give us for Indigo Workflows. I'm pretty sure that IIS is going to be an
out of the box supported hosting mechanism (hosting session is next).... will be interesting
to see what sort of higher end support services we get OOB... things like persistence
services and so forth to enable long running work flows.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=aba8e471-58ef-4606-9f34-b57e73c6ea9b" />
      </body>
      <title>Workflow and Indigo</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,aba8e471-58ef-4606-9f34-b57e73c6ea9b.aspx</guid>
      <link>http://www.syringe.net.nz/2005/09/15/WorkflowAndIndigo.aspx</link>
      <pubDate>Thu, 15 Sep 2005 23:38:15 GMT</pubDate>
      <description>&lt;p&gt;
Sitting in a Don Box session at the moment looking at some future stuff for how WWF
and WCF will talk together.
&lt;/p&gt;
&lt;p&gt;
Very cool concepts- theability to simply have&amp;nbsp;a workflow be an Indigo service
but they really tightly integrated the two.... which is great.
&lt;/p&gt;
&lt;p&gt;
For example if you have a correlated receive and send pair or activities in your workflow
when exported as an Indigo service they will be matched up as a Send/Receive pair.....
This also means that we can model contracts more richly than just single pairs- we
can model contracts as conversations- i.e. we know the order in which our workflow
expects to recieve messages.
&lt;/p&gt;
&lt;p&gt;
Looks great. One thing that I'm interested in is just how much hosting support they're
going to give us for Indigo Workflows. I'm pretty sure that IIS is going to be an
out of the box supported hosting mechanism (hosting session is next).... will be interesting
to see what sort of higher end support services we get OOB... things like persistence
services and so forth to enable long running work flows.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=aba8e471-58ef-4606-9f34-b57e73c6ea9b" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,aba8e471-58ef-4606-9f34-b57e73c6ea9b.aspx</comments>
      <category>.NET</category>
      <category>Windows Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=39b8afa1-a0a4-40bb-b27f-073bbba4c309</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,39b8afa1-a0a4-40bb-b27f-073bbba4c309.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,39b8afa1-a0a4-40bb-b27f-073bbba4c309.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=39b8afa1-a0a4-40bb-b27f-073bbba4c309</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the fundamental things you'll need to get your head around when you start playing
with workflows is how to go about getting stuff out of, but more importantly into
your executing workflow. Here's my 30 second synopsis......
</p>
        <p>
1. Your workflow runs inside a runtime engine.<br />
2. All of your communications from the outside world will come to you via services
provided by your host. In addition, in many cases your communications with the outside
world will be sent by way of services provided by your host.
</p>
        <p>
This is basically the provider pattern in action and it's an important concept to
grasp... here's an example of why.
</p>
        <p>
Say you build a workflow that manages registrations for your user group events via
email. The logic is obviously going to be pretty simple, receive registration emails,
send confirmations etc.... Your workflow declarativly defines the logic of what should
happen in the sequence. Your workflow contains EventSink activities e.g. ReceiveEmail
that allow your eworkflow to receive inbound mail. Try, as much as you can, to think
of these EventSink activities in their abstract form. That is, your activity represents
a mechanism by which your workflow receives an email but, as far as is possible, doesn't
mandate or specify too much concrete implementation as to how that is delivered. The
actual mechanics of how it does this will often depend on where your workflow might
be running- e.g. You would probably receive the email in a different way depending
on whether you are running your workflow in Outlook or on a server hosted in IIS.
If we want to be able to use exactly the same Workflow definition, with exactly the
same Activities then we need some sort of indirection mechanism to seperate the logical
concept of ReceiveEmail with the actual concrete implementation of how we do it.
</p>
        <p>
So let me give you an example. You have an activity that represents receiving an email.
This is an abstract concept. You then create a workflow definition (in code or XOML/XAML)
that uses this activity. You then host this workflow in a couple of different hosts.
When you set up each of the hosts you can construct a different service type to service
you ReceiveEmail activity depending on where you are running the host. When it is
running, your activity is going to ask the runtime to provide it with a service that
implements a certain known .NET Interface type. Thus you could have two different
services that use two different email receipt mechanism, one for a desktop host and
one for a server host. Through this mechanism you achieve the indirection that enables
us to use the same delcarative business logic definition (the workflow) in a number
of differnt contexts which may have markedly different requirements.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=39b8afa1-a0a4-40bb-b27f-073bbba4c309" />
      </body>
      <title>WWF Hosts, Services and Event Driven Activities</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,39b8afa1-a0a4-40bb-b27f-073bbba4c309.aspx</guid>
      <link>http://www.syringe.net.nz/2005/09/14/WWFHostsServicesAndEventDrivenActivities.aspx</link>
      <pubDate>Wed, 14 Sep 2005 20:33:02 GMT</pubDate>
      <description>&lt;p&gt;
One of the fundamental things you'll need to get your head around when you start playing
with workflows is how to go about getting stuff out of, but more importantly into
your executing workflow. Here's my 30 second synopsis......
&lt;/p&gt;
&lt;p&gt;
1. Your workflow runs inside a runtime engine.&lt;br&gt;
2. All of your communications from the outside world will come to you via services
provided by your host. In addition, in many cases your communications with the outside
world will be sent by way of services provided by your host.
&lt;/p&gt;
&lt;p&gt;
This is basically the provider pattern in action and it's an important concept to
grasp... here's an example of why.
&lt;/p&gt;
&lt;p&gt;
Say you build a workflow that manages registrations for your user group events via
email. The logic is obviously going to be pretty simple, receive registration emails,
send confirmations etc.... Your workflow declarativly defines the logic of what should
happen in the sequence. Your workflow contains EventSink activities e.g. ReceiveEmail
that allow your eworkflow to receive inbound mail. Try, as much as you can, to think
of these EventSink activities in their abstract form. That is, your activity represents
a mechanism by which your workflow receives an email but, as far as is possible, doesn't
mandate or specify too much concrete implementation as to how that is delivered. The
actual mechanics of how it does this will often depend on where your workflow might
be running- e.g. You would probably receive the email in a different way depending
on whether you are running your workflow in Outlook or on a server hosted in IIS.
If we want to be able to use exactly the same Workflow definition, with exactly the
same Activities then we need some sort of indirection mechanism to seperate the logical
concept of ReceiveEmail with the actual concrete implementation of how we do it.
&lt;/p&gt;
&lt;p&gt;
So let me give you an example. You have an activity that represents receiving an email.
This is an abstract concept. You then create a workflow definition (in code or XOML/XAML)
that uses this activity. You then host this workflow in a couple of different hosts.
When you set up each of the hosts you can construct a different service type to service
you ReceiveEmail activity depending on where you are running the host. When it is
running, your activity is going to ask the runtime to provide it with a service that
implements a certain known .NET Interface type. Thus you could have two different
services that use two different email receipt mechanism, one for a desktop host and
one for a server host. Through this mechanism you achieve the indirection that enables
us to use the same delcarative business logic definition (the workflow) in a number
of differnt contexts which may have markedly different requirements.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=39b8afa1-a0a4-40bb-b27f-073bbba4c309" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,39b8afa1-a0a4-40bb-b27f-073bbba4c309.aspx</comments>
      <category>Windows Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.syringe.net.nz/Trackback.aspx?guid=ea09412e-542b-4ef8-9a38-1c669ec904c8</trackback:ping>
      <pingback:server>http://www.syringe.net.nz/pingback.aspx</pingback:server>
      <pingback:target>http://www.syringe.net.nz/PermaLink,guid,ea09412e-542b-4ef8-9a38-1c669ec904c8.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.syringe.net.nz/CommentView,guid,ea09412e-542b-4ef8-9a38-1c669ec904c8.aspx</wfw:comment>
      <wfw:commentRss>http://www.syringe.net.nz/SyndicationService.asmx/GetEntryCommentsRss?guid=ea09412e-542b-4ef8-9a38-1c669ec904c8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
All About WWF<br />
SO Windows Workflow Foundation shipped today. We've been kicking it around for a bit
now.
</p>
        <p>
WWF is going to be the worflow engine for windows. It basically allows you to declarativly
stitch together application logic into worflows. Not only does it support your typical
'Biztalk style' sequential workflow types but it also allows you to build state machine
type workflows. You can either write them in code or.... wait for it..... you can
declare them in XAML (though it's called XOML in the current drop). What this means
is you could potentially stictch together a whole application out of components in
just XML. Avalon would form the UI and WWF could be used to provide a state based
execution engine. Slap a nice GUI UI around it and you've got a high productivity
app builder that any old BA can use.
</p>
        <p>
I'm going to post a bit over the next few days about some of the things that I've
learnt around WWF thus far and some of the cool ideas that I've got for WWF.
</p>
        <p>
I'll post some screen shots tonight once I'm back on my dev machine.
</p>
        <img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=ea09412e-542b-4ef8-9a38-1c669ec904c8" />
      </body>
      <title>All ABout WWF- No not the wrestling stupid!</title>
      <guid isPermaLink="false">http://www.syringe.net.nz/PermaLink,guid,ea09412e-542b-4ef8-9a38-1c669ec904c8.aspx</guid>
      <link>http://www.syringe.net.nz/2005/09/14/AllABoutWWFNoNotTheWrestlingStupid.aspx</link>
      <pubDate>Wed, 14 Sep 2005 20:28:38 GMT</pubDate>
      <description>&lt;p&gt;
All About WWF&lt;br&gt;
SO Windows Workflow Foundation shipped today. We've been kicking it around for a bit
now.
&lt;/p&gt;
&lt;p&gt;
WWF is going to be the worflow engine for windows. It basically allows you to declarativly
stitch together application logic into worflows. Not only does it support your typical
'Biztalk style' sequential workflow types but it also allows you to build state machine
type workflows. You can either write them in code or.... wait for it..... you can
declare them in XAML (though it's called XOML in the current drop). What this means
is you could potentially stictch together a whole application out of components in
just XML. Avalon would form the UI and WWF could be used to provide a state based
execution engine. Slap a nice GUI UI around it and you've got a high productivity
app builder that any old BA can use.
&lt;/p&gt;
&lt;p&gt;
I'm going to post a bit over the next few days about some of the things that I've
learnt around WWF thus far and some of the cool ideas that I've got for WWF.
&lt;/p&gt;
&lt;p&gt;
I'll post some screen shots tonight once I'm back on my dev machine.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.syringe.net.nz/aggbug.ashx?id=ea09412e-542b-4ef8-9a38-1c669ec904c8" /&gt;</description>
      <comments>http://www.syringe.net.nz/CommentView,guid,ea09412e-542b-4ef8-9a38-1c669ec904c8.aspx</comments>
      <category>.NET</category>
      <category>Windows Workflow</category>
    </item>
  </channel>
</rss>