<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.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>Visual Studio Team System : Visual Studio 2008</title><link>http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx</link><description>Tags: Visual Studio 2008</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>[Team Explorer 2008] Cómo resolver: Could not load type 'Microsoft.TeamFoundation.workitemTracking.Client.WorkItemTypeDeniedOrNotExistException'</title><link>http://msmvps.com/blogs/ffagas/archive/2009/10/08/team-explorer-2008-c-243-mo-resolver-could-not-load-type-microsoft-teamfoundation-workitemtracking-client-workitemtypedeniedornotexistexception.aspx</link><pubDate>Thu, 08 Oct 2009 00:18:59 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1730706</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1730706</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2009/10/08/team-explorer-2008-c-243-mo-resolver-could-not-load-type-microsoft-teamfoundation-workitemtracking-client-workitemtypedeniedornotexistexception.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Si al momento de realizar una acción sobre algún servicio del TFS desde el Team Explorer 2008 les puede presentar el siguiente mensaje de error:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.metablogapi/2654.ErrorTeamExplorer_5F00_5D267785.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="ErrorTeamExplorer" border="0" alt="ErrorTeamExplorer" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.metablogapi/5710.ErrorTeamExplorer_5F00_thumb_5F00_41A17582.png" width="644" height="281" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Si ustedes revisan el GAC (C:\Windows\Assembly) la dll existe, entonces el problema es porque han instalado el team explorer después de haber instalado el &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61&amp;amp;displaylang=en" target="_blank"&gt;sp1 de Visual Studio 2008&lt;/a&gt;. Para solucionar el problema reinstalen el sp1. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.metablogapi/6215.GAC_5F00_6C2D3092.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="GAC" border="0" alt="GAC" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.metablogapi/7360.GAC_5F00_thumb_5F00_33EA5A89.png" width="644" height="384" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1730706" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/How+To/default.aspx">How To</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Team+Explorer/default.aspx">Team Explorer</category></item><item><title>[VSTS] Integrando Flex con VSTS</title><link>http://msmvps.com/blogs/ffagas/archive/2009/09/15/vsts-integrando-flex-con-vsts.aspx</link><pubDate>Tue, 15 Sep 2009 20:00:03 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1723598</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1723598</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2009/09/15/vsts-integrando-flex-con-vsts.aspx#comments</comments><description>&lt;p align="justify"&gt;&lt;b&gt;Introducción&lt;/b&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Este artículo se revisará como integrar una interface hecha en Flex Builder 3.0 con objetos de .Net, en post anteriores se revisó como hacer la integración entre Flex y TFS 2008 utilizando el plugin de teamprise en esta ocasión veremos que al momento que integramos nuestro proyecto de Flex a Visual Studio 2008 automáticamente nos habilita la administración de dicho código. &lt;/p&gt;  &lt;p align="justify"&gt;Ver más: &lt;a title="http://geeks.ms/blogs/ffagas/archive/2009/09/15/vsts-integrando-flex-con-vsts.aspx" href="http://geeks.ms/blogs/ffagas/archive/2009/09/15/vsts-integrando-flex-con-vsts.aspx"&gt;http://geeks.ms/blogs/ffagas/archive/2009/09/15/vsts-integrando-flex-con-vsts.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1723598" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Team+Developer/default.aspx">Team Developer</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Source+Control/default.aspx">Source Control</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/How+To/default.aspx">How To</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Flex/default.aspx">Flex</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Aplicaciones+RIA/default.aspx">Aplicaciones RIA</category></item><item><title>[ScreenCasts] Trabajando con VSTS 2008 : Source Control</title><link>http://msmvps.com/blogs/ffagas/archive/2009/09/08/screencasts-trabajando-con-vsts-2008-source-control.aspx</link><pubDate>Tue, 08 Sep 2009 01:35:20 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1721488</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1721488</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2009/09/08/screencasts-trabajando-con-vsts-2008-source-control.aspx#comments</comments><description>&lt;p&gt;Amigos, a continuación les comparto unos videos cortos sobre el source control:&lt;/p&gt;  &lt;p&gt;Screencast de cómo crear espacios de trabajo en el source control del Team Foundation Server 2008.&lt;/p&gt;  &lt;p&gt;Screencast sobre cómo comparar versiones de código fuente en el source control.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://geeks.ms/blogs/ffagas/archive/2009/09/08/screencasts-trabajando-con-vsts-2008-source-control.aspx" href="http://geeks.ms/blogs/ffagas/archive/2009/09/08/screencasts-trabajando-con-vsts-2008-source-control.aspx"&gt;http://geeks.ms/blogs/ffagas/archive/2009/09/08/screencasts-trabajando-con-vsts-2008-source-control.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1721488" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Source+Control/default.aspx">Source Control</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/screencast/default.aspx">screencast</category></item><item><title>[ScreenCast] Trabajando Con VSTS 2008: Integración Con Project</title><link>http://msmvps.com/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts-2008-integraci-243-n-con-project.aspx</link><pubDate>Mon, 07 Sep 2009 04:16:45 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1721295</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1721295</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts-2008-integraci-243-n-con-project.aspx#comments</comments><description>&lt;p&gt;Screencast sobre la integración del Team Foundation Server 2008 con Project 2007 para la consulta, creación y actualización de elementos de trabajo.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://geeks.ms/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts-2008-integraci-243-n-con-project.aspx" href="http://geeks.ms/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts-2008-integraci-243-n-con-project.aspx"&gt;http://geeks.ms/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts-2008-integraci-243-n-con-project.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1721295" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/screencast/default.aspx">screencast</category></item><item><title>[ScreenCast] Trabajando Con VSTS 2008: Integración Con Excel</title><link>http://msmvps.com/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts-2008-integraci-243-n-con-excel.aspx</link><pubDate>Mon, 07 Sep 2009 04:08:14 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1721293</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1721293</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts-2008-integraci-243-n-con-excel.aspx#comments</comments><description>&lt;p&gt;Screencast sobre las características de integración del TFS 2008 con Excel 2007, cómo consultar, actualizar y crear elementos de trabajo desde excel.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://geeks.ms/blogs/ffagas/archive/2009/09/07/screencast-trabajando-convsts-2008-integraci-243-n-con-excel.aspx" href="http://geeks.ms/blogs/ffagas/archive/2009/09/07/screencast-trabajando-convsts-2008-integraci-243-n-con-excel.aspx"&gt;http://geeks.ms/blogs/ffagas/archive/2009/09/07/screencast-trabajando-convsts-2008-integraci-243-n-con-excel.aspx&lt;/a&gt;&lt;a title="http://geeks.ms/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts2008-preparando-un-proyecto.aspx" href="http://geeks.ms/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts2008-preparando-un-proyecto.aspx"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1721293" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/screencast/default.aspx">screencast</category></item><item><title>[ScreenCast] Trabajando Con VSTS2008: Preparando un Proyecto</title><link>http://msmvps.com/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts2008-preparando-un-proyecto.aspx</link><pubDate>Mon, 07 Sep 2009 04:04:41 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1721292</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1721292</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts2008-preparando-un-proyecto.aspx#comments</comments><description>&lt;p&gt;Screencast sobre descripción de la seguridad en TFS 2008, cómo crear un team project, descripción de los componentes de un team project y cómo configurar un team project.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a title="http://geeks.ms/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts2008-preparando-un-proyecto.aspx" href="http://geeks.ms/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts2008-preparando-un-proyecto.aspx"&gt;http://geeks.ms/blogs/ffagas/archive/2009/09/07/screencast-trabajando-con-vsts2008-preparando-un-proyecto.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1721292" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/screencast/default.aspx">screencast</category></item><item><title>[Screencast] Introducción a Visual Studio Team System 2008</title><link>http://msmvps.com/blogs/ffagas/archive/2009/09/06/screencast-introducci-243-n-a-visual-studio-team-system-2008.aspx</link><pubDate>Sun, 06 Sep 2009 20:26:24 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1721229</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1721229</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2009/09/06/screencast-introducci-243-n-a-visual-studio-team-system-2008.aspx#comments</comments><description>&lt;p&gt;Video de Introducción a Visual Studio Team System 2008 revisando sus componentes, servicios y arquitectura.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://geeks.ms/blogs/ffagas/archive/2009/09/06/screencast-introducci-243-n-a-visual-studio-team-system-2008.aspx" href="http://geeks.ms/blogs/ffagas/archive/2009/09/06/screencast-introducci-243-n-a-visual-studio-team-system-2008.aspx"&gt;http://geeks.ms/blogs/ffagas/archive/2009/09/06/screencast-introducci-243-n-a-visual-studio-team-system-2008.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1721229" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/screencast/default.aspx">screencast</category></item><item><title>VSLP 2.0 (Visual Studio Learning Pack 2.0)</title><link>http://msmvps.com/blogs/ffagas/archive/2009/08/31/vslp-2-0-visual-studio-learning-pack-2-0.aspx</link><pubDate>Mon, 31 Aug 2009 04:05:29 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1719631</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1719631</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2009/08/31/vslp-2-0-visual-studio-learning-pack-2-0.aspx#comments</comments><description>&lt;p&gt;Microsoft Visual Studio Learning Pack 2.0 es un paquete de software creado por Microsoft para ayudar a los estudiantes a aprender programación. Consta de cinco componentes diseñados para el aprendizaje de conceptos para la programación de software.&lt;/p&gt;  &lt;p&gt;Para mayor información y descarga la encontrarán en el post de Andy Gonzalez: &lt;a title="http://blogs.msdn.com/andygon/archive/2009/07/01/vslp-2-0-visual-studio-learning-pack-2-0.aspx" href="http://blogs.msdn.com/andygon/archive/2009/07/01/vslp-2-0-visual-studio-learning-pack-2-0.aspx"&gt;http://blogs.msdn.com/andygon/archive/2009/07/01/vslp-2-0-visual-studio-learning-pack-2-0.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1719631" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Recursos+Academicos/default.aspx">Recursos Academicos</category></item><item><title>[Evento] Invitación a Evento Aprendiendo con MsGuayaquil</title><link>http://msmvps.com/blogs/ffagas/archive/2009/05/26/evento-invitaci-243-n-a-evento-aprendiendo-con-msguayaquil.aspx</link><pubDate>Tue, 26 May 2009 00:15:39 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1693127</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1693127</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2009/05/26/evento-invitaci-243-n-a-evento-aprendiendo-con-msguayaquil.aspx#comments</comments><description>&lt;p&gt;Amigos, en esta ocasión quiero compartirles la invitación al evento que la comunidad de Microsoft en Guayaquil va a realizar el próximo 6 de Junio de 2009. A continuación les copiaré la invitación al evento, así como el link donde podrán encontrar mayor información como registro, detalle de conferencias, etc.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msguayaquil.com/blogs/lespinoza/archive/2009/05/25/aprendiendo-con-msguayaquil-s-225-bado-6-de-junio-del-2009-auditorio-ecotec.aspx" href="http://msguayaquil.com/blogs/lespinoza/archive/2009/05/25/aprendiendo-con-msguayaquil-s-225-bado-6-de-junio-del-2009-auditorio-ecotec.aspx"&gt;http://msguayaquil.com/blogs/lespinoza/archive/2009/05/25/aprendiendo-con-msguayaquil-s-225-bado-6-de-junio-del-2009-auditorio-ecotec.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/Publicidad20MsGuayaquil206Junio202009_5F00_1207BA04.jpg"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="Publicidad%20MsGuayaquil%206Junio%202009" border="0" alt="Publicidad%20MsGuayaquil%206Junio%202009" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/Publicidad20MsGuayaquil206Junio202009_5F00_thumb_5F00_62F5585F.jpg" width="580" height="772" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1693127" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/ALM/default.aspx">ALM</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/SCOM/default.aspx">SCOM</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>[VS2008 – WWF – MOSS 2007] ¿Cómo crear tareas paralelas en MOSS 2007 desde Visual Studio 2008 ?</title><link>http://msmvps.com/blogs/ffagas/archive/2009/03/16/vs2008-wwf-moss-2007-191-c-243-mo-crear-tareas-paralelas-en-moss-2007-desde-visual-studio-2008.aspx</link><pubDate>Mon, 16 Mar 2009 16:44:29 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1678381</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1678381</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2009/03/16/vs2008-wwf-moss-2007-191-c-243-mo-crear-tareas-paralelas-en-moss-2007-desde-visual-studio-2008.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Introducción &lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;span style="font-size:10pt;"&gt;En&amp;#160; un artículo anterior publiqué &lt;a href="http://msmvps.com/blogs/ffagas/archive/2008/08/07/vs-2008-moss-2007-191-c-243-mo-crear-actividades-personalizadas.aspx" target="_blank"&gt;cómo crear una tarea en MOSS 2007&lt;/a&gt;, en este artículo aprenderá cómo crear tareas paralelas en MOSS 2007 utilizando &lt;em&gt;Visual Studio 2008 Team Developer&lt;/em&gt;, Visual Studio 2008 nos permite crear de manera sencilla (al estilo Microsoft) flujos de trabajo para SharePoint, para esto disponemos de plantillas de proyecto al momento de empezar con la creación del mismo, en Microsoft Office SharePoint 2007 (MOSS 2007) podemos crear tareas en serie o en paralelo, las mismas que para crearlas las podemos hacer utilizando diferentes herramientas disponibles en el toolbox de Visual Studio 2008, en esta ocasión utilizaremos el replicator para la creación de las actividades en paralelo. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Les recomiendo leer el artículo anteriormente mencionado y descargar su código ya que reutilizaremos el ejemplo anterior para la creación de las tareas. El código fuente del presente artículo lo pueden descargar de aquí:&lt;span style="font-size:10pt;"&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;a href="http://msmvps.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.MOSS2007.WorkFlows/CreacionTareas.zip"&gt;Descargar código Fuente.&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Software Requerido &lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span style="font-size:10pt;"&gt;Windows Server 2003 o superior &lt;/span&gt;&lt;/li&gt;    &lt;li&gt;&lt;span style="font-size:10pt;"&gt;Microsoft Office SharePoint 2007 (instalación stand alone) &lt;/span&gt;&lt;/li&gt;    &lt;li&gt;&lt;span style="font-size:10pt;"&gt;Visual Studio 2008 Team Developer&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Desarrollo &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Empiece abriendo Visual Studio 2008 y agregando un nuevo proyecto a la solución anterior.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/001_5F00_07CCB765.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="001" border="0" alt="001" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/001_5F00_thumb_5F00_74E80DED.jpg" width="583" height="407" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;De la lista de Tipos de Proyectos seleccione Workflow y luego de la lista de plantillas SharePoint 2007 Sequential Workflow, le asigna un nombre a su proyecto y de clic en Ok.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/002_5F00_57B24016.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="002" border="0" alt="002" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/002_5F00_thumb_5F00_3A103F4A.jpg" width="581" height="406" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Visual Studio 2008 iniciará un asistente, el cual en esta primera ventana deberá asignarle el nombre&amp;#160; de su flujo de trabajo que desea que aparezca en SharePoint, e ingresar la url del sitio sobre el cual va a publicar el flujo de trabajo, Visual Studio 2008 en plataformas de 32 bits le permite publicar y hacer debug de sus flujos de trabajo para MOSS 2007, para lo cual utilizará la url proporcionada en este paso.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/003_5F00_06872267.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="003" border="0" alt="003" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/003_5F00_thumb_5F00_23ACCA71.jpg" width="604" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Si usted desea puede marcar para que automáticamente se asocie el flujo de trabajo que va a desarrollar con una librería en particular, caso contrario lo puede realizar manualmente utilizando comandos. Para la asociación automática debemos tener claro que significa cada elemento listado en este paso del asistente. El flujo de trabajo se debe asociar a una lista, esta lista será quien inicie el flujo de trabajo bajo ciertas condiciones, la lista de historial me permitirá almacenar toda la información relacionada al flujo de trabajo, por ejemplo: cuando inicio el flujo, cierta actividad, cuanto terminó, quién la terminó, etc., por último tenemos que seleccionar la lista de tareas, en esta lista el flujo de trabajo creará las tareas que nosotros le indiquemos. Antes de continuar y una vez entendido lo anterior pensemos en el siguiente escenario: Tenemos una librería de documentos que cada vez que se modifique un documento este deba ser aprobado por la persona X, persona Y o persona Z (esto implica que cualquiera de dichos usuarios puede aprobar el documento, es decir, estamos hablando de un flujo de aprobación en paralelo), para que dichos usuarios se enteren de que deben aprobar el documento debemos crear tareas y asignárselas para esto utilizaremos la lista de tareas.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/004_5F00_47857BFE.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="004" border="0" alt="004" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/004_5F00_thumb_5F00_2A4FAE27.jpg" width="604" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;En este paso final del asistente debemos seleccionar cuando queremos que el flujo de trabajo se inicie, basándonos en el ejemplo anterior debería seleccionar cuando el elemento cambie, pero en este caso yo quiero iniciar el flujo manualmente, razón por la cual selecciono sólo la primera acción.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/005_5F00_580D511F.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="005" border="0" alt="005" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/005_5F00_thumb_5F00_1CD97554.jpg" width="604" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Una vez terminado el asistente se abrirá el diseñador del flujo, recuerden que para la creación de una tarea utilizaremos el ejemplo publicado en el artículo anterior, por lo cual debemos a este proyecto agregar la referencia al mismo.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/006_5F00_6EED1EBA.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="006" border="0" alt="006" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/006_5F00_thumb_5F00_6AB32128.jpg" width="607" height="424" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;En la ventana de referencias seleccione de proyectos BasicTaskActivity.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/007_5F00_2CE4F1B3.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="007" border="0" alt="007" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/007_5F00_thumb_5F00_11CC22A5.jpg" width="471" height="387" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;En ese momento en el toolbox veremos el componente WssTaskActivity, pero antes de agregarlo debemos insertar en el flujo de trabajo el componente que realizará la creación de las tareas en paralelo, para lo cual seleccionen el componente replicator y llévenlo hacia el área de trabajo, luego seleccionen WssTaskActivity e insértenlo dentro del replicator.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/008_5F00_34EDB601.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="008" border="0" alt="008" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/008_5F00_thumb_5F00_2A00AEEC.jpg" width="604" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;La siguiente es la vista del flujo de trabajo con el replicator insertado. Le damos doble clic sobre el componente onWorkflowActivated1, para proceder a inicializar variables.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/009_5F00_582A84D9.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="009" border="0" alt="009" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/009_5F00_thumb_5F00_1B45DD3A.jpg" width="604" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Una vez realizado lo anterior, vamos al código del flujo de trabajo y defina las siguientes variables públicas:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#008000;"&gt;//Contendrá la lista de aprobadores.&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IList approversList;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#008000;"&gt;//Bandera que se utilizará para determinar si la tarea actual&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#008000;"&gt;//fue completada o no, por defecto es falso.&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; isActualTaskCompleted = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;pre&gt;&amp;#160;&lt;/pre&gt;

&lt;p&gt;En este ejemplo quemaremos en el código la lista de aprobadores, pero debemos tener en cuenta que los aprobadores los podemos obtener de cualquier objeto.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; onWorkflowActivated1_Invoked(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, ExternalDataEventArgs e)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   approversList = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ArrayList();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   approversList.Add(&amp;quot;&lt;span style="color:#8b0000;"&gt;igec\\ffagas&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   approversList.Add(&amp;quot;&lt;span style="color:#8b0000;"&gt;igec\\user1a&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   approversList.Add(&amp;quot;&lt;span style="color:#8b0000;"&gt;igec\\user2a&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;}&lt;/pre&gt;&lt;/pre&gt;

&lt;p align="justify"&gt;Una vez inicializada la lista de aprobadores regresamos a la vista de diseño del flujo de trabajo y procedemos a configurar las propiedades del replicator, lo primero que debemos hacer es vincular la variable approversList con la propiedad InitialChildData, el replicator utilizará esta lista para la creación de las actividades, veamos al replicator como un foreach, lo que implica que no debemos programar el avance al siguiente elemento de la lista, el replicator permite dos tipos de iteraciones en serie o en paralelo, por defecto está en serie, procedamos a cambiarlo a paralelo. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/010_5F00_0491AB60.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="010" border="0" alt="010" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/010_5F00_thumb_5F00_13E50D6F.jpg" width="514" height="414" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Luego, procedemos a programar los siguientes métodos del replicator, para lo cual en la lista de propiedades ingrese el nombre del método y enter, automáticamente el VS abrirá la vista de código del flujo:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ParallelChildInitialized(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, ReplicatorChildEventArgs e)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;  &lt;span style="color:#008000;"&gt;/* Debemos hacer un cast de la actividad que está actualmente instanciada
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;p&gt;     con la actividad que creamos en el proyecto anterior, para &lt;/p&gt;&lt;p&gt;     poder tener acceso 
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;p&gt;     a las propiedades públicas de la misma. Estas propiedades &lt;/p&gt;&lt;p&gt;     nos permitirán asignar a un usuario,
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;     la descripción, título, ID (es un GUID), y el campo de estado de la tarea.
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;  */&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;  &lt;span style="color:#008000;"&gt;//Recuerde que los usuarios a los que se va a asignar la tarea se encuentran en la lista,&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;  &lt;span style="color:#008000;"&gt;//entonces debe hacer referencia al dato actualmente instanciado y asignarselo al campo público de la actividad.&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;  (e.Activity &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; BasicTaskActivity.WssTaskActivity).strAsignadoA = e.InstanceData.ToString();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;  (e.Activity &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; BasicTaskActivity.WssTaskActivity).strDescripcion = &amp;quot;&lt;span style="color:#8b0000;"&gt;Demo Tarea Paralelas&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;  (e.Activity &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; BasicTaskActivity.WssTaskActivity).strTitulo = &amp;quot;&lt;span style="color:#8b0000;"&gt;Demo Tarea Paralela&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;  (e.Activity &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; BasicTaskActivity.WssTaskActivity).taskId = Guid.NewGuid();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;p&gt;  &lt;span style="color:#008000;"&gt;// Para obtener información de una columna de sharepoint la debemos instanciar por su GUID, &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#008000;"&gt;para lo cual utilizaremos las propiedades del flujo,&lt;/span&gt;
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;p&gt;  &lt;span style="color:#008000;"&gt;// instanciamos la lista de tareas, luego sus campos y le pasamos como &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#008000;"&gt;parametro el nombre que se muestra en sharepoint&lt;/span&gt;
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;p&gt;  &lt;span style="color:#008000;"&gt;// en este caso me interesa conocer la información del campo estado, y obtengo su ID (GUID) &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#008000;"&gt;que utilizará el WssTaskActivity para obtener la información&lt;/span&gt;
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;  &lt;span style="color:#008000;"&gt;// del estado actual de la tarea &lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;p&gt;  (e.Activity &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; BasicTaskActivity.WssTaskActivity).idCampoEstado = &lt;/p&gt;&lt;p&gt;workflowProperties.TaskList.Fields[&amp;quot;&lt;span style="color:#8b0000;"&gt;Estado&lt;/span&gt;&amp;quot;].Id;
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;}&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ParallelChildCompleted(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, ReplicatorChildEventArgs e)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;p&gt;&lt;span style="color:#008000;"&gt;// Validamos cada vez que se complete una actividad hija del &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#008000;"&gt;replicator el estado actual de la tarea&lt;/span&gt;
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;p&gt;&lt;span style="color:#008000;"&gt;// si la tarea fue completada, cambiamos el estado de la &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#008000;"&gt;variable isActualTaskCompleted a True.&lt;/span&gt;
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;            &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; ((e.Activity &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; BasicTaskActivity.WssTaskActivity).esTareaCompletada)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;            {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;                &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.isActualTaskCompleted = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;            }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;        }&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;p&gt;&lt;span style="color:#008000;"&gt;/*Este método corresponde a la condición del replicator, &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#008000;"&gt;debe seleccionar en el tipo de condición (Until Condition)
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;p&gt;código, y luego insertar el siguiente método, y le asignamos &lt;/p&gt;&lt;p&gt;el valor de la variable this.isActualTaskCompleted, con esto
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;cuando un usuario complete la tarea el flujo terminará.
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;*/&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ParallelTasksNotCompleteCondition(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, ConditionalEventArgs e)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;            e.Result = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.isActualTaskCompleted;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;        }&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Una vez realizado lo anterior, compilamos y ejecutamos el flujo de trabajo, esto le abrirá un navegador y deberá inicializar el flujo manualmente:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/011_5F00_70A9FC5C.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="011" border="0" alt="011" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/011_5F00_thumb_5F00_0880BDB6.jpg" width="529" height="330" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;

&lt;p&gt;De la lista de flujos de trabajo seleccionamos el que acabamos de publicar y le aparecerá que la operación de inicialización está en proceso.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/012_5F00_24CDFFD6.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="012" border="0" alt="012" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/012_5F00_thumb_5F00_0D534BA5.jpg" width="540" height="337" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;A continuación en el estado del flujo de trabajo veremos que se ha creado las tareas para los usuarios que configuramos en la lista&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/013_5F00_723A7C96.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="013" border="0" alt="013" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/013_5F00_thumb_5F00_0768823F.jpg" width="552" height="331" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Seleccionamos cualquiera de ellas y editamos su estado&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/014_5F00_78DD604C.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="014" border="0" alt="014" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/014_5F00_thumb_5F00_5FB1E047.jpg" width="554" height="332" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Seleccionamos completada. (Tenga en cuenta que si su sharepoint está en español deberá cambiar el código de la tarea personalizada), por lo siguiente:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; cambiaTarea_Invoked(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, ExternalDataEventArgs e)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;p&gt;            &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; estado = &lt;/p&gt;&lt;p&gt;cambiaTarea_AfterProperties1.ExtendedProperties[idCampoEstado].ToString();
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;            &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (estado != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;            {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;                &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (estado.Equals(&amp;quot;&lt;span style="color:#8b0000;"&gt;Completada&lt;/span&gt;&amp;quot;))
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;                    &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.esTareaCompletada = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;            }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;        }&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/015_5F00_7141CB12.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="015" border="0" alt="015" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/015_5F00_thumb_5F00_789D8ABF.jpg" width="673" height="403" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Luego de completar la tarea el flujo aparecerá con un estado ya no en curso sino en Finalizado.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/016_5F00_5B67BCE8.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="016" border="0" alt="016" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/016_5F00_thumb_5F00_1DAAAF5F.jpg" width="674" height="404" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1678381" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Personalizacion/default.aspx">Personalizacion</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/MOSS+2007/default.aspx">MOSS 2007</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Workflows/default.aspx">Workflows</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category></item><item><title>Visual Studio Team System 2008 Database Edition GDR - RTM</title><link>http://msmvps.com/blogs/ffagas/archive/2008/11/27/visual-studio-team-system-2008-database-edition-gdr-rtm.aspx</link><pubDate>Thu, 27 Nov 2008 18:52:55 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1655250</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1655250</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2008/11/27/visual-studio-team-system-2008-database-edition-gdr-rtm.aspx#comments</comments><description>&lt;p&gt;Nuevo Release de DB: &amp;quot;Mejor, robusto y rápido.&amp;quot;, el post original lo pueden ver &lt;a target="_blank" href="http://blogs.msdn.com/gertd/archive/2008/11/25/visual-studio-team-system-2008-database-edition-gdr-rtm.aspx"&gt;aquí&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1655250" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Team+DataBase/default.aspx">Team DataBase</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS/default.aspx">VSTS</category></item><item><title>[MOSS 2007 – VS Team Test] ¿Puedo Ejecutar Pruebas Web a Sitios de SharePoint Utilizando Team Test?</title><link>http://msmvps.com/blogs/ffagas/archive/2008/11/02/moss-2007-vs-team-test-191-puedo-ejecutar-pruebas-web-a-sitios-de-sharepoint-utilizando-team-test.aspx</link><pubDate>Sun, 02 Nov 2008 05:25:45 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1652797</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1652797</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2008/11/02/moss-2007-vs-team-test-191-puedo-ejecutar-pruebas-web-a-sitios-de-sharepoint-utilizando-team-test.aspx#comments</comments><description>&lt;p align="justify"&gt;Con Visual Studio Team Test podemos ejecutar pruebas como manuales, unitarias, web, carga, etc, en este artículo les hablaré de cómo ejecutar pruebas web sobre sitios implementados con &lt;a target="_blank" href="http://office.microsoft.com/es-es/sharepointserver/FX100492003082.aspx"&gt;Microsoft Office SharePoint Server 2007 (MOSS 2007)&lt;/a&gt;, la prueba que realizaré es ingresar a un sitio básico, luego dirigirme al subsitio de documentos y abrir una librería documental, para lo cual debemos considerar que los usuarios que van a ingresar son usuarios de un directorio activo y que antes de ingresar al sitio deberán digitar sus credenciales, el sitio que vamos a probar se muestra a continuación:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject1_5F00_3B97F6A8.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject1" border="0" alt="MOSSTestProject1" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject1_5F00_thumb_5F00_5B8353A5.jpg" width="644" height="389" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Para ejecutar la prueba antes descrita vamos a empezar creando un nuevo proyecto de pruebas.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject2_5F00_456CC246.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject2" border="0" alt="MOSSTestProject2" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject2_5F00_thumb_5F00_6226375B.jpg" width="644" height="458" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Una vez creado el proyecto de pruebas, agregaremos una nueva prueba de tipo web que llamaré MossTestNav1.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject3_5F00_73B62226.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject3" border="0" alt="MOSSTestProject3" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject3_5F00_thumb_5F00_7B11E1D3.jpg" width="580" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Al momento que creamos la prueba web Visual Studio abrirá un IE para grabar la secuencia de la prueba que deseamos ejecutar (El sitio solicitará el usuario y contraseña antes de abrir el sitio)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject4_5F00_6C1A8CEC.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject4" border="0" alt="MOSSTestProject4" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject4_5F00_thumb_5F00_5B52E23E.jpg" width="644" height="390" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;(Subsitio de Documentos)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject5_5F00_585D7D8B.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject5" border="0" alt="MOSSTestProject5" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject5_5F00_thumb_5F00_548FB2EE.jpg" width="644" height="389" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;(Librería Documental)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject6_5F00_695185A1.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject6" border="0" alt="MOSSTestProject6" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject6_5F00_thumb_5F00_0B0D3866.jpg" width="644" height="389" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Al finalizar la secuencia para detener la grabación de la misma deben dar clic en Stop. Luego mandamos a ejecutar la prueba guardada con la herramienta y tendremos el siguiente resultado (Podemos observar que los 3 request retornan error y en la vista del navegador observamos el mensaje: Usted no está autorizado para ver esta página), este error se da porque no le estamos pasamos las credenciales del usuario con el que deseamos ejecutar la prueba.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject6.1_5F00_38CADB5E.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject6.1" border="0" alt="MOSSTestProject6.1" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject6.1_5F00_thumb_5F00_5AF2C117.jpg" width="644" height="389" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Con Visual Studio 2008 Team Test podemos configurar data sources (orígenes de datos) para ejecutar nuestra pruebas, estos orígenes de datos para pruebas web pueden ser bases de datos, archivos csv y xml, para este caso crearé un archivo xml llamado usuarios y agregaré 4 usuarios con su respectiva contraseña:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject7_5F00_3D50C04B.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject7" border="0" alt="MOSSTestProject7" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject7_5F00_thumb_5F00_67704866.jpg" width="644" height="377" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Una vez creado el archivo xml retorno a Visual Studio y en la prueba web selecciono “Agregar Data Source” (En la imagen a continuación ver 1), luego en el asistente selecciono “XML file”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject8_5F00_2CE522C5.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject8" border="0" alt="MOSSTestProject8" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject8_5F00_thumb_5F00_5D4B816E.jpg" width="644" height="390" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A continuación selecciono el archivo anteriormente creado.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject9_5F00_6F17EF6E.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject9" border="0" alt="MOSSTestProject9" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject9_5F00_thumb_5F00_19A3AA7F.jpg" width="550" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Seleccionamos la tabla que vamos a utilizar para esta prueba y cerramos el asistente con Finalizar.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject10_5F00_6854C01E.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject10" border="0" alt="MOSSTestProject10" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject10_5F00_thumb_5F00_182F61E0.jpg" width="550" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Una vez configurado el data source debemos establecer las credenciales de la prueba, para esto junto a “Agregar Data Source” existe un botón “Set Credentials”, en el cuadro de dialogo seleccionamos los campos de la tabla del data source que corresponde al nombre de usuario y contraseña.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject11_5F00_0AE8D8CD.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject11" border="0" alt="MOSSTestProject11" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject11_5F00_thumb_5F00_325FA537.jpg" width="644" height="388" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Una vez realizadas estas configuraciones volvamos a ejecutar la prueba web, ahora podremos observar que no recibimos error y en el tab “Web Browser” vemos que se ha iniciado sesión con el primer usuario que configuramos en el archivo usuarios.xml (Nota: el usuario intranetadmin constituye para el sitio el usuario cuenta del sistema).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject11.1_5F00_35B11712.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject11.1" border="0" alt="MOSSTestProject11.1" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject11.1_5F00_thumb_5F00_180F1646.jpg" width="644" height="389" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;En el caso anterior la prueba web se ejecutó una sola vez debido a que así estaba configurado, si queremos ejecutar la misma prueba web para varios usuarios y validar el nivel de permisos de los mismos y determinar que esta viendo cada usuario de la intranet, en la ventana de resultados de la prueba web den clic sobre “Edit run settings”, a continuación se les presentará el siguiente cuadro de dialogo dobre procedemos a cambiar el número de ejecuciones de “Fixed run count (1)” a “One run per data source row”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject12_5F00_72757317.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject12" border="0" alt="MOSSTestProject12" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject12_5F00_thumb_5F00_7058744E.jpg" width="562" height="484" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Para finalizar, ejecutamos nuevamente la prueba web y esta vez podemos observar que se ejecuta 4 veces (debido a que tenemos 4 entradas en el data source), comparemos el resultado de la ejecución anterior (ejecución con cuenta del sistema) con la ejecución actual, en la vista del web browser nos podemos dar cuenta que con el usuario que inició sesión en la segunda ejecución corresponde a la segunda entrada del data source (user1a) y debido a que este usuario solo tiene nivel de permisos de lector no aparece ningún link de acciones administrativas como “Acciones del sitio”. &lt;/p&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;  &lt;p&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;&lt;/p&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;  &lt;p&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;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;(Resultado ejecución anterior de la prueba)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject14_5F00_22036BD7.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject14" border="0" alt="MOSSTestProject14" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject14_5F00_thumb_5F00_4FC10ECF.jpg" width="644" height="389" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;(Resultado ejecución actual de la prueba)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject13_5F00_2F95DC45.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MOSSTestProject13" border="0" alt="MOSSTestProject13" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/MOSSTestProject13_5F00_thumb_5F00_2A8378C9.jpg" width="644" height="389" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1652797" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/MOSS+2007/default.aspx">MOSS 2007</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Team+Test/default.aspx">Team Test</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category></item><item><title>Microsoft Enterprise Library 4.1 – October 2008</title><link>http://msmvps.com/blogs/ffagas/archive/2008/11/01/microsoft-enterprise-library-4-1-october-2008.aspx</link><pubDate>Sat, 01 Nov 2008 04:41:42 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1652734</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1652734</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2008/11/01/microsoft-enterprise-library-4-1-october-2008.aspx#comments</comments><description>&lt;p&gt;Estoy un poquito desactualizado con la escritura en mi blog, pero para quienes están interesados y trabajan con Enterprise Library, este mes Microsoft libreró una nueva versión de la misma para .Net Framework 2.5 y VS 2008, la cual pueden descargar &lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1643758B-2986-47F7-B529-3E41584B6CE5&amp;amp;displaylang=en"&gt;aquí&lt;/a&gt;. Para conocer más sobre este release visiten este &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/dd203099.aspx"&gt;sitio&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1652734" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Best+Practice/default.aspx">Best Practice</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Arquitectura/default.aspx">Arquitectura</category></item><item><title>Prepárate para el MSDN Tour – Septiembre 2008!</title><link>http://msmvps.com/blogs/ffagas/archive/2008/10/01/prep-225-rate-para-el-msdn-tour-septiembre-2008.aspx</link><pubDate>Wed, 01 Oct 2008 03:23:29 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1649330</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1649330</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2008/10/01/prep-225-rate-para-el-msdn-tour-septiembre-2008.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/ricardoj/archive/2008/08/27/prep-rate-para-el-msdn-tour-septiembre-2008.aspx" target="_blank"&gt;Ver post&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1649330" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Eventos/default.aspx">Eventos</category></item><item><title>Reunión con Célula .Net de la Estatal</title><link>http://msmvps.com/blogs/ffagas/archive/2008/08/12/reuni-243-n-con-c-233-lula-net-de-la-estatal.aspx</link><pubDate>Tue, 12 Aug 2008 05:37:03 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1644345</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1644345</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2008/08/12/reuni-243-n-con-c-233-lula-net-de-la-estatal.aspx#comments</comments><description>&lt;p&gt;El jueves 7 de Agosto tuve una reunión con los miembros más activos de la célula .Net de la Universidad Estatal de Guayaquil para realizarles una presentación (bueno empezamos con una presentación pero luego empezamos a discutir sobre la aplicación de los temas tratados y futuras actividades para que los estudiantes empiecen a desarrollar sus aplicaciones con estas tecnologías y herramientas), entre todos los temas tratados los más destacados fueron WPF, WCF, WWF, Expression Blend, Silverlight y para cerrar con broche de oro les presenté las nuevas características de VSTS “Rosario”. Les comparto un par de fotos al final de la presentación con la gente activa de la célula.  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.ReuninconClula.NetdelaEstatal_5F00_89B/AK000202.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="184" alt="AK000202" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.ReuninconClula.NetdelaEstatal_5F00_89B/AK000202_5F00_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.ReuninconClula.NetdelaEstatal_5F00_89B/AK000204.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="184" alt="AK000204" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.ReuninconClula.NetdelaEstatal_5F00_89B/AK000204_5F00_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;/td&gt; &lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1644345" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Workflows/default.aspx">Workflows</category></item><item><title>[MOSS 2007 - VS2008] Mejores prácticas al momento de utilizar objetos de Windows SharePoint Services</title><link>http://msmvps.com/blogs/ffagas/archive/2008/08/12/moss-2007-vs2008-mejores-pr-225-cticas-al-momento-de-utilizar-objetos-de-windows-sharepoint-services.aspx</link><pubDate>Tue, 12 Aug 2008 05:10:48 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1644343</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1644343</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2008/08/12/moss-2007-vs2008-mejores-pr-225-cticas-al-momento-de-utilizar-objetos-de-windows-sharepoint-services.aspx#comments</comments><description>&lt;p&gt;Tal como comenté en un post anterior respaldando mi información me encontré con este artículo que revisé antes de presentarme a dar mi examen de certificación de desarrollo de aplicaciones con MOSS 2007 por Junio del año pasado y que durante todo este tiempo me ha sido de mucha utilidad para escribir código de manera correcta y optimizado, el artículo lo pueden encontrar &lt;a href="http://msdn.microsoft.com/en-us/library/aa973248.aspx"&gt;aquí&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.MOSS2007VS2008Mejoresprcticasalmomentode_5F00_283/MCTS_2800_rgb_29005F00_507_5F00_526_5F00_530_5F00_1076_5F00_1077_5F00_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="60" alt="MCTS(rgb)_507_526_530_1076_1077" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.MOSS2007VS2008Mejoresprcticasalmomentode_5F00_283/MCTS_2800_rgb_29005F00_507_5F00_526_5F00_530_5F00_1076_5F00_1077_5F00_thumb.jpg" width="311" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1644343" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Best+Practice/default.aspx">Best Practice</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/MOSS+2007/default.aspx">MOSS 2007</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category></item><item><title>[VS2008 SP1] Instalación VS2008 SP1</title><link>http://msmvps.com/blogs/ffagas/archive/2008/08/12/vs2008-sp1-instalaci-243-n-vs2008-sp1.aspx</link><pubDate>Tue, 12 Aug 2008 04:21:56 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1644340</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1644340</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2008/08/12/vs2008-sp1-instalaci-243-n-vs2008-sp1.aspx#comments</comments><description>&lt;p&gt;Para aquellos que descarguen el ISO del SP1 de Visual Studio 2008 este post les será de utilidad ya que cuando abran el ISO con alguna herramienta (en mi caso utilice el Power ISO) &lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008SP1InstalacinVS2008SP1_5F00_1487A/PowerISO_5F00_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="390" alt="PowerISO" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008SP1InstalacinVS2008SP1_5F00_1487A/PowerISO_5F00_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;el autorun no se ejecutó y al explorar se encontrarán con varios instaladores. Primero deben ir a la carpeta vs90sp1 y dar ubicar el archivo SPInstaller.&lt;/p&gt; &lt;p&gt;Al ejecutarlo les mostrará una lista de los productos que afectará el SP1.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008SP1InstalacinVS2008SP1_5F00_1487A/Welcome_5F00_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="484" alt="Welcome" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008SP1InstalacinVS2008SP1_5F00_1487A/Welcome_5F00_thumb.jpg" width="519" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Acepten los términos de licencia:&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008SP1InstalacinVS2008SP1_5F00_1487A/TerminosLicencia_5F00_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="484" alt="TerminosLicencia" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008SP1InstalacinVS2008SP1_5F00_1487A/TerminosLicencia_5F00_thumb.jpg" width="519" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Luego validará el espacio disponible en disco, en caso de no contar con el espacio requerido el instalador no le permitirá continuar, de lo contrario la instalación del SP1 empezará.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1644340" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category></item><item><title>[VSTS 2008 - Service Pack 1] Service Pack 1 de VS 2008, .Net Framework 3.5 y TFS Liberado</title><link>http://msmvps.com/blogs/ffagas/archive/2008/08/11/vsts-2008-service-pack-1-service-pack-1-de-vs-2008-net-framework-3-5-y-tfs-liberado.aspx</link><pubDate>Mon, 11 Aug 2008 16:46:56 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1644259</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1644259</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2008/08/11/vsts-2008-service-pack-1-service-pack-1-de-vs-2008-net-framework-3-5-y-tfs-liberado.aspx#comments</comments><description>&lt;p&gt;El día de hoy fue liberado el SP1 del Framework 3.5, Visual Studio 2008 y TFS 2008, a continuación comparto los links de descarga.&lt;/p&gt; &lt;p&gt;Pueden descargar el .NET Framework 3.5 SP1 &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en"&gt;aquí&lt;/a&gt;. la versión completa la pueden descargar &lt;a href="http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe"&gt;aquí&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fbee1648-7106-44a7-9649-6d9f6d58056e&amp;amp;DisplayLang=en"&gt;Visual Studio 2008 SP1&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9e40a5b6-da41-43a2-a06d-3cee196bfe3d&amp;amp;DisplayLang=en"&gt;Team Foundation Server 2008 SP1&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Para las versiones express de los productos puedes ir &lt;a href="http://www.microsoft.com/express/download/"&gt;aquí&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1644259" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category></item><item><title>[VS2008 -WWF- MOSS 2007] ¿Cómo crear actividades personalizadas?</title><link>http://msmvps.com/blogs/ffagas/archive/2008/08/07/vs-2008-moss-2007-191-c-243-mo-crear-actividades-personalizadas.aspx</link><pubDate>Thu, 07 Aug 2008 21:25:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1643910</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1643910</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2008/08/07/vs-2008-moss-2007-191-c-243-mo-crear-actividades-personalizadas.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Introducci&amp;oacute;n &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;En este art&amp;iacute;culo aprender&amp;aacute; c&amp;oacute;mo crear una actividad personalizada utilizando Visual Studio 2008, esta actividad contendr&amp;aacute; los pasos b&amp;aacute;sicos necesarios para asignar una tarea en MOSS 2007 a un usuario, la misma que esperar&amp;aacute; a que este la complete, en una segunda publicaci&amp;oacute;n aprender&amp;aacute; c&amp;oacute;mo utilizar &amp;eacute;sta actividad personalizada en un flujo de trabajo para MOSS 2007. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Para poder utilizar e&lt;span style="font-size:10pt;"&gt;sta actividad en un flujo para MOSS 2007 deber&amp;aacute; ser firmada con un strong name (La clave para quienes descarguen el codigo de ejemplo es Password1)&amp;nbsp;y publicada en el GAC del servidor de MOSS 2007. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.MOSS2007.WorkFlows/BasicTaskActivity.zip"&gt;&lt;span style="font-size:10pt;"&gt;Descargar c&amp;oacute;digo Fuente.&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Software Requerido &lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size:10pt;"&gt;Windows Server 2003 o superior &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:10pt;"&gt;Microsoft Office SharePoint 2007 (instalaci&amp;oacute;n stand alone) &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:10pt;"&gt;Visual Studio 2008 &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desarrollo &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Empiece abriendo Visual Studio 2008 y cree un nuevo proyecto. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/01VS_5F00_4.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/01VS_5F00_thumb_5F00_1.jpg" alt="" /&gt;&lt;/a&gt;&lt;span style="font-size:10pt;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Los flujos de trabajo para MOSS 2007 son flujos de Windows WorkFlow Foundation, por lo tanto de la lista de Project types seleccione Workflow, y luego seleccione la plantilla Workflow Activity Library, en el nombre del proyecto ingrese BasicTaskActivity. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/02NewProject_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/02NewProject_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt;&lt;span style="font-size:10pt;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Una vez creado el proyecto deber&amp;aacute;&amp;nbsp; firmar el assembly con un strong name, para lo cual haga clic derecho sobre el proyecto y seleccione propiedades, en la ventana de propiedades dir&amp;iacute;jase al tab signing. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/03StrongName_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/03StrongName_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Active la casilla Sign Assembly y seleccione new para crear un nuevo archivo de clave, deber&amp;aacute; ingresar un nombre y una clave antes de dar clic en OK. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/04GenerarStrongName_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/04GenerarStrongName_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt;&lt;span style="font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Una vez creado cierre la ventana de propiedades. Para poder utilizar las actividades para MOSS 2007 deber&amp;aacute; agregar la referencia de los siguientes assemblies: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;div style="text-align:center;"&gt;
&lt;table style="border-collapse:collapse;"&gt;


&lt;tr style="background:black;"&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;border-top:black 0.5pt solid;padding-left:7px;padding-bottom:1px;border-left:black 0.5pt solid;padding-top:1px;border-bottom:black 0.5pt solid;"&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:10pt;color:#ffffff;"&gt;&lt;strong&gt;Identity&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;border-top:black 0.5pt solid;padding-left:7px;padding-bottom:1px;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:10pt;color:#ffffff;"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-left:black 0.5pt solid;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Microsoft.Sharepoint&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Windows&amp;reg; SharePoint&amp;reg; Services&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-left:black 0.5pt solid;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Microsoft.SharePoint.WorkflowActions&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Windows&amp;reg; SharePoint&amp;reg; Services Workflow Actions&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Utilice el nombre que aparece en description (ver tabla anterior) para agregar las referencias. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/05AddReference_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/05AddReference_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt;&lt;span style="font-size:10pt;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Luego proceda a renombrar la actividad llam&amp;aacute;ndola WssTaskActivity.cs &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/06RenameTaskActivity_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/06RenameTaskActivity_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt;&lt;span style="font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Vaya al c&amp;oacute;digo de la actividad personalizada y dentro de la clase agregue la siguiente definici&amp;oacute;n de variables, las cuales servir&amp;aacute;n como par&amp;aacute;metros de entrada cuando agregue la actividad a un flujo de aprobaci&amp;oacute;n de MOSS 2007. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;#region&lt;/span&gt; Public Parameters &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Guid&lt;/span&gt; idCampoEstado; &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;public string &lt;/span&gt;strAsignadoA; &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; strTitulo; &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; strDescripcion; &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt; dtDuraci&amp;oacute;n; &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; bEnviarNotificaci&amp;oacute;n; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:courier new;"&gt;#endregion &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;En el toolbox de VS 2008 existen las actividades necesarias para gestionar tareas de MOSS 2007, as&amp;iacute; como para enviar email, registrar mensajes en el historial del flujo de trabajo, etc. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/07ToolBox_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/07ToolBox_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt;&lt;span style="font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Luego deber&amp;aacute; agregar las siguientes actividades con sus respectivas propiedades en el &amp;aacute;rea de dise&amp;ntilde;o de la actividad que estamos creando. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;div style="text-align:center;"&gt;
&lt;table style="border-collapse:collapse;"&gt;


&lt;tr style="background:black;"&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;border-top:black 0.5pt solid;padding-left:7px;padding-bottom:1px;border-left:black 0.5pt solid;padding-top:1px;border-bottom:black 0.5pt solid;"&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:10pt;color:#ffffff;"&gt;&lt;strong&gt;Paso&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;border-top:black 0.5pt solid;padding-left:7px;padding-bottom:1px;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:10pt;color:#ffffff;"&gt;&lt;strong&gt;Grupo&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;border-top:black 0.5pt solid;padding-left:7px;padding-bottom:1px;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:10pt;color:#ffffff;"&gt;&lt;strong&gt;Actividad&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-left:black 0.5pt solid;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Ver Paso A&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;SharePoint Workflow&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;CreateTask&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-left:black 0.5pt solid;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Ver Paso B&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Windows Workflow v3.0&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;While&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-left:black 0.5pt solid;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Ver Paso C&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;SharePoint Workflow&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;OnTaskChanged&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-left:black 0.5pt solid;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Ver Paso D&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;SharePoint Workflow&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 0.5pt solid;padding-right:7px;padding-left:7px;padding-bottom:1px;border-top-style:none;padding-top:1px;border-bottom:black 0.5pt solid;border-left-style:none;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;CompleteTask&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;/div&gt;
&lt;p style="text-align:center;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso A &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Configure las siguientes propiedades de la actividad CreateTask: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;(Name):&lt;/strong&gt; Ingrese Crear Tarea &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;CorrelationToken:&lt;/strong&gt; Ingrese TaskToken &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;OwnerActivityName:&lt;/strong&gt; Seleccione WssTaskActivity &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;Invoked:&lt;/strong&gt; Ingrese CrearTarea_MethodInvoking y presione enter. El c&amp;oacute;digo del m&amp;eacute;todo ser&amp;aacute; el siguiente: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; CrearTarea_MethodInvoking(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;taskId = &lt;span style="color:#2b91af;"&gt;Guid&lt;/span&gt;.NewGuid(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;CrearTarea_TaskProperties1.AssignedTo = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.strAsignadoA; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;CrearTarea_TaskProperties1.Title = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.strTitulo; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;CrearTarea_TaskProperties1.Description = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.strDescripcion; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;CrearTarea_TaskProperties1.DueDate = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.dtDuraci&amp;oacute;n; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;CrearTarea_TaskProperties1.SendEmailNotification = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.bEnviarNotificaci&amp;oacute;n; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;TaskId: &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Para configurar esta propiedad deber&amp;aacute; ir al c&amp;oacute;digo de la actividad y declarar una variable p&amp;uacute;blica llamada taskId. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Guid&lt;/span&gt; taskId; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Luego regrese a la vista de dise&amp;ntilde;o y en la propiedad TaskId de clic sobre el bot&amp;oacute;n &amp;#39;&amp;hellip;&amp;#39; y seleccione la variable que acaba de definir. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/08TaskId_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/08TaskId_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt;&lt;span style="font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;TaskProperties:&lt;/strong&gt; De clic en el bot&amp;oacute;n &amp;#39;&amp;hellip;&amp;#39;, luego en el tab Bind to a new member seleccione Create Field. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/09TaskProperties_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/09TaskProperties_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso B &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;(Name):&lt;/strong&gt; Ingrese mientrasTareaNoCompletada &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;Condition:&lt;/strong&gt; Seleccione Code Condition. Luego expanda la propiedad e ingrese el siguiente nombre para el m&amp;eacute;todo: CodeConditionMethod. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Una vez en el c&amp;oacute;digo agregue otro campo p&amp;uacute;blico: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; taskCompleted = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;El m&amp;eacute;todo deber&amp;aacute; quedar de la siguiente forma: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; CodeConditionMethod(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;ConditionalEventArgs&lt;/span&gt; e) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;e.Result = !taskCompleted; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;"&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso C &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;(Name):&lt;/strong&gt; Ingrese CambiaTarea &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;CorrelationToken:&lt;/strong&gt; Seleccione TaskToken &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;Invoked:&lt;/strong&gt; Ingrese cambiaTarea_Invoked y presione enter. El c&amp;oacute;digo del m&amp;eacute;todo ser&amp;aacute; el siguiente: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; cambiaTarea_Invoked(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;ExternalDataEventArgs&lt;/span&gt; e) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;string &lt;/span&gt;estado=cambiaTarea_AfterProperties1.ExtendedProperties[&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.idCampoEstado].ToString(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (estado != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (estado.Equals(&lt;span style="color:#a31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;)) &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.tareaCompletada = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;AfterProperties:&lt;/strong&gt; De clic en el bot&amp;oacute;n &amp;#39;&amp;hellip;&amp;#39;, luego en el tab Bind to a new member seleccione Create Field. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/10afterProperties_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/10afterProperties_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt;&lt;span style="font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;BeforeProperties:&lt;/strong&gt; De clic en el bot&amp;oacute;n &amp;#39;&amp;hellip;&amp;#39;, luego en el tab Bind to a new member seleccione Create Field. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/11BeforeProperties_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/11BeforeProperties_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt;&lt;span style="font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;TaskId:&lt;/strong&gt; De clic en el bot&amp;oacute;n &amp;#39;&amp;hellip;&amp;#39;, y seleccione la propiedad TaskId de la actividad Crear Tarea. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/12TaskIDCambio_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/12TaskIDCambio_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso D &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;(Name):&lt;/strong&gt; Ingrese TareaCompletada &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;CorrelationToken:&lt;/strong&gt; Seleccione TaskToken &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;strong&gt;TaskId:&lt;/strong&gt; De clic en el bot&amp;oacute;n &amp;#39;&amp;hellip;&amp;#39;, y seleccione la propiedad TaskId de la actividad Crear Tarea. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/12TaskIDCambio_5F00_4.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/12TaskIDCambio_5F00_thumb_5F00_1.jpg" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Finalmente, compile el proyecto y registre la librer&amp;iacute;a en el GAC y a partir de este momento podr&amp;aacute; utilizar esta actividad personalizada en los flujos para MOSS 2007 que desarrolle con Visual Studio 2008. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/13RegistrarGAC_5F00_2.jpg"&gt;&lt;img border="0" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas.VS2008MOSS2007Cmocrearactividadespersona_5F00_33C8/13RegistrarGAC_5F00_thumb.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1643910" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/MOSS+2007/default.aspx">MOSS 2007</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Workflows/default.aspx">Workflows</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Desarrollo/default.aspx">Desarrollo</category></item><item><title>[C# - VS 2008] Cómo crear atributos personalizados para Enumerados</title><link>http://msmvps.com/blogs/ffagas/archive/2008/08/05/c-243-mo-crear-atributos-personalizados-para-enumerados.aspx</link><pubDate>Tue, 05 Aug 2008 13:03:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1643496</guid><dc:creator>Francisco X. Fagas</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/ffagas/rsscomments.aspx?PostID=1643496</wfw:commentRss><comments>http://msmvps.com/blogs/ffagas/archive/2008/08/05/c-243-mo-crear-atributos-personalizados-para-enumerados.aspx#comments</comments><description>&lt;p&gt;Los enumerados son listas constantes agrupables que por defecto empiezan en 0 y que una utilidad es que facilitan a nivel de desarrollo evitar que se pasen valores fuera de rango a objetos, o dato basura, evitar escribir c&amp;oacute;digo de validaci&amp;oacute;n del par&amp;aacute;metro que estamos recibiendo, para encontrar m&amp;aacute;s informaci&amp;oacute;n b&amp;aacute;sica sobre enumerados &lt;a href="http://msdn.microsoft.com/en-us/library/sbbt4032(VS.80).aspx"&gt;aqu&amp;iacute;&lt;/a&gt;, pero cuando trabajamos con enumerados puede darse el caso de que necesitemos extraer su valor equivalente en string y no entero, por ejemplo que para si queremos representar en nuestro sistema un objeto WorkFlowType cuyo valor lo debe extraer de MOSS 2007 en espa&amp;ntilde;ol, pues para este caso como entrada y salida de nuestro sistema necesitamos que el enumerado represente a un string, pues para este caso podemos utilizar un atributo personalizable (&lt;span style="font-size:10pt;color:#2b91af;font-family:Courier New;"&gt;ValorString&lt;/span&gt;) para poder representar el enumerado de la siguiente manera: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;[&lt;span style="color:#2b91af;"&gt;Serializable&lt;/span&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;enum&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;WorkFlowType &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;[&lt;span style="color:#2b91af;"&gt;ValorString&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Ninguno&amp;quot;&lt;/span&gt;)] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;Empty, &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;[&lt;span style="color:#2b91af;"&gt;ValorString&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;En Serie&amp;quot;&lt;/span&gt;)] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;Serial, &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;[&lt;span style="color:#2b91af;"&gt;ValorString&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;En Paralelo&amp;quot;&lt;/span&gt;)] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;Parallel &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;"&gt;&lt;span style="font-family:Courier New;"&gt;};&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Para que este c&amp;oacute;digo funcione y el compilador no les retorne un error lo que se debe hacer es escribir una clase que represente a un atributo, para esto la clase debe: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Heredar de la clase &lt;span style="font-size:10pt;color:#2b91af;font-family:Courier New;"&gt;Attribute&lt;/span&gt; del espacio de nombres System. &lt;/li&gt;
&lt;li&gt;Debe contener un campo de tipo &lt;span style="font-size:10pt;color:#0000ff;font-family:Courier New;"&gt;string&lt;/span&gt;, el constructor debe recibir un &lt;span style="font-size:10pt;color:#0000ff;font-family:Courier New;"&gt;string&lt;/span&gt; para inicializar el campo, y una propiedad de s&amp;oacute;lo lectura que retorne el valor que contiene el campo. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La clase completa es: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;[&lt;span style="color:#2b91af;"&gt;Serializable&lt;/span&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;AtributoValorString&lt;/span&gt; : System.&lt;span style="color:#2b91af;"&gt;Attribute &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;#region&lt;/span&gt; Fields &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; _valor; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:Courier New;"&gt;#endregion &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;#region&lt;/span&gt; Constructor &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; AtributoValorString(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; parametro) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;_valor = parametro; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:Courier New;"&gt;#endregion &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;#region&lt;/span&gt; Properties &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; ValorString &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; _valor; } &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:Courier New;"&gt;#endregion &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;}&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;Para finalizar debemos crear un nuevo m&amp;eacute;todo extendido (&lt;a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx"&gt;Extension Method&lt;/a&gt; &amp;ndash; Nueva caracter&amp;iacute;stica de lenguaje C# en VS 2008), no olviden agregar el namespace reflection: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Reflection; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;[&lt;span style="color:#2b91af;"&gt;Serializable&lt;/span&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Utilitarios &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; ObtenerValorString(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Enum&lt;/span&gt; value) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;// Obtiene el tipo &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; type = value.GetType(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;// Obtiene el fieldinfo para este tipo &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#2b91af;"&gt;FieldInfo&lt;/span&gt; fieldInfo = type.GetField(value.ToString()); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;// Obtiene el atributo ValorString &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#2b91af;"&gt;AtributoValorString&lt;/span&gt; [] attribs = fieldInfo.GetCustomAttributes( &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;AtributoValorString&lt;/span&gt;), &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;AtributoValorString&lt;/span&gt;[]; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;// Retorna el primer elemento. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; attribs.Length &amp;gt; 0 ? attribs[0].StringValue : &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;Cuando utilicemos el enumerado ahora veremos que podemos utilizar el m&amp;eacute;todo extendido que acabamos de crear: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:#2b91af;"&gt;WorkFlowType&lt;/span&gt;.Serial.ObtenerValorString()&lt;/span&gt; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1643496" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/MOSS+2007/default.aspx">MOSS 2007</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://msmvps.com/blogs/ffagas/archive/tags/C_2300_/default.aspx">C#</category></item></channel></rss>