martes, 28 de septiembre de 2010
lunes, 27 de septiembre de 2010
Manejadores de eventos en SharePoint 2010 con Visual Studio 2010 (revista CompartiMOSS)
Este artículo lo escribí originalmente para la revista CompartiMOSS gracias a una invitación de Fabián Imaz.
Les recomiendo ampliamente esta revista que pueden accederla desde este enlace:
http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
o desde su página en Facebook:
Que les sea útil!
Introducción
Los manejadores de eventos constituyen una de las tantas características que SharePoint 2010 posee a la hora de extender una aplicación mediante programación. En lo personal, estoy convencido de que la mejor forma de potenciar SharePoint es aprovechando al máximo las funcionalidades que la plataforma nos ofrece out of the box y reservar la programación para los casos en que se justifique. De esta manera obtendremos aplicaciones más robustas, en menos tiempo, con menor costo y menos propensas a errores.
Bajo este punto de vista, considero que los manejadores de eventos nos ofrecen una funcionalidad con una muy buena relación costo-beneficio, ya que son sencillos de programar y a cambio nos ofrecen funcionalidad más que interesante.
¿Para qué necesitamos un manejador de eventos? En principio debemos entender que los manejadores de eventos agregan comportamiento a listas e ítems (entre otras entidades). Se ejecutan automáticamente como respuesta a un evento como agregar una columna en una lista o modificar un ítem en una lista. Los usos más comunes, según mi opinión, son:
1. Validaciones de datos, previas a la transacción de alta o modificación de un ítem (lo que no podemos resolver con la nueva funcionalidad de SharePoint 2010: Custom Validation).
2. Control de integridad para fortalecer las reglas de negocio que no pueden ser manejadas con los campos de búsqueda (lookup).
3. Control de unicidad de columnas o conjunto de columnas (lo que no podemos resolver con la nueva funcionalidad de SharePoint 2010: Enforce unique values ).
4. Ejecución de procesos de negocio, acciones que puedan ser automatizadas y que no necesiten intervención de un usuario (en cuyo caso quizá sea más acertado programar un flujo de trabajo)
5. Lo que no puede resolver un campo calculado: con eventos disponemos de toda la potencia de .Net para calcular en forma automática el valor de nuestras columnas.
6. Protección de la parametrización, al impedir, por ejemplo, que un usuario con permisos de administración pueda eliminar una columna de una lista.
7. Controles en la seguridad, útil cuando necesitamos aplicar (o controlar) determinados permisos sobre un ítem basados en un elemento dinámico como un dato en una columna (u otra regla de negocio más sofisticada).
Si me permiten la simplificación, creo que la mejor manera que tiene el lector de comprender qué es un manejador de eventos es recordar lo que nos ofrecen los triggers de un sistema de base de datos relacional.
Eventos en SharePoint 2010
En la sección anterior enumeré ideas de problemáticas que podemos resolver con los manejadores de eventos, pero para entender la potencialidad de esta funcionalidad, lo primero que necesitamos es conocer la lista de eventos que soporta SharePoint 2010, que a continuación enumero:
Eventos de lista
· Columnas: creación, eliminación y modificación.
· Listas: creación y eliminación.
Eventos de ítem lista
· Ítem: creación, eliminación, modificación y protección.
· Archivos adjuntos: creación y eliminación.
· Archivos: movimiento y conversión.
· Recepción de un evento de contexto de lista.
Eventos de e-mail
· Recepción de mensaje de e-mail.
Eventos de web
· Colección de sitios: eliminación.
· Sitio: aprovisionamiento, eliminación y movimiento.
Eventos de flujo de trabajo
· Comienzo, suspensión y desactivación.
Eventos de característica
· Activación, desactivación, instalación y desinstalación y modificación.
Tipos de eventos
En casi todos los casos existen dos tipos de eventos, los que se ejecutan antes (before) de que se efectúe la confirmación de la transacción en la base de datos de contenido (terminan en “ing”) y los que se disparan después (after) de que se ejecute la confirmación (terminan en “ed”). Los primeros son sincrónicos y los segundos a-sincrónicos en forma predeterminada.
- Los eventos after no admiten cancelación por parte del usuario.
- Los eventos asincrónicos se ejecutan en un thread distinto.
- SharePoint 2010 posee una nueva propiedad que permite alterar el tipo de sincronización del evento (sólo en los eventos after): eventReceiver.Synchronization.
Ejemplo en Visual Studio 2010
Afortunadamente, Visual Studio 2010 nos ofrece un entorno de desarrollo totalmente integrado con SharePoint 2010. En la versión de 2007, necesitábamos realizar mucho trabajo manual, que ahora se ve reemplazado por un amigable asistente. Nuestro primer paso será crear un proyecto de tipo Event receiver tal como indica la figura:
Luego elegimos nuestro sitio y si se trata de una solución standboxed o farm. La siguiente pantalla nos permite elegir el tipo de evento (ítem de lista en nuestro caso) y la fuente (Anuncios en nuestro caso) tal como muestra la siguiente imagen:
Al finalizar el asistente nos genera automáticamente una solución con las referencias y clases correspondientes, quedando de nuestro lado escribir el código personalizado.
using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
namespace EventReceiverProject1.EventReceiver1
{
/// <summary>
/// List Item Events
/// </summary>
public class EventReceiver1 : SPItemEventReceiver
{
/// <summary>
/// An item is being updated.
/// </summary>
public override void ItemUpdating(SPItemEventProperties properties)
{
base.ItemUpdating(properties);
}
}
}
Ahora que tenemos el esqueleto armado, haremos un ejemplo para entender cómo funciona el manejador de eventos. Vamos a implementar una sencilla regla de negocio: los anuncios de nuestra librería Announcements sólo pueden ser modificados los días miércoles.
Crearemos un evento que valide que la acción de modificación se esté realizando ese día. Para ello agregamos las siguientes líneas de código dentro del esqueleto que nos había construido el asistente de Visual Studio 2010:
DateTime Ahora = DateTime.Now;
string Dia = Ahora.ToString("ddd");
if (Dia != "Wed") {
properties.Status = SPEventReceiverStatus.CancelWithError;
properties.ErrorMessage = "Los anuncios sólo pueden ser modificados los miércoles";
properties.Cancel = true;
}
Como nuestro evento es de tipo before la validación se ejecutará antes de que la modificación se confirme en la base de datos de contenido, permitiendo cancelar la operación e informar mediante un error lo sucedido al usuario.
Para desplegar el evento en nuestro ambiente de desarrollo, el siguiente paso es presionar F5. Visual Studio 2010 nos abrirá Internet Explorer con nuestro sitio cargado, herramientas de debug incluidas. J. Buscamos la lista de anuncios, elegimos uno e intentamos la acción de modificación:
Como en nuestro ejemplo, la acción se está ejecutando un viernes, el evento cancelará la edición y generará el siguiente mensaje de error:
Conclusión
En este artículo vimos una introducción rápida a la característica de programación de manejadores de eventos en SharePoint 2010 y sus posibles usos.
Luego vimos un ejemplo muy sencillo con el objetivo de transmitir al lector tranquilidad respecto al costo de programación asociado. Además vimos como Visual Studio 2010 nos ayuda notoriamente en el trabajo con SharePoint a través de sus asistentes y facilidades para desplegar.
Espero que esta herramienta sea de utilidad para aquellos que necesiten extender SharePoint, especialmente programando reglas de negocio.
En caso que tu plataforma sea SharePoint 2007, también puedes programar manejadores de eventos con un poco más de esfuerzo y algunas limitaciones en cuanto a los eventos disponibles. Si este es tu caso, te dejo un enlace con un artículo y webcast que dicté sobre eventos en WSS 3.0: http://surpoint.blogspot.com/2009/12/manejadores-de-eventos-en-sharepoint.html.
Como siempre, espero haber sido útil. ¡Hasta la próxima!
domingo, 26 de septiembre de 2010
viernes, 17 de septiembre de 2010
lunes, 13 de septiembre de 2010
Integración entre SharePoint 2010 y LinkedIn
Les dejo este enlace con un interesante ejemplo de integración entre LinkedIn y SharePoint 2010. Imaginen una actualización automática en LinkedIn cuando el usuario agrega #in en la actualización del estado en SharePoint. Interesante ¿no? Vean el material en: http://msdn.microsoft.com/en-us/library/ff512786.aspx.
Que lo disfruten!
lunes, 6 de septiembre de 2010
Acumulativos de agosto de Project Server
Les dejo esta información importante proveniente del El Faro de Project Server. Transcribo:
2007
Paquetes individuales:
- Description of the SharePoint Server 2007 hotfix package (sts-x-none.msp): August 31, 2010 http://support.microsoft.com/kb/2276469
- Description of the Project Server 2007 hotfix package (Pjsrvapp-x-none.msp; Pjsrvwfe-x-none.msp): August 31, 2010 http://support.microsoft.com/kb/2276475
- Description of the Office Project 2007 hotfix package (project-x-none.msp): August 31, 2010 http://support.microsoft.com/kb/2289175
Paquetes “rollup”:
- Description of the Windows SharePoint Services 3.0 Cumulative Update Server Hotfix Package (WSS server-package): August 31, 2010 http://support.microsoft.com/kb/2276474
- Description of the Office SharePoint Server 2007 Cumulative Update server hotfix package (MOSS server-package): August 31, 2010 http://support.microsoft.com/kb/2276472
Para poder instalar el paquete de Project 2007, es necesario tener instalado al menos el Service Pack 1, aun cuando recomendamos instalar directamente el Service Pack 2.
2010
Paquetes individuales:
- Description of the SharePoint Foundation 2010 hotfix package (Sts-x-none.msp): August 31, 2010 http://support.microsoft.com/kb/2266423
- Description of the SharePoint Server 2010 hotfix package (spswfe-x-none.msp, pplwfe-x-none.msp, osrchwfe-x-none.msp): August 31, 2010 http://support.microsoft.com/kb/2276339
- Description of the Project Server 2010 hotfix package (Wosrv-x-none.msp, Pjsrvwfe-x-none.msp, Osrv-x-none.msp): August 31, 2010 http://support.microsoft.com/kb/2276341
Paquetes “rollup”:
- Description to follow (SharePoint Foundation rollup) http://support.microsoft.com/kb/2352346
- Description to follow (SharePoint Server 2010 rollup) http://support.microsoft.com/kb/2352342
- Description to follow (Project Server 2010 rollup) http://support.microsoft.com/kb/2352345
Espero les sea útil!
domingo, 5 de septiembre de 2010
Disponibles los acumulativos de Agosto para SharePoint 2010 y 2007
Transcribo esta importante información desde el blog El equipo de soporte de SharePoint en España habla MOSS.
Ya están disponibles para su descarga las actualizaciones de Agosto, tanto de SharePoint 2010 como de 2007. Los artículos de KB tardarán unos días en ser publicados, pero una vez estén disponibles, se podrá acceder a ellos a través de los enlaces que se mencionan a continuación.
SharePoint 2010
- SharePoint Foundation 2010 (MSF) August 2010 CU - KB 2352346
- SharePoint Server 2010 (MSS) August 2010 CU - KB 2352342
- SharePoint Server 2010 with Project Server August 2010 CU - KB 2352345 - para entornos con Project 2010!
SharePoint 2007
Aviso! Esta actualización no se instalará si no se encuentra instalado ya el SP2 en el entorno.
El orden, como siempre, será instalar primero las actualizaciones de WSS/MSF, y posteriormente las de MOSS/MSS. Tras instalar las actualizaciones se deberá ejecutar el Asistente de Configuración en cada servidor de la granja.
Que les sea útil!
jueves, 2 de septiembre de 2010
Como abrir los documentos adjuntos desde una vista en SharePoint 2007
Desde el blog SharePoint JavaScripts nos llega un nuevo artículo, está vez para facilitar la operación de apertura de archivos adjuntos desde una vista en SharePoint, sin tener que ingresar al ítem de la lista. Es interesante, pueden descargar el código desde este enlace: http://sharepointjavascript.wordpress.com/2010/08/24/list-all-attachments-when-clicking-the-paperclip-in-a-list-view/
Que lo disfruten!
miércoles, 1 de septiembre de 2010
Guía gráfica para publicar dibujos de Visio en SharePoint 2010
Pueden descargarla desde: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4c4dc6c8-c53c-4b4b-b6b4-a1dca251d597. Que la disfruten!