SSD: el síndrome de la Sharepoint dependencia

Sharepoint me proporciona seguridad y me hace sentir más fuerte. Las 10 cosas que más me gustan de Sharepoint.

10 puntos para entender a Project Server 2010

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos...

Diseño Gráfico en SharePoint

Serie de artìculos que nos ayudan a incorporar diseño gráfico en las implementaciones de SharePoint...

Revista CompartiMOSS

Artículos publicados en la revista especializada en SharePoint: CompartiMOSS.

Contacto

Enviame un correo :-)

martes, 28 de septiembre de 2010

SharePoint 2010 - Simple Install for Testing

lunes, 27 de septiembre de 2010

Manejadores de eventos en SharePoint 2010 con Visual Studio 2010 (revista CompartiMOSS)

image 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:

http://www.facebook.com/group.php?gid=128911147140492&v=wall&viewas=0#!/group.php?gid=128911147140492&ref=ts.

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)

Intro

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.

Intro_After_Before

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:

Visual_New

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:

Visual_EventType

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:

Sitio_Update

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:

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

Fotos de aplicaciones desarrolladas en SharePoint

image image image Que les sea útil!

De vuelta al ruedo

Luego de unas breves vacaciones, vuelvo al blog :-)

viernes, 17 de septiembre de 2010

Se viene el nuevo twitter...

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!

LinkedIn opt-in page

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:

Paquetes “rollup”:

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:

Paquetes “rollup”:

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 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!

Fuente: http://blogs.technet.com/b/hablamoss/archive/2010/09/03/disponibles-los-acumulativos-de-agosto-para-sharepoint-2010-y-2007.aspx.

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!

image

miércoles, 1 de septiembre de 2010