<?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>Pablo C. García - Workflow related blog</title><link>http://blogs.msdn.com/b/pcgarcia/</link><description>Este Blog está dedicado a temas de arquitectura de software relacionados con Workflow</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Nuevo capítulo publicado</title><link>http://blogs.msdn.com/b/pcgarcia/archive/2008/04/24/nuevo-cap-tulo-publicado.aspx</link><pubDate>Thu, 24 Apr 2008 17:23:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8421724</guid><dc:creator>pcgarcia</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pcgarcia/rsscomments.aspx?WeblogPostID=8421724</wfw:commentRss><comments>http://blogs.msdn.com/b/pcgarcia/archive/2008/04/24/nuevo-cap-tulo-publicado.aspx#comments</comments><description>&lt;p&gt;He publicado un nuevo cap&amp;#237;tulo sobre tecnolog&amp;#237;a de workflow, &amp;quot;as usual&amp;quot;, como un p&amp;#225;gina separada, para no afectar el contenido del blog. El cap&amp;#237;tulo est&amp;#225; publicado aqu&amp;#237;: &lt;a href="http://blogs.msdn.com/pcgarcia/pages/capitulo-iii-el-organigrama.aspx"&gt;Cap&amp;#237;tulo III - Organigrama&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Los cap&amp;#237;tulos anteriores son:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/pcgarcia/pages/cap-tulo-2-requerimientos-funcionales-de-un-workfow-management-system.aspx"&gt;Cap&amp;#237;tulo II - Requerimientos Funcionales de un WMS&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/pcgarcia/pages/capitulo-1-conceptos-de-workflow.aspx"&gt;Cap&amp;#237;tulo 1 - Conceptos de workflow&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8421724" width="1" height="1"&gt;</description></item><item><title>Arquitectura de aplicaciones empresariales sobre plataforma .net</title><link>http://blogs.msdn.com/b/pcgarcia/archive/2008/03/28/arquitectura-de-aplicaciones-empresariales-sobre-plataforma-net.aspx</link><pubDate>Fri, 28 Mar 2008 14:29:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8341483</guid><dc:creator>pcgarcia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pcgarcia/rsscomments.aspx?WeblogPostID=8341483</wfw:commentRss><comments>http://blogs.msdn.com/b/pcgarcia/archive/2008/03/28/arquitectura-de-aplicaciones-empresariales-sobre-plataforma-net.aspx#comments</comments><description>&lt;p&gt;Los materiales de estudio y las presentaciones de las clases se encuentran publicados &lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/browse.aspx/Cursos/ARq.net%20ORT?view=details"&gt;aquí&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Los otros cursos, clases o charlas dictados en otras universidades se encuentran publicados &lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/browse.aspx/Cursos"&gt;aquí&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8341483" width="1" height="1"&gt;</description></item><item><title>Capítulo II – Requerimientos Funcionales.</title><link>http://blogs.msdn.com/b/pcgarcia/archive/2008/03/22/cap-tulo-ii-requerimientos-funcionales.aspx</link><pubDate>Sat, 22 Mar 2008 18:04:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8331208</guid><dc:creator>pcgarcia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pcgarcia/rsscomments.aspx?WeblogPostID=8331208</wfw:commentRss><comments>http://blogs.msdn.com/b/pcgarcia/archive/2008/03/22/cap-tulo-ii-requerimientos-funcionales.aspx#comments</comments><description>&lt;p&gt;He publicado en este blog un nuevo cap&amp;#237;tulo sobre tecnolog&amp;#237;a de workflow, pero debido al tama&amp;#241;o del mismo, lo he publicado como un p&amp;#225;gina separada, para no afectar el contenido del blog. Encontrar&amp;#225; el cap&amp;#237;tulo aqu&amp;#237;: &lt;a href="http://blogs.msdn.com/pcgarcia/pages/cap-tulo-2-requerimientos-funcionales-de-un-workfow-management-system.aspx"&gt;Cap&amp;#237;tulo II - Requerimientos Funcionales de un WMS&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/pcgarcia/pages/capitulo-1-conceptos-de-workflow.aspx"&gt;Cap&amp;#237;tulo 1 - Conceptos de workflow&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8331208" width="1" height="1"&gt;</description></item><item><title>Workshop de Visual Studio 2008, SQL 2008 e IIS7</title><link>http://blogs.msdn.com/b/pcgarcia/archive/2008/03/17/workshop-de-visual-studio-2008-sql-2008-e-iis7.aspx</link><pubDate>Mon, 17 Mar 2008 02:35:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8274527</guid><dc:creator>pcgarcia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pcgarcia/rsscomments.aspx?WeblogPostID=8274527</wfw:commentRss><comments>http://blogs.msdn.com/b/pcgarcia/archive/2008/03/17/workshop-de-visual-studio-2008-sql-2008-e-iis7.aspx#comments</comments><description>&lt;p&gt;Hace pocos d&amp;#237;as, junto a Ignacio Cattivelli, dictamos un Workshop de actualizaci&amp;#243;n para desarrolladores sobre la nueva versi&amp;#243;n de la plataforma de aplicaciones .net, compuesta por SQL Server 2008, Visual Studio 2008 e Internet Information Server 2008. &lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/browse.aspx/Workshops/VStudio2008SQL2008IIS7"&gt;En este link encontrar&amp;#225;n las PPTs del Workshop.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8274527" width="1" height="1"&gt;</description></item><item><title>Compartiendo Presentaciones</title><link>http://blogs.msdn.com/b/pcgarcia/archive/2007/10/14/compartiendo-presentaciones.aspx</link><pubDate>Sun, 14 Oct 2007 18:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5451411</guid><dc:creator>pcgarcia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pcgarcia/rsscomments.aspx?WeblogPostID=5451411</wfw:commentRss><comments>http://blogs.msdn.com/b/pcgarcia/archive/2007/10/14/compartiendo-presentaciones.aspx#comments</comments><description>&lt;p&gt;SkyDrive nos presenta una forma única de compartir contenidos con el nivel adecuado de disponibilidad y confidencialidad. Usando estas caraterísticas de SkyDrive, he publicado las presentaciones realizadas en eventos abiertos a la comunidad, así como las presentaciones que oradores invitados han realizado en los eventos que organizamos en Microsoft Uruguay. &lt;/p&gt;  &lt;p&gt;Muchas de las presentaciones se encuentran en formato PPTX, por lo cual si Ud dispone de una versión anterior de Office, puede agregarle a la misma la capacidad de abrir y guardar en este nuevo formato de documentos bajando el siguiente agregado: &lt;span style="font-family: &amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;; color: #1f497d; font-size: 11pt; mso-ansi-language: es" lang="ES"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=941B3470-3AE9-4AEE-8F43-C6BB74CD1466&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=941B3470-3AE9-4AEE-8F43-C6BB74CD1466&amp;amp;displaylang=en"&gt;&lt;font color="#0000ff"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=941B3470-3AE9-4AEE-8F43-C6BB74CD1466&amp;amp;displaylang=en&lt;/font&gt;&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Todas las presentaciones están disponibles en esta carpeta de acceso público en mi SkyDrive: &lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/browse.aspx/PPTs%20de%20Presentaciones" mce_href="http://cid-ab9876f1cda024c9.skydrive.live.com/browse.aspx/PPTs%20de%20Presentaciones"&gt;http://cid-ab9876f1cda024c9.skydrive.live.com/browse.aspx/PPTs%20de%20Presentaciones&lt;/a&gt;&lt;/p&gt;  &lt;table class="class"&gt;&lt;tbody&gt;     &lt;tr style="background-color: #dd7c3b"&gt;       &lt;td class="class"&gt;&lt;strong&gt;Fecha&lt;/strong&gt;&lt;/td&gt;        &lt;td class="class"&gt;&lt;strong&gt;Evento&lt;/strong&gt;&lt;/td&gt;        &lt;td class="class"&gt;&lt;strong&gt;Co-Speaker&lt;/strong&gt;&lt;/td&gt;        &lt;td class="class"&gt;&lt;strong&gt;Presentación&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;tbody&gt;     &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2009/11&lt;/td&gt;        &lt;td class="class"&gt;TechDay de Tata Consultancy Services&lt;/td&gt;        &lt;td class="class"&gt;Gabriel Klestorny&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/TechDayConGabriel.pptx"&gt;Patrones de Cloud Computing&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2009/11&lt;/td&gt;        &lt;td class="class"&gt;Montevideo Valley en el Balmoral&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/Creciendo%20Juntos.pptx"&gt;Creciendo Juntos&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2009/10&lt;/td&gt;        &lt;td class="class"&gt;Evento de SQL Server 2008 en MS Argentina&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/SQL%20Server%202008%20R2.pptx"&gt;Introducción a SQL Server 2008 R2&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2009/10&lt;/td&gt;        &lt;td class="class"&gt;Lanzamiento de Windows 7 en Zonamerica&lt;/td&gt;        &lt;td class="class"&gt;Gabriel Klestorny&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/Windows7Zona.pptx"&gt;lanzamiento de Windows 7&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2009/10&lt;/td&gt;        &lt;td class="class"&gt;Charla de CUMUY en Microsoft Uruguay&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/Managed%20Extensibility%20Framework.pptx"&gt;Managed Extensibility Framework&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2009/10&lt;/td&gt;        &lt;td class="class"&gt;Evento de Windows 7 en Microsoft Uruguay&lt;/td&gt;        &lt;td class="class"&gt;Gabriel Klestorny&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/AppCompat.pptx"&gt;Winodws 7 Application Compatibility&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2009/09&lt;/td&gt;        &lt;td class="class"&gt;Evento de seguridad de AGESIC en UNIT&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/SDL.pptx"&gt;Secure Develoment LifeCycle&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2009/09&lt;/td&gt;        &lt;td class="class"&gt;Jornadas de Ingeniería de ORT (JEFI 2009)&lt;/td&gt;        &lt;td class="class"&gt;Gabriel Klestorny&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/ORTResearch.pptx"&gt;La innovación en Microsoft&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2009/08&lt;/td&gt;        &lt;td class="class"&gt;Tendencias 2009&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/Tendencias2009.pptx"&gt;Tendencias 2009&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2009/08&lt;/td&gt;        &lt;td class="class"&gt;Encuentro Internacional de Genexus en el Radisson&lt;/td&gt;        &lt;td class="class"&gt;Ignacio Cattivelli&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/EventoDeGenexus2009^_Con^_IgnacioCattivelli.pptx"&gt;Plataforma .net 2009&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2009/08&lt;/td&gt;        &lt;td class="class"&gt;Jornadas de Informática de la Administración Públuca (JIAP)&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/JIAP%202009.pptx"&gt;Jiap 2009&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2009/06&lt;/td&gt;        &lt;td class="class"&gt;Technight en Microsoft Uruguay&lt;/td&gt;        &lt;td class="class"&gt;Ignacio Cattivelli&lt;/td&gt;        &lt;td class="class"&gt;Windows 7&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2009/06&lt;/td&gt;        &lt;td class="class"&gt;RUN 09 en el Latu/KDC&lt;/td&gt;        &lt;td class="class"&gt;Ignacio Cattivelli&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/RUN09^_AzureServices.pptx"&gt;Azure Services&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2008/12&lt;/td&gt;        &lt;td class="class"&gt;Evento de partners en Uruguay&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/OBAs.pptx"&gt;OBAs…&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2008/12&lt;/td&gt;        &lt;td class="class"&gt;Architect Forum en Microsoft uruguay&lt;/td&gt;        &lt;td class="class"&gt;Ignacio Cattivelli&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/AF%7C_Dic2008%7C_OSLO.pptx"&gt;The OSLO modeling platform&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2008/11&lt;/td&gt;        &lt;td class="class"&gt;Architect Forum en Microsoft uruguay&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/AF%7C_Nov2008%7C_WFyDublin.pptx"&gt;Workflow Foundation 4.o y Dublin&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2008/11&lt;/td&gt;        &lt;td class="class"&gt;Architect Forum en Microsoft uruguay&lt;/td&gt;        &lt;td class="class"&gt;Ignacio Cattivelli&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/AF%7C_Nov2008%7C_VS2010.pptx"&gt;Visual Studio 10&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2008/11&lt;/td&gt;        &lt;td class="class"&gt;Architect Forum en Microsoft uruguay&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/AF%7C_Nov2008%7C_WindowsAzure.pptx"&gt;Windows Azure &amp;amp; Azure Services&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2008/09&lt;/td&gt;        &lt;td class="class"&gt;TechDay de TCS en el KDC&lt;/td&gt;        &lt;td class="class"&gt;Eduardo Mangarelli&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/TechDay%7C_2008%7C_S+S%7C_LATU%7C_ConEduardoMangarelli.pptx"&gt;S+S y la evolución de SOA&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2008/09&lt;/td&gt;        &lt;td class="class"&gt;Evento Internacional de Genexus 2008&lt;/td&gt;        &lt;td class="class"&gt;Ignacio Cattivelli&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/EncuentroInternacionalDeGenexus%7C_2008%7C_ConIgnacioCattivelli.pptx"&gt;Plataforma .net 2008&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2008/09&lt;/td&gt;        &lt;td class="class"&gt;Jornadas de Ingeniería de Software de la Universidad ORT&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/ORT%7C_JIFI%7C_2008.pptx"&gt;La evolución de los lenguajes de programación&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2008/08&lt;/td&gt;        &lt;td class="class"&gt;Technight: SQL Server 2008 para desarrolladores&lt;/td&gt;        &lt;td class="class"&gt;Miguel Angel Saez&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://3cphbg.bay.livefilestore.com/y1pNf_P3d0NaNIAbGsXhLpP8nKQ-XEd9hG_5fJNsFjRPfYdipgt8c8Xopr2BB7BkG9uTu8P5VamWNmqfHveLWpY6g/TechNight_200808_SQL2008_con_Miguel_Angel_Saez.pptx?download"&gt;SQL 2008 para desarrolladores&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2008/06&lt;/td&gt;        &lt;td class="class"&gt;Evento IPv6 de LacNic en en KDC&lt;/td&gt;        &lt;td class="class"&gt;Ignacio Cattivelli y Juan Jackson&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://3cphbg.bay.livefilestore.com/y1piaXP85snmQX6GPp9xodzqE2IjgLB4RW9BmfnlHMjTnSX1GMHRZCgKuq3VwAaCnNhQsN9E3txBW0lPUSJSxRozw/LACNIC_IPv6enWindows.pptx?downloadhttp://3cphbg.bay.livefilestore.com/y1piaXP85snmQX6GPp9xodzqE2IjgLB4RW9BmfnlHMjTnSX1GMHRZCgKuq3VwAaCnNhQsN9E3txBW0lPUSJSxRozw/LACNIC_IPv6enWindows.pptx?download"&gt;IPv6 en Windows&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2008/05&lt;/td&gt;        &lt;td class="class"&gt;Lanzamiento de Visual Studio 2008, Hotel Sheraton Montevideo&lt;/td&gt;        &lt;td class="class"&gt;Gastón Milano y Rodrigo Freire&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/LanzamientoVS2008_20080520_ConGastonMilanoYRodrigoFreire.pptx"&gt;Acceso a datos en .net, generación 2008&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2008/05&lt;/td&gt;        &lt;td class="class"&gt;Lanzamiento de SQL Server 2008, Hotel Sheraton&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/Techet_20080520_LanzamientoSQL2008.pptx"&gt;SQL Server 2008 para DBAs&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2008/04&lt;/td&gt;        &lt;td class="class"&gt;Technight en La Paz, Hotel Europa&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://3cphbg.bay.livefilestore.com/y1p0i-QlrLWeDnlP0KUT90RpTWkmEKpna30Hj1wsYys-nqp_8YKtG6APAm_xmDsoLaESdHTAAlruYbKu6OQJTq5YrbI6zOBRtnS/TechNightLaPaz042008.pptx?download"&gt;Plataforma de desarrollo .net 2008&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2008/03&lt;/td&gt;        &lt;td class="class"&gt;TechNight en Montevideo&lt;/td&gt;        &lt;td class="class"&gt;Ignaio Cattivelli&lt;/td&gt;        &lt;td class="class"&gt;&lt;a href="http://3cphbg.bay.livefilestore.com/y1p0i-QlrLWeDldYqQe8KPO2J8d8wWBcf5S_N2nVLyS7agYpHV11Jjv5213ZkNX3NIa7b0kiYu8eBsOn1Ts7RLzWw0ELSF9x3RA/TechNight_22080325_Live_con_Ignacio.pptx?download"&gt;Desarrollando para la &amp;quot;nube&amp;quot;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2007/10&lt;/td&gt;        &lt;td class="class"&gt;JIS en ORT &lt;/td&gt;        &lt;td class="class"&gt;Leonardo Dominguez &lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="SCRUM, El balance entre formal y agil" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/JIS_ORT_Oct2007_SCRUM_Con_Leo_Dominguez.pptx"&gt;SCRUM, El balance entre formal y agil&lt;/a&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2007/10&lt;/td&gt;        &lt;td class="class"&gt;Architect Forum en Microsoft Uruguay&lt;/td&gt;        &lt;td class="class"&gt;Charla de Germán Matosas&lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="Design For Operations" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/AF_200710_Matosas_DFO.pptx"&gt;Design For Operations&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2007/09&lt;/td&gt;        &lt;td class="class"&gt;Evento Anual de Genexus &lt;/td&gt;        &lt;td class="class"&gt;Eduardo Mangarelli &lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="Innovación en la plataforma de aplicaciones Microsoft" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/EventoAnualDeGenexus200709_PlataformaDeApps.pptx" target="_blank" mce_href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/EventoAnualDeGenexus200709_PlataformaDeApps.pptx"&gt;Innovación en la plataforma de aplicaciones Microsoft&lt;/a&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2007/09&lt;/td&gt;        &lt;td class="class"&gt;Lanzamiento de Windows Mobile de ANCEL &lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="Windows Mobie" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/ANCEL_200709_Mobile.pptx" target="_blank" mce_href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/ANCEL_200709_Mobile.pptx"&gt;WIndows Mobile&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2007/09&lt;/td&gt;        &lt;td class="class"&gt;Architect Forum Montevideo&lt;/td&gt;        &lt;td class="class"&gt;Charla de Alex Souza &lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="User Experience" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/ArchitectForumUruguay200709_AlexSouza_UserExperience.pdf" target="_blank" mce_href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/ArchitectForumUruguay200709_AlexSouza_UserExperience.pdf"&gt;User Experience para Arquitectos&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2007/08&lt;/td&gt;        &lt;td class="class"&gt;TechNight (Montevideo)&lt;/td&gt;        &lt;td class="class"&gt;Luciano varela&lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="Silverlight" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/TechNight_200709_ConLucianoVarela_Silverlight.pptx" target="_blank" mce_href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/TechNight_200709_ConLucianoVarela_Silverlight.pptx"&gt;Silverlight&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2007/08&lt;/td&gt;        &lt;td class="class"&gt;Milenium XXI y JIAP 2007&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160; &lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="Innovación y liderazgo" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/JIAP2007_MileniumXXI_2007_08_Innovacion_y_Liderazgo.pptx" target="_blank" mce_href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/JIAP2007_MileniumXXI_2007_08_Innovacion_y_Liderazgo.pptx"&gt;Innovación y Liderazgo&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2007/07&lt;/td&gt;        &lt;td class="class"&gt;Milenium XXI&lt;/td&gt;        &lt;td class="class"&gt;Gonzalo Laguna &lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="Seguridad" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/MileniumXXI_200707_ConGonzaloLaguna_Seguridad.pptx" target="_blank" mce_href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/MileniumXXI_200707_ConGonzaloLaguna_Seguridad.pptx"&gt;Seguridad (Desarrollo de aplicaciones)&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2007/03&lt;/td&gt;        &lt;td class="class"&gt;Workflow para Arquitectos&lt;/td&gt;        &lt;td class="class"&gt;&amp;#160;&lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="Workflow" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/MSDNWebcast_03277_WorkflowXAArchitects.pptx" target="_blank" mce_href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/MSDNWebcast_03277_WorkflowXAArchitects.pptx"&gt;Workflow para Arquitctos&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2007/02&lt;/td&gt;        &lt;td class="class"&gt;Regional Architects Forum&lt;/td&gt;        &lt;td class="class"&gt;Daniel Gómez&lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="Workflow y Sharepoint" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/RAF2007_ConDanielGomez_200702_Workflow_y_sharepoint.pptx" target="_blank" mce_href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/RAF2007_ConDanielGomez_200702_Workflow_y_sharepoint.pptx"&gt;Workflow y Sharepoint&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="class"&gt;2006/11&lt;/td&gt;        &lt;td class="class"&gt;TechnNight (Montevideo)&lt;/td&gt;        &lt;td class="class"&gt;Beatriz Pérez&lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="Testing Exploratorio" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/TechNight_200611_BeatrizPerez_TestingExploratorio.ppt" target="_blank" mce_href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/TechNight_200611_BeatrizPerez_TestingExploratorio.ppt"&gt;Testing Exploratorio&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="background-color: #e7a476"&gt;       &lt;td class="class"&gt;2006/11&lt;/td&gt;        &lt;td class="class"&gt;Developers Days @ Montevideo &lt;/td&gt;        &lt;td class="class"&gt;Marcos Bacelo &lt;/td&gt;        &lt;td class="class"&gt;&lt;a class="class" title="Workflow Foudation" href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/DevDays2006_200611_ConMarcosBacelo_Windows%20Workflow%20Foundation.ppt" target="_blank" mce_href="http://cid-ab9876f1cda024c9.skydrive.live.com/self.aspx/PPTs%20de%20Presentaciones/DevDays2006_200611_ConMarcosBacelo_Windows%20Workflow%20Foundation.ppt"&gt;Workflow Foundation&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5451411" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pcgarcia/archive/tags/Presentaciones/">Presentaciones</category></item><item><title>¿Hasta dónde llega el motor de Workflow del .net Framework 3.0?</title><link>http://blogs.msdn.com/b/pcgarcia/archive/2007/04/08/es-posible-implementar-los-patrones-avanzados-de-workflow-con-el-motor-de-workflow-foundation.aspx</link><pubDate>Sun, 08 Apr 2007 23:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2055531</guid><dc:creator>pcgarcia</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pcgarcia/rsscomments.aspx?WeblogPostID=2055531</wfw:commentRss><comments>http://blogs.msdn.com/b/pcgarcia/archive/2007/04/08/es-posible-implementar-los-patrones-avanzados-de-workflow-con-el-motor-de-workflow-foundation.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size: 11pt; line-height: 115%; font-family: &amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-ansi-language: es; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi; mso-fareast-language: en-us; mso-bidi-language: ar-sa" lang="ES"&gt;&lt;/span&gt;    &lt;p&gt;Esta pregunta me la he hecho muchas veces durante los &amp;#250;ltimos a&amp;#241;os, ya que mi pasado est&amp;#225; muy ligado a construir soluciones y herramientas de Workflow y en este art&amp;#237;culo intento transmitirles alguna de las formas en que con el tiempo, la implementaci&amp;#243;n de WF, me ha llegado a convencer de que sus limitaciones no son tales.&lt;/p&gt;    &lt;p&gt;Abordemos el que parece ser el problema mayor de la implementaci&amp;#243;n, tomando como base los patrones de Workflow concebidos por las universidades de Eindhoven&amp;#160; (Eindhoven University of Technology) y de Queensland (Queensland University of Technology), las cuales han creado un repositorio de 43 patrones de Workflow (ver: &lt;a href="http://www.workflowpatterns.com/" mce_href="http://www.workflowpatterns.com/"&gt;http://www.workflowpatterns.com/&lt;/a&gt;), los cuales sirven para evaluar las capacidades de los diversos sistemas de Workflow.&amp;#160; (para los que deseen introducirse en el concepto de workflow, en esta p&amp;#225;gina he publicado algunos conceptos b&amp;#225;sicos de workflow: &lt;a href="http://blogs.msdn.com/pcgarcia/pages/capitulo-1-conceptos-de-workflow.aspx"&gt;http://blogs.msdn.com/pcgarcia/pages/capitulo-1-conceptos-de-workflow.aspx&lt;/a&gt;)&lt;/p&gt;    &lt;p&gt;De estos patrones, voy a tomar dos que a primera vista aparecen como insalvables, los cuales son:&amp;#160;&amp;#160; &amp;quot;Ciclos arbitrarios&amp;quot; y &amp;quot;Discriminador estructurado&amp;quot;. La implementaci&amp;#243;n de Workflow Foundation tiene dos restricciones que hacen imposible implementar estos patrones. La primera de ellas es que una actividad siempre est&amp;#225; contenida en otra, por lo tanto, solo puede conectarse con su actividad madre, con sus hermanas y/o con sus hijas. La segunda restricci&amp;#243;n tiene que ver con que no existe el concepto de thread de ejecuci&amp;#243;n en Workflow Foundation y si bien el concepto de &amp;quot;Execution Context&amp;quot; se le aproxima mucho, est&amp;#225; sujeto a una limitaci&amp;#243;n impuesta en el runtime y es que al finalizar una actividad, el runtime fuerza la finalizaci&amp;#243;n de todas sus actividades hijas, con lo cual, si queremos despachar la actividad que sigue a la actual, se cancelar&amp;#225;n todas las actividades hijas de la actual que est&amp;#233;n en estado de ejecuci&amp;#243;n (el despachador no le dar&amp;#225; ni oportunidad de ejecutar porque una actividad en estado de cancelaci&amp;#243;n tiene prioridad en la cola de despacho sobre las que est&amp;#225;n esperando para ejecutar).&lt;/p&gt;    &lt;p&gt;Bien, formalicemos un poco estos patrones y analicemos si existen equivalentes funcionales que nos permitan obtener las mismas prestaciones del motor de workflow a pesar de las restricciones descriptas.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Structured Discriminator&lt;/strong&gt; (ver: &lt;a href="http://www.workflowpatterns.com/patterns/control/advanced_branching/wcp9.php" mce_href="http://www.workflowpatterns.com/patterns/control/advanced_branching/wcp9.php"&gt;http://www.workflowpatterns.com/patterns/control/advanced_branching/wcp9.php&lt;/a&gt; )&lt;/p&gt;    &lt;p&gt;Este patr&amp;#243;n se utiliza cuando tenemos una separaci&amp;#243;n en hilos de ejecuci&amp;#243;n paralelos (Split y Join) donde queremos que al llegar uno de los hilos de ejecuci&amp;#243;n al join se active la tarea que prosigue al join y que las actividades que se encontraban pendientes de ejecuci&amp;#243;n o activas en los dem&amp;#225;s hilos de ejecuci&amp;#243;n contin&amp;#250;en siendo ejecutadas en forma normal.&lt;/p&gt;    &lt;p&gt;Podemos graficar esta operaci&amp;#243;n de la siguiente manera:&lt;/p&gt;    &lt;p&gt;&lt;img style="width: 610px; height: 289px" title="Structured Discriminator" alt="Structured Discriminator" align="left" src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090111/original.aspx" width="610" height="289" mce_src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090111/original.aspx" /&gt;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Consideremos las Actividades en verde como actividades activadas (ejecutando) y las azules como ya terminadas. En esta secuencia se ilustra como ejecuta este patr&amp;#243;n, donde luego de completarse la actividad A, se pasa por el join y se activa la actividad C, quedando activa la actividad B. Cuando la actividad B se termina, no se vuelve a activar la actividad C.&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#191;C&amp;#243;mo compatibilizamos este hecho con la aseveraci&amp;#243;n anterior de que al terminar una actividad madre (por ejemplo, el Split-join) el motor de workflow foundation se asegura de que no quede ninguna actividad hija ejecutando?&lt;/p&gt;    &lt;p&gt;Planteemos el caso inicial en un Workflow Secuencial de Workflow Foundation y veamos como lo podemos &amp;quot;Refactorizar&amp;quot; para obtener un funcionamiento equivalente al patr&amp;#243;n presentado.&lt;/p&gt;    &lt;p mce_keep="true"&gt;&lt;img style="width: 326px; height: 456px" title="Structured discriminator 01" alt="Structured discriminator 01" align="left" src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090121/original.aspx" width="326" height="456" mce_src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090121/original.aspx" /&gt;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Aplicando una refactorizaci&amp;#243;n obtenemos el siguiente workflow:&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;img style="width: 456px; height: 433px" title="Structured Discriminator Refactorizado" alt="Structured Discriminator Refactorizado" align="left" src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090334/original.aspx" width="456" height="433" mce_src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090334/original.aspx" /&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;T&amp;#233;cnicamente, podemos implementar esta soluci&amp;#243;n con un par de actividades custom, una de env&amp;#237;o de la se&amp;#241;al de sincronizaci&amp;#243;n y otra de espera por la se&amp;#241;al, la cual puede estar basada en el uso del mecanismo de colas internas que posee Workflow Foundation y en&amp;#160; el uso de una propiedad con la cual hacer metadata binding de forma de asociar el destino de la se&amp;#241;al enviada por las actividades SendSync con la actividad WaitforSync. El mecanismo de comunicaci&amp;#243;n usado puede limitarse simplemente a crear una cola con el nombre de la actividad (el cual es clave dentro del workflow) en el m&amp;#233;todo Initialize de la actividad WaitForSync y en cada una de las actividades SendSync simplemente introducir una novedad en la cola (no importa el contenido).&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Si queremos llevar este patr&amp;#243;n a una resoluci&amp;#243;n gr&amp;#225;fica que presente el mismo nivel de transparencia en el orden de ejecuci&amp;#243;n de las actividades que presentan los mini-diagramas presentados anteriormente, tendremos que construir nuestra propia actividad &amp;quot;StructuredDiscriminatorActivity&amp;quot;, la cual debe ser funcionalmente igual al proceso que acabamos de presentar, pero presentando un dise&amp;#241;o gr&amp;#225;fico compuesto de una actividad de ejecuci&amp;#243;n en paralelo, donde colocar las actividades que se ejecutar&amp;#225;n en paralelo con la capacidad de continuar ejecutando cuando uno de los hilos de&amp;#160; ejecuci&amp;#243;n alcance el join, continuada por una actividad de secuencia, donde colocar la parte correspondiente al resto del workflow que contin&amp;#250;a a posteriori del join. De esta forma, la actividad contenedora ser&amp;#225; una sola y al estar las actividades hijas contenidas en el mismo nivel, podremos mantener estas activas cuanto tiempo sea necesario.&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Analicemos ahora un segundo patr&amp;#243;n de workflow (quiz&amp;#225;s el m&amp;#225;s complicado de resolver con WF).&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Arbitrary Cycles&lt;/strong&gt; (ver: &lt;a href="http://www.workflowpatterns.com/patterns/control/structural/wcp10.php" mce_href="http://www.workflowpatterns.com/patterns/control/structural/wcp10.php"&gt;http://www.workflowpatterns.com/patterns/control/structural/wcp10.php&lt;/a&gt; )&lt;/p&gt;    &lt;p&gt;Este patr&amp;#243;n nos dice que dentro del flujo del proceso deben de poderse implementar conexiones que formen ciclos o bucles sin un constructor espec&amp;#237;fico. Un ejemplo sencillo se ve de la siguiente forma:&lt;/p&gt;    &lt;p mce_keep="true"&gt;&lt;img style="width: 146px; height: 569px" title="Arbitrary Cycles" alt="Arbitrary Cycles" align="left" src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090336/original.aspx" width="146" height="569" mce_src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090336/original.aspx" /&gt;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;En este ejemplo, se forman dos ciclos (B - C - D.Else) y (C - D - E - F.Else) los cuales est&amp;#225;n cruzados entre s&amp;#237; y la importancia de este patr&amp;#243;n radica en lo simple que es construir un workflow sin tener que utilizar un constructor espec&amp;#237;fico (si quieren una notaci&amp;#243;n espec&amp;#237;fica) para formar los ciclos.&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Implementemos lo&amp;#160; mismo ahora con un workflow secuencial de Workflow Foundation.&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&lt;img style="width: 393px; height: 867px" title="Arbitrary Cyces con WF" alt="Arbitrary Cyces con WF" align="left" src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090343/original.aspx" width="393" height="867" mce_src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090343/original.aspx" /&gt; Lograr la representaci&amp;#243;n equivalente con el dise&amp;#241;ador de workflow foundation sin caer en la tentaci&amp;#243;n de repetir las actividades B y C es todo un desaf&amp;#237;o y con una simple mirada al workflow (que ya pierde mucho sentido de si) podemos imaginar lo que pasar&amp;#237;a si apareciera otro bucle mezclado con los dos bucles identificados o si el workflow fuera un poco m&amp;#225;s complejo, bueno, mejor no imaginarlo siquiera.&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Analicemos ahora si existe una forma alternativa de construir este workflow sin caer en la trampa de agregar tantos bucles. Hagamos de cuenta que el visual studio tiene un Refactoring llamado &amp;quot;Arbitrary Loop&amp;quot; que permite inyectar en una secuencia cualquiera de actividades un bucle arbitrario, respetando todos los cruzamientos que&amp;#160; se den entre los bucles definidos en el workflow. Sigamos el proceso de dise&amp;#241;o:&lt;/p&gt;    &lt;p&gt; 1) Dise&amp;#241;emos el workflow inicial ignorando los loops y simplemente ingresando las actividades del tipo If-Then-Else y dejando indicado que en el Else debemos hacer un loop con determinada actividad.&lt;/p&gt;    &lt;p&gt;&lt;img style="width: 516px; height: 753px" title="Paso 01" alt="Paso 01" align="left" src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090356/original.aspx" width="516" height="753" mce_src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090356/original.aspx" /&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;2) Ahora, seleccionando el primer IF, apliquemos un &amp;quot;Refactoring&amp;quot; al que llamaremos &amp;quot;Arbitrary Loop&amp;quot;, indicando que queremos hacer un loop con B. Si bien estamos haciendo algo que no es estrictamente un refactoring sino una transformaci&amp;#243;n del workflow que conserva la l&amp;#243;gica que hemos implementado en el workflow y que usando la salida por &amp;quot;Else&amp;quot; del condicional que tomamos como punto de partida del refactoring forma un loop con la acci&amp;#243;n seleccionada.     &lt;br /&gt;En este caso estamos aplicando un &amp;quot;Arbitrary Loop&amp;quot; de Eval.Else a B.&lt;/p&gt;    &lt;p mce_keep="true"&gt;&lt;img style="width: 475px; height: 783px" title="Paso 02" alt="Paso 02" align="left" src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090380/original.aspx" width="475" height="783" mce_src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090380/original.aspx" /&gt;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;3) Y ahora nuevamente aplicamos el mismo refactoring, uniendo El Else de Eval1 con la actividad C, para lo cual deberemos fraccionar la secuencia B-C, ya que cuando la condici&amp;#243;n F sea falsa, vamos a necesitar hacer un bucle en el proceso a la actividad C, por lo cual deberemos saltear en la secuencia a B. El proceso refactorizado nos quedar&amp;#237;a formado de la siguiente manera:&lt;/p&gt;    &lt;p mce_keep="true"&gt;&lt;img style="width: 621px; height: 776px" title="Paso 03" alt="Paso 03" align="left" src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090443/original.aspx" width="621" height="776" mce_src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090443/original.aspx" /&gt;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;En este proceso tenemos un loop central que oficia de bucle maestro y en cada hilo o bifurcaci&amp;#243;n de ejecuci&amp;#243;n dentro del bucle se termina con una actividad Setxxxx que establece, a partir de ese punto del proceso, por donde se debe continuar al volverse atr&amp;#225;s en el bucle, us&amp;#225;ndose bifurcaciones condicionales en cada punto de entrada para soportar los saltos representados en el proceso.&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Nuevamente voy a abusar de la imaginaci&amp;#243;n de Uds, pero el ejemplo presentado es claramente funcionalmente equivalente al problema planteado y nuevamente la soluci&amp;#243;n para implementar bucles arbitrarios en workflow foundation pasa por construir un tipo de actividad bucles arbitrarios, que ejecute la secuencia de actividades de acuerdo al esquema presentado pero que presente al usuario una interfase gr&amp;#225;fica similar a una secuencia pero con un men&amp;#250; contextual que permita conectar una rama de un condicional con una actividad de dicha secuencia. Gr&amp;#225;ficamente, creo que la soluci&amp;#243;n mas simple es presentarlo as&amp;#237;:&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&lt;img style="width: 489px; height: 763px" title="arbitrary loops finished" alt="arbitrary loops finished" align="left" src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090503/original.aspx" width="489" height="763" mce_src="http://blogs.msdn.com/photos/pcgarciaimgs/images/2090503/original.aspx" /&gt;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;En este &amp;#250;ltimo Workflow, contenido dentro de una actividad del tipo arbitraryloop, se utilizan actividades del tipo LoopTo para indicar la formaci&amp;#243;n de un loop arbitrario, es decir, cuando se alcancen las actividades LoopToC o LoopToB se pasar&amp;#225; a ejecutar directamente la actividad C o B seg&amp;#250;n corresponda.&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Puede que este an&amp;#225;lisis les parezca rebuscado, puede que Uds piensen que estos patrones se utilizan muy poco en la realidad o puede que simplemente piensen que hay que eliminarle algunas restricciones al motor de workflow de WF para seguir un camino m&amp;#225;s simple, pero como conclusi&amp;#243;n, quisiera transmitirles mi convicci&amp;#243;n de que el camino para extender workflow foundation y para hacer y construir Sistemas de Workflow sobre Workflow Foundation (sistemas que implementen patrones avanzados de workflow y que permitan que un analista de procesos&amp;#160; cree directamente los procesos de negocios, trabajando en el nivel de abstracci&amp;#243;n adecuado) es solo cuesti&amp;#243;n de usar a fondo el propio sistema de extensibilidad del runtime de workflow foundation, es decir, crear actividades y servicios, claro est&amp;#225;, algunas actividades ser&amp;#225;n &amp;quot;estructurales&amp;quot; y otras de dominio espec&amp;#237;fico.&lt;/p&gt;    &lt;p mce_keep="true"&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2055531" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pcgarcia/archive/tags/Refactoring+Workflows/">Refactoring Workflows</category><category domain="http://blogs.msdn.com/b/pcgarcia/archive/tags/Workflow/">Workflow</category></item></channel></rss>