<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/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>Haaron Gonzalez : Demo</title><link>http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx</link><description>Etiquetas: Demo</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Comunicando anuncios por correo electrónico con SharePoint Designer 2010</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2012/10/07/comunicando-anuncios-por-correo-electr-243-nico-con-sharepoint-designer-2010.aspx</link><pubDate>Mon, 08 Oct 2012 00:50:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:207048</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=207048</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2012/10/07/comunicando-anuncios-por-correo-electr-243-nico-con-sharepoint-designer-2010.aspx#comments</comments><description>&lt;p align="justify"&gt;El usuario final como siempre sorprendiedonos con nuevos escenarios, sucede que se busca hacer que en vez de mandar un correo electrónico con el enlace a un elemento de lista de anuncios como parte de la opcion de send link o de las alertas, que mejor en el correo electrónico viaje el texto del cuerpo del anuncio. Y sinceramente me pareció un escenario razonable el no querer enlaces en este específico tema de la lista de anuncios. Y bueno la solución para este ejemplo fue crear un flujo de trabajo de lista con una forma de iniciación para solicitarle al usuario capture el grupo o los usuarios a los que quiere hacer llegar vía correo electrónico el anuncio. Aprovecho para hacer mención de las caracteristicas de SharePoint Designer 2010.&lt;/p&gt;  &lt;p&gt;Aquí el ejemplo:&lt;/p&gt;  &lt;p align="justify"&gt;Abrimos nuestro sitio con SharePoint Designer 2010 y seleccionamos la sección de Workflows para proceder a crear un flujo de trabajo de lista asociado a la lista de anuncios, como 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/haarongonzalez.metablogapi/3201.image_5F00_7676CDAD.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7624.image_5F00_thumb_5F00_3A6A8BF8.png" width="640" height="354" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nombramos el flujo de trabajo con los datos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Name: Send Annoucement by Eamil &lt;/li&gt;    &lt;li&gt;Description: Use this option to send anouncement by email &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Una vez dentro del Workflow Designer entonces elegimos la opción de Initiation Form Parameters.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/8015.image_5F00_53C26965.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4863.image_5F00_thumb_5F00_4FC4EF08.png" width="1024" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Usando el asistente de configuración de la forma de iniciación agregamos un campo de tipo persona dando clic en el botón Add, posteriormente especificamos el nombre del campo “Mail Receipients” una descripción y el tipo de campo, aquí tenemos que seleccionar el campo “Person of Group”, esto nos permite elegir a que grupos o usuarios mandaremos el correo electrónico. Posteriormente configuramos el campo especificando que muestre la cuenta, que permita capturar usuarios y grupos, que permita capturar más de un usuario o grupo y listo, damos clic en Finish y después Ok.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6840.image_5F00_2E55239F.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/8407.image_5F00_thumb_5F00_3D4BB6DF.png" width="1024" height="574" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Posteriormente de la lista de acciones disponibles en el flujo elegimos el de Send Email.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/8306.image_5F00_3EAC8759.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4846.image_5F00_thumb_5F00_74CDFFA8.png" width="640" height="428" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Procedemos entonces a configurar la acción de Send Email dando clic en el enlace these users. Esto carga la ventana de configuración de la actividad permitiéndonos entonces definir lo siguiente:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Tomar a los destinatarios de los parámetros de iniciación del flujo para que a estos se les mande el correo electrónico &lt;/li&gt;    &lt;li&gt;Tomar al título del anuncio para que este sea el título del correo &lt;/li&gt;    &lt;li&gt;Tomar al cuerpo del anuncio para que este sea el cuerpo del correo electrónico &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Tomar a los destinatarios de los parámetros de iniciación del flujo para que a estos se les mande el correo electrónico&lt;/h3&gt;  &lt;p align="justify"&gt;Del cuadro de texto “To” o “Para” simplemente seleccionamos el icono de la libreta de direcciones para posteriormente elegir de la ventana de Selección de usuarios. En primer instancia la ventana de sección de usuarios nos permite elegir a cualquier usuario al que queramos mandarle el correo electrónico, de hecho esta ventana es rica en funcionalidad y ofrece opciones adicionales para obtener a los usuarios que nos interesa utiliza, por ejemplo personas o grupos del sitio, el usuario que creo el anuncio y la opción de Workflow lookup for users la cual nos permite buscar de diferentes fuentes de datos o del contexto del flujo de trabajo a los usuarios que necesitemos incluir. En este caso estoy mandando cargar de los parámetros y variables del flujo de trabajo “Workflow variables and parameters” a la variable “Mail recipients” que definimos en la forma de iniciación y además formatear el resultado para que nos regrese el correo electrónico separado por comas. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7115.image_5F00_0F6A75F5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4370.image_5F00_thumb_5F00_46B03B89.png" width="1024" height="556" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Sugiero que te des el tiempo de explorar la ventana de “Lookup for Person of Group” encontraras que es muy rica en funcionalidad y capaz de darte opciones muy útiles sin tener que recurrir a la programación.&lt;/p&gt;  &lt;h3&gt;Tomar al título del anuncio para que este sea el título del correo&lt;/h3&gt;  &lt;p align="justify"&gt;De igual manera del campo “Subject” damos clic en el icono que muestra una función. En este caso se carga otro cuadro de dialogo con funcionalidad muy útil. Se llama Lookup for string y este nos permite elegir del elemento “recordemos que estamos en el contexto de un elemento de lista de anuncios” el campo Title. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2626.image_5F00_00EB65D1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0116.image_5F00_thumb_5F00_28EDEF23.png" width="1024" height="710" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Tomar al cuerpo del anuncio para que este sea el cuerpo del correo electrónico&lt;/h3&gt;  &lt;p align="justify"&gt;En el caso de tomar el cuerpo del anuncio aquí usamos el botón “Add or Change Lookup” que se encuentra ubicado en la parte inferior de la ventana. Este botón también es “Lookup String” con el cual podemos hacer referencia dentro del cuerpo de correo electrónico al cuerpo del elemento del anuncio. Y con esto estaríamos cumpliendo con el requerimiento solicitado.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3835.image_5F00_009B6A77.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3173.image_5F00_thumb_5F00_2FBD3041.png" width="864" height="768" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Podemos ver entonces que es sencillo incluir en el cuerpo del correo electrónico cualquier información que se encuentre dentro de una lista SharePoint. &lt;/p&gt;  &lt;p&gt;Ya para terminar simplemente publicamos el flujo de trabajo &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6505.image_5F00_1D3493F2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5633.image_5F00_thumb_5F00_53C23F36.png" width="1024" height="153" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Este proceso compila en un archivo .xoml toda la configuración de nuestro flujo de trabajo expresada visualmente pero almacenada en forma declarativa. También he de mencionar que en las características iniciales del flujo de trabajo de manera pre determinada el flujo puede será invocado a manualmente por el usuario que estaría enviando el correo electrónico. Lo que no queremos es que se mande de forma automática cuando se da de alta o se edita algún anuncio, si ese fuese el caso, entonces el usar una forma de iniciación no sería la estrategia más adecuada, probablemente en vez de solicitar el llenado manual de los destinatarios, hacer que el flujo mande el correo usando el grupo de los integrantes del sitio o algún otro grupo creado manualmente para este proceso en particular. &lt;/p&gt;  &lt;p align="justify"&gt;Ya para terminar y facilitar el uso de este flujo de trabajo dentro de SharePoint Designer 2010 en la lista de anuncios existe la opción de Custom Action en la cual podemos crear un elemento del menú contextual de la lista que dispare la ejecución del flujo de trabajo recién creado, facilitando la experiencia de uso.&lt;/p&gt;  &lt;p align="justify"&gt;De la barra lateral de SharePonit Designer 2010 seleccionamos la opción de Lists and Libraries, posteriormente damos clic en nuestra lista de Announcements, esto nos lleva a la ventana de resumen de la configuración de nuestra lista y como se puede ver ahí se encuentra la sección de Custom Actions.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1385.image_5F00_4241B891.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7853.image_5F00_thumb_5F00_3537B2B3.png" width="640" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En el botón New damos clic y esto carga la ventana de configuración del Custom Action donde podemos especificar el título y descripción de nuestra acción así como también que va a suceder cuando alguien lo invoque, en este caso iniciar el flujo de trabajo previamente construido sobre el elemento actual.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4572.SNAGHTML520cf98_5F00_39618A78.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SNAGHTML520cf98" border="0" alt="SNAGHTML520cf98" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5661.SNAGHTML520cf98_5F00_thumb_5F00_6CF9D109.png" width="868" height="768" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En la parte inferior de esta ventana inclusive puedes configurar el icono que deseas usar para el esta acción y que será visto en el menú contextual. El resultado es que dentro de los elementos del menú contextual que un elemento de lista tiene aparece el custom action:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5557.image_5F00_7F224C31.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2630.image_5F00_thumb_5F00_3543C481.png" width="1024" height="413" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;También en el Ribbon de la lista de anuncios existe la opción de agregar un botón más, se le llama Quick Step. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4628.image_5F00_1CA40164.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2656.image_5F00_thumb_5F00_5E7AC0E5.png" width="1024" height="225" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A dar clic se carga SharePoint Designer 2010 y una ventana de dialogo donde especificamos que sucederá cuando se le dé clic:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5710.SNAGHTML5228437_5F00_63B981C9.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SNAGHTML5228437" border="0" alt="SNAGHTML5228437" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3821.SNAGHTML5228437_5F00_thumb_5F00_5B090370.png" width="919" height="768" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;De igual manera podemos especificar que icono se utilizara para este botón, en mi caso, subí el icono a la librería de SiteAssets.&lt;/p&gt;  &lt;h3&gt;El resultado&lt;/h3&gt;  &lt;p&gt;El resultado es:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1134.image_5F00_5DBE9296.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5165.image_5F00_thumb_5F00_02DBDD03.png" width="1024" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Agregamos un nuevo elemento:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2287.image_5F00_37B8BC73.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4118.image_5F00_thumb_5F00_769A1741.png" width="844" height="768" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Despues lo seleccionamos y damos clic sobre nuestro flamante boton en el Ribbon:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4454.image_5F00_62905EDE.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4263.image_5F00_thumb_5F00_0498BAA5.png" width="1024" height="292" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Esto carga la forma de iniciacion del flujo de trabajo y procedemos a especificar el usuario o grupo que recibira la informacion por correo electronico, en este caso elegi un grupo.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4544.image_5F00_5DBA7E97.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3060.image_5F00_thumb_5F00_7B4C5996.png" width="1024" height="271" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Y al dar clic en Start el flujo de trabajo se ejecuta y la accion de Send Email hace su trabajo. Es importante hacer mención que tambien con SharePoint Designer 2010 podemos editar la forma de iniciación generada por el flujo de trabajo para personalizar el texto de los botones de la forma y/o agregar algun icono o logotipo de la empresa. &lt;/p&gt;  &lt;p&gt;El resultado es el correo en el Outlook:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2211.image_5F00_7DC56587.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6433.image_5F00_thumb_5F00_6FA6768A.png" width="923" height="768" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Espero que al leer esta lineas encuentres que SharePoint Designer 2010 ha sido diseñado para rapidamente dar soluciones a necesidades de personalización que se requieran en SharePoint. &lt;/p&gt;  &lt;p&gt;Saludos!&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=207048" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Productividad/default.aspx">Productividad</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+Designer+2010/default.aspx">SharePoint Designer 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Soporte/default.aspx">Soporte</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Tecnicas/default.aspx">Tecnicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Practicas/default.aspx">Practicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Requerimientos/default.aspx">Requerimientos</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Workflow+Designer/default.aspx">Workflow Designer</category></item><item><title>Instalando Granja de Servidores SharePoint 2010 Small Farm (3-Tier)</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2012/01/24/instalando-granja-de-servidores-sharepoint-2010.aspx</link><pubDate>Tue, 24 Jan 2012 09:17:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:202946</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=202946</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2012/01/24/instalando-granja-de-servidores-sharepoint-2010.aspx#comments</comments><description>&lt;p&gt;Para un programador SharePoint es importante conocer la arquitectura de la plataforma y en ese sentido realizar un proceso de instalaci&amp;oacute;n de una granja SharePoint es un deber. En esta ocasi&amp;oacute;n quiero compartir como lograr en una topolog&amp;iacute;a llamada Small Farm (Three Tier). &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3821.clip_5F00_image001_5F00_2D3903CC.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="clip_image001" alt="clip_image001" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5857.clip_5F00_image001_5F00_thumb_5F00_43ABA253.png" height="293" border="0" width="640" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;B&amp;aacute;sicamente tenemos un software (Network Load Balancing) para balancear y distribuir la carga entre dos servidores Web Front End (&lt;b&gt;litwarewfe1&lt;/b&gt; y &lt;b&gt;litwarewfe2&lt;/b&gt;) y tendremos un solo servidor de aplicaciones (&lt;b&gt;litwareapp&lt;/b&gt;) con la mayor&amp;iacute;a de las aplicaciones de servicio y la herramienta central de administraci&amp;oacute;n configurada, todo el contenido y la configuraci&amp;oacute;n ser&amp;aacute; almacenada sobre un solo servidor de base de datos SQL Server (&lt;b&gt;litwaredb&lt;/b&gt;).&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0080ff;font-size:small;"&gt;&lt;i&gt;Network Load Balancing en Windows Server 2008 R2 para WFE de SharePoint 2010&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:647708fd-61be-4d96-a9b7-28670d3df00d" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=rw6ysVOyIvo&amp;amp;feature=youtube_gdata_player" target="_new"&gt;&lt;img src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7331.videobd82ec11efb8_5F00_210763D8.jpg" style="border-style:none;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#0080ff;font-size:small;"&gt;&lt;i&gt;Configurando Granja de Servidores SharePoint 2010&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:d18db3aa-ddae-47e2-a28b-4923edddedcb" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=6fJjfaNk2qg&amp;amp;feature=youtube_gdata_player" target="_new"&gt;&lt;img src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2476.videoe8e52142ca45_5F00_0EFB204B.jpg" style="border-style:none;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#0080ff;font-size:small;"&gt;&lt;i&gt;Configurando Granja de Servidores SharePoint 2010 con PowerShell&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:c9ac4bea-42d3-44b3-81d4-f4bf8c5c69a7" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=8EAUMH3SqBc&amp;amp;feature=youtube_gdata_player" target="_new"&gt;&lt;img src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7127.video08f929820c70_5F00_5FE8BEA6.jpg" style="border-style:none;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202946" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Dise_26002300_241_3B00_o/default.aspx">Dise&amp;#241;o</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Configuracion/default.aspx">Configuracion</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Soporte/default.aspx">Soporte</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Tecnicas/default.aspx">Tecnicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WFE/default.aspx">WFE</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/NLB/default.aspx">NLB</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/DNS/default.aspx">DNS</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Training/default.aspx">Training</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Practicas/default.aspx">Practicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Central+Administration/default.aspx">Central Administration</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/PowerShell/default.aspx">PowerShell</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/My+Site/default.aspx">My Site</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/IIS+7/default.aspx">IIS 7</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+Admin/default.aspx">SharePoint Admin</category></item><item><title>Configurando un cluster de dos nodos balanceados para WFE de SharePoint</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2012/01/19/configurando-un-cluster-de-dos-nodos-balanceados-para-wfe-de-sharepoint.aspx</link><pubDate>Thu, 19 Jan 2012 21:10:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:202890</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=202890</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2012/01/19/configurando-un-cluster-de-dos-nodos-balanceados-para-wfe-de-sharepoint.aspx#comments</comments><description>&lt;p&gt;En este post vemos como configurar un cluster de dos servidores utilizando Network Load Balancing de Windows Server 2008 R2. En particular este cluster nos puede mejorar el desempeño significativamente. Con esta alternativa de configuración a nivel software se puede dividir la demanda o peticiones en más de un servidor para que en conjunto respondan como uno solo. Particularmente esta configuración se creó para una granja de servidores web front end de SharePoint 2010 en donde dos servidores web estarán recibiendo las peticiones de usuario vía dirección URL.&lt;/p&gt;  &lt;p&gt;Lo requisitos para configurar un cluster son:&lt;/p&gt;  &lt;p&gt;Agregar la característica de Windows llamada Network Load Balancing en cada uno de los nodos que conformaran el cluster&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7357.clip_5F00_image002_5F00_3F6781C5.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4812.clip_5F00_image002_5F00_thumb_5F00_68AEA3F6.png" width="628" height="464" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Asegurarse que cada nodo del cluster deban de tener un IP dedicado o fijo ya que NLB no puede trabajar con IPs dinámicas generadas por un servicio DHCP&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1602.clip_5F00_image003_5F00_22218E21.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image003" border="0" alt="clip_image003" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7382.clip_5F00_image003_5F00_thumb_5F00_3E6ED041.png" width="435" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;El cluster tendrá un IP virtual que recibirá las peticiones y estas serán transferidas de forma automática a cualquier nodo que conforma el cluster para responder la petición&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3580.clip_5F00_image005_5F00_0CB3B2EC.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image005" border="0" alt="clip_image005" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0310.clip_5F00_image005_5F00_thumb_5F00_046F6788.jpg" width="644" height="367" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Probar con ping que sucede cuando querevemos ver que responde el nuevo host.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6406.clip_5F00_image007_5F00_13C2C997.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image007" border="0" alt="clip_image007" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1581.clip_5F00_image007_5F00_thumb_5F00_6926E8B9.jpg" width="644" height="301" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Existen otras alternativas tecnológicas para crear y gestionar clusters tanto a nivel software como hardware. &lt;/p&gt;  &lt;p&gt;Los pasos para la configuración de un cluster son:&lt;/p&gt;  &lt;p&gt;1. En primer nodo crear el cluster y agregar el primer nodo&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6354.clip_5F00_image009_5F00_5B742CB1.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image009" border="0" alt="clip_image009" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3660.clip_5F00_image009_5F00_thumb_5F00_393C212B.jpg" width="644" height="472" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. En el segundo nodo conectarse a cluster existente y agregar el host al cluster&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3568.clip_5F00_image011_5F00_02DAD34F.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image011" border="0" alt="clip_image011" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6644.clip_5F00_image011_5F00_thumb_5F00_2E3EF449.jpg" width="644" height="467" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Probamos un ping para ver que responde:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5531.clip_5F00_image013_5F00_1030C088.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image013" border="0" alt="clip_image013" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1256.clip_5F00_image013_5F00_thumb_5F00_1864E61F.jpg" width="644" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Esta tecnica tambien funciona para cualquier desarrollo web que se hospeda sobre servidores Windows. :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;NOTICIA: Aqui lo explicado anteriormente en vivo y a todo color en un video que subi a mi canal de Youtube al cual te puedes suscribir aqui: &lt;a title="https://www.youtube.com/haarongo" href="https://www.youtube.com/haarongo"&gt;https://www.youtube.com/haarongo&lt;/a&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:43dfd71f-5891-49cf-adb7-89f80a2e8367" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=rw6ysVOyIvo&amp;amp;feature=youtube_gdata_player" target="_new"&gt;&lt;img src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0726.video0efca3a3de2b_5F00_6EBEC654.jpg" style="border-style:none;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202890" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Configuracion/default.aspx">Configuracion</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Soporte/default.aspx">Soporte</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WFE/default.aspx">WFE</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/NLB/default.aspx">NLB</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/DNS/default.aspx">DNS</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/FQDN/default.aspx">FQDN</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Practicas/default.aspx">Practicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Windows+Server/default.aspx">Windows Server</category></item><item><title>Enviando un correo al jefe inmediato en un flujo de trabajo SharePoint Designer 2010</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2011/09/27/enviando-un-correo-al-jefe-inmediato-en-un-flujo-de-trabajo-sharepoint-designer-2010.aspx</link><pubDate>Wed, 28 Sep 2011 06:26:45 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:200783</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=200783</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2011/09/27/enviando-un-correo-al-jefe-inmediato-en-un-flujo-de-trabajo-sharepoint-designer-2010.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;From:&lt;/b&gt; Haarón González [mailto:haarongonzalez@mvps.org]     &lt;br /&gt;&lt;b&gt;Sent:&lt;/b&gt; Tuesday, September 27, 2011 8:16 AM    &lt;br /&gt;&lt;b&gt;To:&lt;/b&gt; Privado    &lt;br /&gt;&lt;b&gt;Subject:&lt;/b&gt; RE: Consulta&lt;/p&gt;  &lt;p&gt;Estimado Privado, tanto SharePoint 2007 como 2010 cuentan con una aplicación específica para personalizar el producto, se llama SharePoint Designer 2007 o 2010, en ambos casos es sin costo y la peudes descargar desde &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=16573"&gt;aqui&lt;/a&gt;. Con esta herramienta podemos personalizar el comportamiento de nuestros sitios SharePoint sin codificar o instalar algún otro componente. Claro que tiene sus ventajas y desventajas pero &lt;a href="http://office.microsoft.com/es-mx/sharepoint-designer-help/introduccion-a-sharepoint-designer-2010-HA010370548.aspx"&gt;aquí&lt;/a&gt; puedes encontrar más información al respecto.&lt;/p&gt;  &lt;p&gt;Dentro de las características de este producto existe el Workflow Designer. Básicamente cargamos SharePoint Designer 2010 y abrimos el sitio que deseamos personalizar. Navegamos en la sección de Site Object para elegir Workflow. Esto carga el Ribbon específico para flujos de trabajo y muestra los tipos de flujo que se pueden crear y algunos existentes.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/8507.image_5F00_4B3FB706.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1727.image_5F00_thumb_5F00_7DFF97AD.png" width="644" height="346" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;De acuerdo a tu pregunta y en tu caso muy particular estaremos creando un List Workflow donde deberás elegir a que lista o biblioteca de documentos deseas personalizar.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4403.image_5F00_55045CD7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/8308.image_5F00_thumb_5F00_6125D6FE.png" width="229" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Deberás especificar el nombre y descripción de tu flujo de trabajo y al dar Ok, se cargara a Workflow Designer y sus correspondientes opciones dentro del Ribbon.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4478.image_5F00_5ED92875.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2526.image_5F00_thumb_5F00_18B84595.png" width="644" height="331" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;La naturaleza de construcción de un flujo de trabajo radica en la noción de:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Steps (Pasos del flujo de trabajo): &lt;/li&gt;    &lt;li&gt;Conditions (Condiciones que evalúan algo)&lt;/li&gt;    &lt;li&gt;Actions (Acciones que se ejecutan cuando estas condiciones se cumplen)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;La manera en la que esto funciona es que un paso (Step) agrupa una serie de condiciones (Conditions) y acciones (Actions) que se ejecutan en un determinado momento, es posible crear más de un paso y ejecutarlos en paralelo, sin embargo, en este momento no es tu caso. Dentro del bloque de Step 1 agregamos una o más condiciones usando el Ribbon. SharePoint Designer 2010 nos permite utilizar las condiciones pre fabricadas en el producto.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4520.image_5F00_07A3F1E5.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7610.image_5F00_thumb_5F00_3F0A0313.png" width="336" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Sin embargo, como programador tu puedes crear las tuyas propias utilizando algunas de las clases de Workflow Foundation ver &lt;a href="http://www.haarongonzalez.com.mx/wfday/sesion2/replaymeeting.htm"&gt;WebCast Construyendo Flujos de Trabajo en SharePoint 2010 utilizando SharePoint Designer 2010&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Claro que el Step no necesariamente requiere una condición para ejecutarse. &lt;/p&gt;  &lt;p&gt;A continuación una vez que agregamos las condiciones que requerimos evaluar, procedemos a agregar las acciones que básicamente reflejan las reglas de negocio que necesitamos contemplar en nuestra lista o biblioteca. Aquí lo interesante es que también se muestran todas las acciones disponibles en SharePoint 2010 y categorizadas por el tipo de acción. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6787.image_5F00_52873CE7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0647.image_5F00_thumb_5F00_5BB3525B.png" width="444" height="772" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Aquí quiero hacer notar que existe una acción llamada &lt;b&gt;Lookup Manager of a User&lt;/b&gt; que obtiene al usuario que se tiene configurado como jefe directo en el directorio activo. Por lo tanto, creo que es muy factible la construcción de tu flujo de trabajo que mencionas en tu correo. &lt;/p&gt;  &lt;p&gt;Básicamente lo que harás es invocar la acción Lookup Manager of a User configurando la propiedad “this user” para que obtenga el correo electrónico del usuario que registro o inicio el flujo. En este caso ese dato existe en los campos (fields) del elemento actual (Current Item) que representa el documento o elemento de lista en cuestión. Es importante mencionar que el resultado de la acción es guardado en la variable Manager que posteriormente otra actividad puede utilizar.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6523.image_5F00_4A031BF6.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/8081.image_5F00_thumb_5F00_433FECA6.png" width="1028" height="736" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Después agregas otra actividad llamada Send Email y configuras a quien se le mandara el correo electrónico. En este caso usaremos la variable Manager que contiene el correo electrónico que la acción FInd Manager genero con base el usuario en cuestión.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2475.image_5F00_437BAE34.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0601.image_5F00_thumb_5F00_71853887.png" width="821" height="772" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Das clic en Ok y capturas el título y cuerpo del correo electrónico que requieres enviar al jefe. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0880.image_5F00_054E59B7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6242.image_5F00_thumb_5F00_34ACA2B6.png" width="1028" height="533" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Después das clic en Ok y guardas el flujo de trabajo. Seleccionas Publish y listo ya puedes probar el comportamiento de tu flujo de trabajo. &lt;/p&gt;  &lt;p&gt;Mucho más detalle aquí: &lt;a href="http://office.microsoft.com/en-us/sharepoint-designer-help/workflow-conditions-in-sharepoint-designer-2010-a-quick-reference-guide-HA010376962.aspx"&gt;http://office.microsoft.com/en-us/sharepoint-designer-help/workflow-conditions-in-sharepoint-designer-2010-a-quick-reference-guide-HA010376962.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Bien espero que encuentres la solución a tu escenario y a tus órdenes cualquier pregunta que tengas.&lt;/p&gt;  &lt;p&gt;Saludos&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;HG&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;De: &lt;/b&gt;Privado    &lt;br /&gt;&lt;b&gt;Enviado: &lt;/b&gt;lunes, 26 de septiembre de 2011 09:44 a.m.    &lt;br /&gt;&lt;b&gt;Para: &lt;/b&gt;Haaron Gonzalez    &lt;br /&gt;&lt;b&gt;Asunto: &lt;/b&gt;Consulta&lt;/p&gt;  &lt;p&gt;Hola buenos días desde Colombia.. &lt;/p&gt;  &lt;p&gt;Haaron quería preguntarte algo, estoy haciendo un flujo de trabajo con SharePoint 2010 pero requiero que dependiendo de la persona que ejecute el flujo de trabajo le envié un correo al el jefe inmediato.&lt;/p&gt;  &lt;p&gt;Por ejemplo el empleado 1 tiene como jefe a Jefe 1&lt;/p&gt;  &lt;p&gt;Y empleado 2 tiene como jefe el jefe 2&lt;/p&gt;  &lt;p&gt;Entonces si el empleado 1 ejecuta el flujo, le debe enviar un correo a el jefe 1, de igual manera &lt;/p&gt;  &lt;p&gt;Si el empleado 2 ejecuta el flujo, le debe enviar un correo a el jefe 2.&lt;/p&gt;  &lt;p&gt;Esto no sé cómo hacer pues SharePoint le envía un mensaje a alguien puntual.. puedo hacer esto?? &lt;/p&gt;  &lt;p&gt;Gracias por tu respuesta&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=200783" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+Designer+2010/default.aspx">SharePoint Designer 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Soporte/default.aspx">Soporte</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Tecnicas/default.aspx">Tecnicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+Designer/default.aspx">SharePoint Designer</category></item><item><title>Consumiendo Servicios REST de .NET y SharePoint en Hojas de Calculo de Excel 2010</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2011/08/29/consumiendo-servicios-rest-de-net-y-sharepoint-en-hojas-de-calculo-de-excel-2010.aspx</link><pubDate>Mon, 29 Aug 2011 15:45:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:200260</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=200260</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2011/08/29/consumiendo-servicios-rest-de-net-y-sharepoint-en-hojas-de-calculo-de-excel-2010.aspx#comments</comments><description>&lt;p&gt;Aquí un video mas de casi media hora de duración sobre como consumir servicios REST desarrollados en .NET y también nativos de SharePoint 2010. Quiero estresar el tema del soporte que se tiene en el desarrollo de aplicaciones cliente para facilitar la vinculación a datos. Usamos las características de vinculación Out Of The Box de Visual Studio 2010&amp;#160; para poder tener una comunicación bidireccional entre un Add In de Excel 2010 y el servicio.&lt;/p&gt;  &lt;p&gt;Basicamente, usamos una simple tabla de excel para obtener y editar datos.&lt;/p&gt;  &lt;br /&gt;&lt;iframe height="345" src="http://www.youtube.com/embed/Wc50HjnxwXM" frameborder="0" width="420"&gt;&lt;/iframe&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=200260" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WCF/default.aspx">WCF</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Tools/default.aspx">Tools</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Practicas/default.aspx">Practicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/REST/default.aspx">REST</category></item><item><title>Construcción de Interface REST para acceso a datos via HTTP desde Word 2010</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2011/08/25/construcci-243-n-de-interface-rest-para-acceso-a-datos-via-http-desde-word-2010.aspx</link><pubDate>Thu, 25 Aug 2011 08:07:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:199958</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=199958</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2011/08/25/construcci-243-n-de-interface-rest-para-acceso-a-datos-via-http-desde-word-2010.aspx#comments</comments><description>&lt;p&gt;En esta ocasi&amp;oacute;n tuve la oportunidad de subir una demostraci&amp;oacute;n un poco extensa sobre construcci&amp;oacute;n de servicio RESTFull WCF invocado desde un cliente de Office Word 2010. El poder y simplicidad de las herramientas de desarrollo es algo que se puede ver aqui.&lt;/p&gt;
&lt;p&gt;&lt;iframe height="345" width="420" frameborder="0" src="http://www.youtube.com/embed/50Fentd7JYg"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Hope it helps!&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=199958" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Office/default.aspx">Office</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WCF/default.aspx">WCF</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Code/default.aspx">Code</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Office+2010/default.aspx">Office 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+4.0/default.aspx">.NET 4.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+Framework+4.0/default.aspx">.NET Framework 4.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/DNS/default.aspx">DNS</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/REST/default.aspx">REST</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WCF+Data+Service/default.aspx">WCF Data Service</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category></item><item><title>Programación ASP.NET en WebParts de SharePoint</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2011/07/06/programaci-243-n-asp-net-en-webparts-de-sharepoint.aspx</link><pubDate>Thu, 07 Jul 2011 00:12:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:197347</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=197347</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2011/07/06/programaci-243-n-asp-net-en-webparts-de-sharepoint.aspx#comments</comments><description>&lt;p&gt;Si eres un de desarrollador ASP.NET que se está iniciando en desarrollo SharePoint este ejemplo puede ser de utilidad. Básicamente, usaremos un enfoque de desarrollo de WebParts basado en el uso de Web User Controls de ASP.NET 2.0.&lt;/p&gt;  &lt;p&gt;Antes que nada utilizaremos las siguientes herramientas:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Visual Studio 2008 Professional &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=841" target="_blank"&gt;Visual Studio 2008 Extensions for SharePoint&lt;/a&gt; (VSeWSS 1.2 o 1.3) &lt;/li&gt;    &lt;li&gt;Windows SharePoint Services 3.0 o Microsoft Office SharePoint Server 2007 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Dentro de nuestro servidor de desarrollo SharePoint cargamos Visual Studio 2008 y elegimos la creación de un proyecto SharePoint en blanco, este proyecto lo nombraremos ASPNETWebPart.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1108.clip_5F00_image002_5F00_5EBC6F5C.gif"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4452.clip_5F00_image002_5F00_thumb_5F00_168EB380.gif" width="780" height="538" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Especificaremos que el nivel de confianza de esta solución SharePoint sea Full Trust y la razón es que usaremos un método Page.LoadControl que requiere de permisos elevados para ejecutarse, me parece que la razón es porque este método lee de la ruta de archivos SharePoint “12 hive” y para ello requiere que el proceso w3wpg.exe solicite los permisos necesarios.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0576.clip_5F00_image004_5F00_43A3A04E.gif"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image004" border="0" alt="clip_image004" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6443.clip_5F00_image004_5F00_thumb_5F00_0E2ADE29.gif" width="451" height="278" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Usando la solución generada por Visual Studio 2008 dentro del Solution Explorer agregamos un nuevo Empty Web Site de ASP.NET llamado ASPNETWebPArtsWebSite ubicándolo en la misma carpeta creada por nuestro proyecto anterior.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2148.clip_5F00_image006_5F00_4D8891B9.gif"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image006" border="0" alt="clip_image006" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5314.clip_5F00_image006_5F00_thumb_5F00_3AD39802.gif" width="780" height="516" /&gt;&lt;/a&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Dentro de nuestro proyecto ASPNETWebPartWebSite agregamos un &lt;b&gt;Web User Control&lt;/b&gt; llamado ASPNETWebUserControl y es muy importante que no deseleccionemos el cuadro de verificación &lt;b&gt;Place Code in separate file.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3107.clip_5F00_image008_5F00_39FB3218.gif"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image008" border="0" alt="clip_image008" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1452.clip_5F00_image008_5F00_thumb_5F00_04163CFE.gif" width="780" height="525" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Esto nos crea un simple archivo con extensión .ascx dentro de nuestro proyecto ASP.NET. A estas alturas podremos realizar cualquier funcionalidad ASP.NET. Solo hay que asegurarnos de no generar dependencias a otras carpetas como App_Code, tratemos de generar todo el código y funcionalidad sobre el Web User Control. En mi caso usare las características de vinculación de controles de ASP.NET para crear el más humilde de los GridView de ASP.NET. Podemos crear una página Defaullt.aspx para probar el funcionamiento del mismo. A continuación agregare un cuadro de texto , un botón y un label.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4628.clip_5F00_image010_5F00_4A26FA11.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image010" border="0" alt="clip_image010" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2500.clip_5F00_image010_5F00_thumb_5F00_09187AAD.jpg" width="784" height="517" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;El resultado es un código Markup que podría tener sin duda código C#. En la sección de Script runat=”Server” estarían los eventos disparados por los controles de nuestro Web User Control. Solo que para propósitos de este ejemplo quiero hacer que los eventos sean disparados desde un WebPart de SharePoint y no necesariamente desde aquí.&lt;/p&gt;  &lt;p&gt;A continuación en nuestro proyecto SharePoint agregamos un elemento de tipo Template, el cual nos creara un archivo dentro de la ruta interna de archivos de SharePoint o más conocida como 12 hive “C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6646.clip_5F00_image012_5F00_40EABED0.gif"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image012" border="0" alt="clip_image012" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6574.clip_5F00_image012_5F00_thumb_5F00_4731955E.gif" width="780" height="481" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Eliminamos el archivo generado TemplateFile.txt y agregamos la carpeta CONTROLTEMPLATES y dentro la carpeta ASPNETWebParts. Esto permite incluir en nuesdttro paquete de deployment generado por nuestro proyecto SharePoint una nueva carpeta que será aprovisionada de forma confiable en la ruta 12 hive de cada Web Front End de la granja SharePoint. Agregara una nueva carpeta llamada ASPNETWebParts. Dentro de esta carpeta agregaremos como elemento existente nuestro archivo .ascx. El resultado es algo asi:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6012.clip_5F00_image014_5F00_2D5D5F2F.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image014" border="0" alt="clip_image014" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3060.clip_5F00_image014_5F00_thumb_5F00_3AC37235.jpg" width="376" height="282" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ya casi terminamos, a continuación agregamos el código de un WebPart de SharePoint que nos permitirá cargar en tiempo de ejecución el .ascx recién desarrollado. Dentro de nuestro proyecto ASPNETWebPart damos clic derecho y agregamos un nuevo elemento de tipo Web Part bajo el nombre ASPNETWebPart. En realidad puede ser cualquier nombre.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0160.clip_5F00_image016_5F00_4C33D30D.gif"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image016" border="0" alt="clip_image016" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4478.clip_5F00_image016_5F00_thumb_5F00_5DA433E5.gif" width="780" height="481" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Abrimos el código de nuestro WebPart y agregaremos lo siguiente:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Una variable miembro de tipo UserControl, esta se utilizara como un placeholder de todo el ASPNETWebUserControl.ascx. &lt;/li&gt;    &lt;li&gt;Sobre escribimos el método Render para escribir en el flujo de salida de nuestro WebPart el contenido del WebUserControl. &lt;/li&gt;    &lt;li&gt;Múltiples variables miembro que representan cada uno de los controles que existen en nuestro archivo ASPNETWebUserControl.ascx &lt;/li&gt;    &lt;li&gt;En el evento CreateChaldControls hacemos una instancia de UserControl mediante Page.LoadControl y de cada uno de los controles; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Básicamente podremos tener el control de la funcionalidad desde el WebPart y esto facilita el hacer uso del modelo de objetos de SharePoint para leer datos de otras listas o hacer querys que podamos usar para después presentarlos en el Web User Control. &lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;using System;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;using System.Runtime.InteropServices;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;using System.Web.UI;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;using System.Web.UI.WebControls;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;using System.Web.UI.WebControls.WebParts;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;using System.Xml.Serialization;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;using Microsoft.SharePoint;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;using Microsoft.SharePoint.WebControls;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;using Microsoft.SharePoint.WebPartPages;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;namespace ASPNETWebPart&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;[Guid(&amp;quot;7625d718-fb33-4bbc-b05f-2f1ff0dd4a88&amp;quot;)]&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;public class ASPNETWebPart : System.Web.UI.WebControls.WebParts.WebPart&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;public ASPNETWebPart()&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;this.ExportMode = WebPartExportMode.All;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;protected override void Render(HtmlTextWriter writer)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;this.ascxControl.RenderControl(writer);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;UserControl ascxControl;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;Button button1;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;TextBox textbox1;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;Label label1;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;GridView gridView1;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;protected override void CreateChildControls()&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;base.CreateChildControls();&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;ascxControl = (UserControl)Page.LoadControl(@&amp;quot;/_controltemplates/ASPNETWebParts/ASPNETWebUserControl.ascx&amp;quot;);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;button1 = (Button)this.ascxControl.FindControl(&amp;quot;Button1&amp;quot;);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;textbox1 = (TextBox)this.ascxControl.FindControl(&amp;quot;TextBox1&amp;quot;);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;label1 = (Label)this.ascxControl.FindControl(&amp;quot;Label1&amp;quot;);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;gridView1 = (GridView)this.ascxControl.FindControl(&amp;quot;GridView1&amp;quot;);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;button1.Click += new EventHandler(button1_Click);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;this.Controls.Add(ascxControl);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;void button1_Click(object sender, EventArgs e)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;label1.Text = textbox1.Text;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="4" face="Cordia New"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;El resultado:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6471.clip_5F00_image018_5F00_1D01E776.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image018" border="0" alt="clip_image018" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6557.clip_5F00_image018_5F00_thumb_5F00_116C2A37.jpg" width="380" height="202" /&gt;&lt;/a&gt;&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=197347" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Code/default.aspx">Code</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+2.0/default.aspx">.NET 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2007/default.aspx">SharePoint 2007</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/ASP.NET+2.0/default.aspx">ASP.NET 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Issues/default.aspx">Issues</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Soporte/default.aspx">Soporte</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS/default.aspx">WSS</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Practicas/default.aspx">Practicas</category></item><item><title>Configurando acceso anónimo y restringido a una Extranet de SharePoint 2007 en 30 minutos</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2011/05/18/configurando-acceso-an-243-nimo-y-restringido-a-una-extranet-de-sharepoint-2007-en-30-minutos.aspx</link><pubDate>Thu, 19 May 2011 03:44:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:194560</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=194560</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2011/05/18/configurando-acceso-an-243-nimo-y-restringido-a-una-extranet-de-sharepoint-2007-en-30-minutos.aspx#comments</comments><description>&lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px;" title="ahorrar_en_proveedores_articulo_portrait" alt="ahorrar_en_proveedores_articulo_portrait" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3716.ahorrar_5F00_en_5F00_proveedores_5F00_articulo_5F00_portrait_5F00_5A5E372A.jpg" align="right" border="0" height="240" width="226" /&gt;Continuando con el tema de la &lt;a href="http://geeks.ms/blogs/haarongonzalez/archive/2011/05/13/intranet-extranet-de-sharepoint-en-40-minutos.aspx"&gt;Intranet-Extranet configurada aqu&amp;iacute;&lt;/a&gt;, me di a la tarea de ac&amp;eacute;rcame al siguiente reto una vez que enfrentamos un escenario de extranet. Este reto consiste en ofrecer a los usuarios externos alg&amp;uacute;n mecanismo de registro y de gesti&amp;oacute;n de perfiles. En este video vemos como configurar el acceso an&amp;oacute;nimo en la zona de Extranet, vemos como utilizando SharePoint Designer 2007 podemos personalizar p&amp;aacute;ginas que hagan uso de controles de servidor de ASP.NET 2.0 y de WebParts de SharePoint. &lt;/p&gt;
&lt;p&gt;Adicional vemos como romper con la herencia de permisos para poder contar con porciones de contenido privadas y p&amp;uacute;blicas. Las p&amp;uacute;blicas, son p&amp;aacute;ginas de registro y de inicio de sesi&amp;oacute;n, las privadas son p&amp;aacute;ginas restringidas que muestran mediante WebParts listas personalizadas configuradas especialmente. &lt;/p&gt;
&lt;p&gt;Dicho lo anterior, esto permite ofrecer un mecanismo para restringir el acceso a ciertas listas y solo hasta que el usuario se registre, alguien con permisos elevados desde la Intranet otorgue el rol &amp;ldquo;Extranet&amp;rdquo; al usuario en cuesti&amp;oacute;n (esto permite contar con un proceso de validaci&amp;oacute;n del usuario antes de darle acceso a cualquier contenido restringido) este podr&amp;iacute;a acceder a subir la informaci&amp;oacute;n requerida. &lt;/p&gt;
&lt;p&gt;Adicional, vemos como configurar una lista personalizada de SharePoint para que la informaci&amp;oacute;n que el usuario externo aporte sea visible solo para &amp;eacute;l y para cualquier usuario de la Intranet, permitiendo con esto aplicar algunas otras funcionalidades de SharePoint para colaboraci&amp;oacute;n o seguimiento interno por parte de empleados de la organizaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;El ejemplo se basa en un escenario de extranet para proveedores donde estos pueden subir documentaci&amp;oacute;n e informaci&amp;oacute;n de negocio que permita a la empresa iniciar con los tr&amp;aacute;mites necesarios para darlo de alta como proveedor. Adicional, este ejemplo podr&amp;iacute;a utilizarse como un mecanismo para concurso de RFPs o para recopilaci&amp;oacute;n de informaci&amp;oacute;n provista por actores externos a la empresa pero que participan en la cadena de valor.&lt;/p&gt;
&lt;p&gt;Espero sea de utilidad, est&amp;aacute; por dem&amp;aacute;s decir que este es un ejemplo de tan solo 30 minutos que ilustra conceptos y aspectos tecnol&amp;oacute;gicos que pudiesen acercarse a una soluci&amp;oacute;n. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;iframe src="http://www.youtube.com/embed/oRR5qXr6mhQ" frameborder="0" height="349" width="425"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Utilizar estos consejos es bajo tu propio riesgo, explora, aprende y comparte!.&lt;/p&gt;
&lt;p&gt;HG &lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=194560" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+2.0/default.aspx">.NET 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WebPart/default.aspx">WebPart</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2007/default.aspx">SharePoint 2007</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+Framework+2.0/default.aspx">.NET Framework 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/ASP.NET+2.0/default.aspx">ASP.NET 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Configuracion/default.aspx">Configuracion</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Tecnicas/default.aspx">Tecnicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Web/default.aspx">Web</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/FBA/default.aspx">FBA</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+Designer/default.aspx">SharePoint Designer</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+Designer+2007/default.aspx">SharePoint Designer 2007</category></item><item><title>Intranet-extranet de SharePoint en 40 minutos</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2011/05/13/intranet-extranet-de-sharepoint-en-40-minutos.aspx</link><pubDate>Fri, 13 May 2011 20:39:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:194177</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=194177</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2011/05/13/intranet-extranet-de-sharepoint-en-40-minutos.aspx#comments</comments><description>&lt;p&gt;En las &amp;uacute;ltimas semanas colegas programadores que no conocen SharePoint 2007 se acercan para preguntar y evaluar si SharePoint puede dar una soluci&amp;oacute;n aceptable para escenarios donde usuarios externos (fuera del directorio activo) a la organizaci&amp;oacute;n colaboren con usuarios internos (dentro del directorio activo) en alg&amp;uacute;n proceso de negocio relevante para la organizaci&amp;oacute;n. &lt;/p&gt;
&lt;p&gt;Afortunadamente SharePoint 2007 fue construido utilizando .NET Framework 2.0/3.0 y sobre ASP.NET 2.0 por lo tanto las caracter&amp;iacute;sticas que cualquier programador ASP.NET 2.0 conoce pr&amp;aacute;cticamente las tenemos disponibles en SharePoint 2007, aunque esto no necesariamente aplica para la experiencia de desarrollo &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-sadsmile" alt="Sad smile" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6470.wlEmoticon_2D00_sadsmile_5F00_5D554BE9.png" /&gt;.&lt;/p&gt;
&lt;p&gt;Dicho lo anterior, tuve un par de reuniones explicando como s&amp;iacute; SharePoint 2007 podr&amp;iacute;a habilitar el escenario mencionado, sin embargo, por m&amp;aacute;s que lo explico y lo justifico, no hay mejor opci&amp;oacute;n que demostrarlo. Es por eso que me di a la tarea de grabar un video de c&amp;oacute;mo configurar una Intranet que hace uso de directorio activo como su fuente de credenciales de usuario y Extranet que hace uso Membership y Role Providers de ASP.NET 2.0 para gestionar usuarios en bases de datos SQL utilizando las caracter&amp;iacute;sticas de Form Base Authentication. En el proceso podran visualizar como la Herramienta Central de Administracion de SharePoint aprovisiona base de datos de contenido, web sites de IIS y application pool. &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4276.wlEmoticon_2D00_smile_5F00_33157834.png" /&gt;&lt;/p&gt;
&lt;p&gt;
&lt;iframe src="http://www.youtube.com/embed/AKGIKJ1QpN4" frameborder="0" height="349" width="425"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;NOTA: Es muy importante mencionar que ninguna intranet-extranet que se utilice empresarialmente en escenarios de producci&amp;oacute;n quedara configurada en 40 minutos, hay aspectos de planeaci&amp;oacute;n, configuraci&amp;oacute;n y seguridad que se deben de contemplar muy seriamente.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Y para terminar un poquito de arquitectura basica sobre un escenario en cuestion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SPDB: Database Server &lt;/li&gt;
&lt;li&gt;SPAPP: SharePoint Application Server &lt;/li&gt;
&lt;li&gt;SPWFE1: Web Front End en Zona Intranet &lt;/li&gt;
&lt;li&gt;SPWFE2: Web Front End en Zona Extranet &lt;/li&gt;
&lt;li&gt;AD: Directorio Activo &lt;/li&gt;
&lt;li&gt;EX: Exchange &lt;/li&gt;
&lt;li&gt;ISA: ISA Server o firewall fisico &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3157.image_5F00_3E5E8C71.png" border="0" height="348" width="640" /&gt;&lt;/p&gt;
&lt;p&gt;Como se refiere en la imagen, tenemos servicios dos zonas, Intranet y DMZ. Intranet hace uso de los recursos de red internos de la organizaci&amp;oacute;n como directorio activo o servidor de correo electr&amp;oacute;nico, entre otro. En la misma zona interna tenemos una Topologia Small Farm de SharePoint con un solo Web Front End que usuarios internos podran acceder mediante &lt;a href="http://intranet.splatin.com"&gt;http://intranet.splatin.com&lt;/a&gt;. En la zona DMZ tenemos otro Web Front End unido a la granja filtrado por un firewall hacia adentro y hacia afuera. Puede ser firewall de software como el caso de ISA Server o de hardware. Podriamos pensar que el Web Front End de la zona DMZ tenga 2 tarjetas de red, una para trafico externo con IP publica y dominio como &lt;a href="http://extranet.splatin.com"&gt;http://extranet.splatin.com&lt;/a&gt;, y otra tarjeta para trafico interno con IP privada o de la red local. Aqui tenemos otras alternativas de configuraci&amp;oacute;n mas sofisticadas que el area de infraestructura seguramente podra aprovisionar. Usuario con acceso a internet llega al Web Front End de la zona DMZ pasando por el firewall.&lt;/p&gt;
&lt;p&gt;Para ti que eres programador ASP.NET y estas evaluando SharePoint espero sea de utilidad este breve ejemplo acercamiento de soluci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;HG&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=194177" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Comunidad/default.aspx">Comunidad</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2007/default.aspx">SharePoint 2007</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/ASP.NET+2.0/default.aspx">ASP.NET 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Dise_26002300_241_3B00_o/default.aspx">Dise&amp;#241;o</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Soporte/default.aspx">Soporte</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Tecnicas/default.aspx">Tecnicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS/default.aspx">WSS</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WFE/default.aspx">WFE</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/DNS/default.aspx">DNS</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+Framework+3.0/default.aspx">.NET Framework 3.0</category></item><item><title>Introducción a Business Connectivity Services</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2010/06/06/introducci-243-n-a-business-connectivity-services.aspx</link><pubDate>Sun, 06 Jun 2010 20:22:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:177712</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=177712</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2010/06/06/introducci-243-n-a-business-connectivity-services.aspx#comments</comments><description>&lt;p&gt;En Office SharePoint Server 2007 se llamaba Business Data Catalog (BDC) y ahora en SharePoint 2010 se llama Business Connectivity Services (BCS) la estrategia para lograr la interoperabilidad o integración de SharePoint con otras fuentes de datos externas. Sucede que cuando utilizamos SharePoint como nuestra intranet tarde o temprano se requiere exponer información de otras aplicaciones en algún sitio o portal y BDC ahora BCS es la respuesta para habilitar ese y otros escenarios más como:    &lt;br /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Capacidades de lectura y escritura en fuentes de datos externas como bases de datos o aplicaciones de linea de negocio &lt;/li&gt;    &lt;li&gt;Capacidades de interoperabilidad con servicio WCF (Windows Communication Foundation) &lt;/li&gt;    &lt;li&gt;Capacidades de lado cliente para soporta escenario fuera de línea &lt;/li&gt;    &lt;li&gt;Capacidades de extender mediante un API &lt;/li&gt;    &lt;li&gt;Capacidades de relacionar datos estructurados con no estructurados &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;He compilado un muy breve e introductorio video donde se demuestra como en tan solo 8 minutos podemos experimentar a grandes rasgos lo que BCS aporta fuera de la caja.&lt;/p&gt;  &lt;div style="padding-bottom:0px;padding-left:0px;width:425px;padding-right:0px;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:9f0b6b32-578e-46a8-9a5d-bb75de22a1ad" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=ajYOD82e3U0&amp;amp;feature=youtube_gdata" target="_new"&gt;&lt;img src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0777.video34d98b7add0c_5F00_03C506D8.jpg" style="border-style:none;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;font-size:.8em;"&gt;Introducci&amp;oacute;n a Business Connectivity Services&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Aqui dejo también el video en formato WMV con mayor resolucion.&lt;/p&gt; &lt;iframe style="padding-bottom:0px;background-color:#fcfcfc;padding-left:0px;width:98px;padding-right:0px;height:115px;padding-top:0px;" title="Preview" marginheight="0" src="http://cid-638d1988b3a07a11.skydrive.live.com/embedicon.aspx/Public/haarongonzalez^_bdc^_basico^_wmv.wmv" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=177712" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Office/default.aspx">Office</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Productividad/default.aspx">Productividad</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WCF/default.aspx">WCF</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Office+2010/default.aspx">Office 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+Designer+2010/default.aspx">SharePoint Designer 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Office+2007/default.aspx">Office 2007</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/OBA/default.aspx">OBA</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/BCS/default.aspx">BCS</category></item><item><title>Como consumir lista de SharePoint 2010 en Windows Forms mediante REST</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2010/02/19/como-consumir-lista-de-sharepoint-2010-en-windows-forms-mediante-rest.aspx</link><pubDate>Fri, 19 Feb 2010 21:19:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:167802</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=167802</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2010/02/19/como-consumir-lista-de-sharepoint-2010-en-windows-forms-mediante-rest.aspx#comments</comments><description>&lt;p&gt;En Microsoft uno de los puntos que se enorgullecen de divulgar es que ahora se soporta REST para acceso a listas y bibliotecas de documentos lo cual me parece fant&amp;aacute;stico ya que si aporta valor la alternativa de obtener acceso directo al contenido basado en un est&amp;aacute;ndar y que sin tanto esfuerzo de programacion lo podamos lograr es tambien un tema a consiuderar. Este seguro que desde ya podemos ver muchas aplicaciones de esta caracter&amp;iacute;stica en proyectos de desarrollo SharePoint. &lt;/p&gt;
&lt;p&gt;Hagamos una breve y simple demostraci&amp;oacute;n de c&amp;oacute;mo consumir un servicio REST de SharePoint en una aplicacion Windows Forms. &lt;/p&gt;
&lt;h2&gt;Soporte REST en SharePoint 2010&lt;/h2&gt;
&lt;p&gt;Primeramente accedemos a nuestro sitio SharePoint 2010 y en la direcci&amp;oacute;n URL hay que capturar &amp;ldquo;_vtn_bin/listdata.svc&amp;quot; el cual es un servicio WCF que se encarga de exponer el sitio entero en formato REST. Dependiendo del URL de nuestro sitio es el contenido que el servicio listdata.svc nos retorna. &lt;/p&gt;
&lt;p&gt;Como puedes ver aqu&amp;iacute; tenemos en formato REST el contenido del sitio.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7853.clip_5F00_image002_5F00_579FB7B3.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image002" alt="clip_image002" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2260.clip_5F00_image002_5F00_thumb_5F00_5C41D43B.jpg" width="644" border="0" height="349" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mediante la URL indagamos y accedemos a los sub elementos de este esquema, por ejemplo si quisi&amp;eacute;ramos acceder a la lista de anuncios &amp;ldquo;Announcements&amp;rdquo; entonces modificamos el URL y capturamos subsecuentemente &lt;a href="http://sp210-pdc/_vti_bin/listdata.svc/Announcements"&gt;/_vti_bin/listdata.svc/Announcements&lt;/a&gt; arrojando lo siguiente:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0116.clip_5F00_image004_5F00_6672AD01.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image004" alt="clip_image004" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1104.clip_5F00_image004_5F00_thumb_5F00_6B64C4E3.jpg" width="644" border="0" height="349" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El navegador lo interpreta y muestra como un Feed RSS sin embargo al ver el c&amp;oacute;digo fuente de esta p&amp;aacute;gina vemos m&amp;aacute;s contenido de acuerdo a REST. Encontramos un esquema mucho mas explicito que describe y autocontiene la informacion invocada.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6303.clip_5F00_image006_5F00_684B0097.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image006" alt="clip_image006" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0511.clip_5F00_image006_5F00_thumb_5F00_33E665EA.jpg" width="644" border="0" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lo &amp;uacute;nico que debes de saber es que la direcci&amp;oacute;n URL es sensible a may&amp;uacute;sculas y min&amp;uacute;sculas de tal forma que debes de asegurarte de especificar exactamente igual el nombre de las listas y bibliotecas, no hay margen para el error aqu&amp;iacute;.&lt;/p&gt;
&lt;h2&gt;Consumiendo Servicio REST de SharePoint 2010&lt;/h2&gt;
&lt;p&gt;Debido a que REST opera via protocolo web podemos consumirlo tal como un servicio web. Desde Visual Studio 2010 creamos una aplicaci&amp;oacute;n de consola o Windows Forms y tenemos varias alternativas disponibles para generar un proxy que nos invoque los elementos que tenemos publicados por defecto en REST mediante el servicio listdata.svc. En esta demostraci&amp;oacute;n de tipo aplicaci&amp;oacute;n Windows Forms simplemente selecciono del men&amp;uacute; principal la opci&amp;oacute;n de Data en donde se muestra la opci&amp;oacute;n de Visual Studio para agregar una conexi&amp;oacute;n que apunte a diversos or&amp;iacute;genes de datos. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3755.clip_5F00_image007_5F00_2CA6DDD8.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image007" alt="clip_image007" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1018.clip_5F00_image007_5F00_thumb_5F00_739C12A3.png" width="244" border="0" height="130" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lo que vale la pena ver aqu&amp;iacute; es que ahora contamos con un nuevo conector hacia SharePoint.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/8546.clip_5F00_image009_5F00_27FC9952.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image009" alt="clip_image009" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7853.clip_5F00_image009_5F00_thumb_5F00_22312FB0.jpg" width="628" border="0" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A seleccionar Next simplemente se carga la ventana para hacer una referencia a un servicio WCF. Capturamos la URL de nuestro servicio listdata.svc de nuestro sitio SharePoint en cuesti&amp;oacute;n y damos clic en el bot&amp;oacute;n Go, para que Visual Studio descubra el contenido del servicio &amp;ldquo;el cual basado en REST obtendremos el contenido de nuestro sitio&amp;rdquo; y especificamos el namespace con el que estaremos haciendo referencia a nuestro proxy.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2273.clip_5F00_image010_5F00_7C49A34B.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image010" alt="clip_image010" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7776.clip_5F00_image010_5F00_thumb_5F00_2C7E505A.png" width="598" border="0" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Damos clic en Ok y listo ya podemos generar instancias de nuestro proxy y realizar program&amp;aacute;ticamente invocaciones al contenido de nuestras listas. Cabe mencionar que al hacer la conexi&amp;oacute;n v&amp;iacute;a Data Source de Visual Studio nos agrega una secci&amp;oacute;n donde podemos arrastrar y soltar sobre nuestra lista de anuncios present&amp;aacute;ndonos las columnas y la posibilidad de mostrar los objetos sobre nuestro formulario, el proceso de vinculaci&amp;oacute;n lo realiza de forma autom&amp;aacute;tica y nos agrega el contexto de vinculaci&amp;oacute;n y el contexto de navegaci&amp;oacute;n dentro de un conjunto de datos.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2063.clip_5F00_image011_5F00_4687D182.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image011" alt="clip_image011" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2063.clip_5F00_image011_5F00_thumb_5F00_0CE85FC1.png" width="597" border="0" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si tomamos nuestra lista de anuncios y la arrastramos y soltamos sobre nuestro formulario el resultado ser&amp;aacute; un datagrid con su correspondiente objeto de navegaci&amp;oacute;n y contexto de vinculaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5810.clip_5F00_image013_5F00_623C5916.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image013" alt="clip_image013" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6886.clip_5F00_image013_5F00_thumb_5F00_7B28038E.jpg" width="644" border="0" height="447" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Claro que nosotros podemos editar que columnas queremos incluir y atrapar eventos dentro del datagrid para determinar renglones nuevos o editados y program&amp;aacute;ticamente hacer algo al respecto.&lt;/p&gt;
&lt;p&gt;Ya para terminar necesitamos realizar desde c&amp;oacute;digo la invocaci&amp;oacute;n a nuestra lista y pasarle como contexto de datos el resultado de nuestro servicio. As&amp;iacute; mismo ocupamos tambi&amp;eacute;n pasar el contexto de usuario para que podamos tener acceso seguro a SharePoint.&lt;/p&gt;
&lt;p&gt;Lo que hay que hacer es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Hacer referencia a nuestro namespace RESTDemo y a System.Net usando using &lt;/li&gt;
&lt;li&gt;Instanciamos nuestro servicio generado por el proxy llamado &amp;ldquo;HomeDataContext&amp;rdquo; y pasamos como argumento dentro del constructor un objeto Uri apuntando a nuestro servicio listdata.svc. &lt;/li&gt;
&lt;li&gt;A nuestro objeto instanciado necesitamos asignarle la credenciales de usuario con las que se autentificara en SharePoint para consumir los datos. &lt;/li&gt;
&lt;li&gt;Asignamos a nuestro objeto de contexto de vinculaci&amp;oacute;n en su propiedad DataSource el resultado de nuestra lista. &lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Net;
&lt;span class="kwrd"&gt;using&lt;/span&gt; WindowsFormsApplication9.RESTDemo;

&lt;span class="kwrd"&gt;namespace&lt;/span&gt; WindowsFormsApplication9
{
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Form1 : Form
    {

        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Form1_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)
        {
            HomeDataContext dc = &lt;span class="kwrd"&gt;new&lt;/span&gt; HomeDataContext(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;&amp;quot;http://sp210-pdc/_vti_bin/listdata.svc&amp;quot;&lt;/span&gt;));
            dc.Credentials = CredentialCache.DefaultNetworkCredentials;
            announcementsBindingSource.DataSource = dc.Announcements;
        }
    }
}&lt;/pre&gt;
&lt;p&gt;El resultado:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2273.image_5F00_67A6B5BB.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0116.image_5F00_thumb_5F00_07EE1FE1.png" width="644" border="0" height="239" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
Originalmente publicado en msmvps.com&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167802" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SPS+2010/default.aspx">SPS 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SFS+2010/default.aspx">SFS 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item></channel></rss>