1. Introducción
Mientras desarrollamos cualquier aplicación necesitamos manejar algunos eventos. Por ejemplo, cuando se añade un nuevo elemento a una lista, podemos necesitar realizar alguna acción como, por ejemplo, notificar a la persona que creó el elemento de la lista, o modificar las entradas dependientes en alguna otra ubicación, etc. El manejo de tales eventos es facilitado por los receptores de eventos. Tenemos muchas clases de receptores de eventos de SharePoint para poder manejar una variedad de eventos.
2. Tipos de receptores de eventos de SharePoint
Hay básicamente dos tipos de receptores de eventos: Receptores de eventos síncronos y asíncronos. Los receptores de eventos síncronos también se conocen como receptores de eventos «Antes». Se utilizan para realizar alguna acción personalizada antes de que ocurra un evento. En este caso, existe la flexibilidad de cancelar el evento en algunas condiciones para que el evento que se inicia no ocurra.
Los receptores de eventos asíncronos también se conocen como receptores de eventos «Después». Se utilizan para realizar alguna acción personalizada después de que ocurra un evento. Estos eventos son asíncronos porque no tienen por qué ocurrir inmediatamente después de que se realice el evento. También pueden ocurrir algún tiempo después, a diferencia de los receptores de eventos síncronos que ocurren inmediatamente antes de que ocurra un evento.
3. Clases de receptores de eventos
Fundamentalmente hay cinco clases de receptores de eventos para SharePoint 2007.
Microsoft.SharePoint.SPEmailEventReceiver: Esto proporciona el manejo de eventos cada vez que un usuario envía un correo electrónico a una lista en la que la función de correo electrónico está activada
Microsoft.SharePoint.SPFeatureReceiver : Esto proporciona el manejo de eventos siempre que se actúa sobre su característica
Microsoft.SharePoint.SPItemEventReceiver : Esto proporciona el manejo de eventos siempre que se realiza cualquier acción en un elemento de la lista
Microsoft.SharePoint.SPListEventReceiver: Esto proporciona el manejo de eventos siempre que se modifica una definición de la lista como la adición o eliminación de columnas y la modificación de las columnas existentes.
Microsoft.SharePoint.SPWebEventReceiver: Esto provee manejo de eventos cuando un sitio o una colección de sitios es borrado o movido
Cada una de las clases tiene algunos métodos virtuales que deben ser anulados para realizar nuestra acción personalizada. Esos métodos son los siguientes.
3.1 Eventos a nivel de sitio
Los métodos bajo la clase SPWebEventReceiver manejan eventos a nivel de sitio. A continuación se presenta un breve resumen de esos métodos.
Sitio Eliminado – Esto ocurre después de que una colección de sitios es eliminada.
Borrado de sitio– Esto ocurre antes de que se borre una colección de sitios.
Web Borrado – Esto ocurre después de que un sitio web ha sido borrado completamente. Esto es un evento asincrónico posterior.
Borrado deWeb – Esto ocurre antes de que un sitio web sea borrado. Esto es un evento sincrónico previo.
Web Movido – Esto ocurre después de que un sitio web existente es movido. Esto es un evento asincrónico posterior.
Mover Web – Esto ocurre antes de que un sitio web sea movido. Este es un evento sincrónico.
3.2 Eventos de nivel de lista
Los métodos bajo la clase SPListEventReceiver manejan eventos de nivel de lista. A continuación se presenta un breve resumen de esos métodos.
Campo añadido – Esto ocurre después de que se añade un enlace de campo a una lista.
FieldAdding – Esto ocurre cuando se agrega un campo a un tipo de contenido.
Campoeliminado – Esto ocurre después de que un campo se elimina de una lista.
Borradode campos: se produce cuando se elimina un campo de una lista.
FieldUpdated – Esto ocurre después de que un campo se actualiza en una lista.
Actualización de campos: se produce cuando se actualiza un campo de una lista.
3.3 Eventos de nivel de artículo
Los métodos de la clase SPItemEventReceiver manejan eventos a nivel de artículo. A continuación se presenta un breve resumen de esos métodos.
ItemAdded – Esto ocurre después de que se añade un nuevo elemento a una lista. Esto es un evento posterior asincrónico.
Agregar un elemento – Esto ocurre antes de que un elemento sea agregado a una lista. Esto es un evento síncrono previo.
ItemAttachmentAdded – Esto ocurre después de que se agrega un archivo adjunto a una lista. Este es un evento asincrónico.
ItemAttachmentAdding – Esto ocurre mientras se agrega un archivo adjunto a una lista.
ItemAttachmentDeleted – Esto ocurre después de que un archivo adjunto es eliminado de un elemento.
ItemAttachmentDeleting – Esto ocurre cuando se elimina un archivo adjunto de un elemento.
ItemCheckedIn – Esto ocurre después de que un elemento es registrado.
ElementoSacado – Esto ocurre después de que se haya sacado un elemento.
ItemCheckingIn – Esto ocurre mientras se realiza el check-in de un elemento.
ElementoSalidaDeTodo – Esto ocurre mientras se está sacando un elemento.
ElementoBorrado – Esto ocurre después de que un elemento sea eliminado de su lista.
BorrarArtículo – Esto ocurre mientras se elimina un artículo de su lista.
ItemFileConverted – Esto ocurre cuando el tipo de archivo se está convirtiendo.
ItemFileMoved – Esto ocurre después de que un archivo se mueve.
ItemFileMoving – Esto ocurre mientras se mueve un archivo.
ItemUncheckedOut – Esto ocurre después de desmarcar un elemento de una lista.
ItemUncheckingOut – Esto ocurre mientras se desmarca un elemento.
ElementoActualizado – Esto ocurre después de que un elemento se actualiza.
Actualizaciónde elementos: se produce cuando se actualiza un elemento.
3.4 Eventos de características
Los métodos bajo la clase SPFeatureReceiver manejan eventos relacionados con la característica. A continuación se presenta un breve resumen de esos métodos.
FeatureActivated – Esto ocurre después de que se activa una característica.
FeatureDeactivating – Esto ocurre cuando una característica está siendo desactivada.
FeatureInstalled – Esto ocurre después de que una característica se instala.
Desinstalación de características: esto ocurre cuando se está desinstalando una característica.
3.5 Eventos de correo electrónico
El método bajo la clase SPEmailEmailEventReceiver maneja el evento relacionado con el correo electrónico. A continuación se presenta un breve resumen del método.
EmailReceived Esto ocurre después de que un mensaje de correo electrónico ha llegado (a una lista de correo electrónico habilitado).
4. 4. Vinculación de los receptores de eventos
Para que los receptores de eventos reciban un evento, deben estar vinculados a los objetos correspondientes. Esta vinculación puede hacerse de tres maneras.
Utilizando una característica
Usando un tipo de contenido
Usando el modelo de objeto WSS
4.1 Uso de la función
En la característica, el archivo elements.xml debe ser como sigue.
……………………
……………………
………………………………
……………………………..
Cualquier número de receptores puede ser vinculado a través de una característica.
Limitación: Los eventos a nivel de sitio no pueden ser registrados/enlazados a través de la característica porque no podemos asociar un ListTemplateId con un sitio.
4.2 Uso del tipo de contenido
En un tipo de contenido, el archivo elements.xml debe ser como sigue.
…………………………
…………………………
La misma limitación de «función de uso» se aplica al tipo de contenido también porque un tipo de contenido no puede asociarse con un sitio.
El número de secuencia determina cuándo debe ejecutarse el receptor de eventos en caso de que estén a punto de ejecutarse más de un receptor de eventos. Un receptor de eventos con mayor número de secuencia se ejecuta después de su homólogo con menor número de secuencia.
4.3 Utilización del modelo de objeto WSS
A continuación se muestra un código de ejemplo de cómo un receptor de eventos se vincula con una lista.
Public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWeb web = propiedades.Caracteristicas.Padre como SPWeb;
web.Listas[«Videoteca»].Receptores de eventos.Añadir(
SPEventReceiverType.ItemAdded,
«MiProyecto.MiMódulo.Eventos, Versión=1.0.0.0, Cultura=neutral, PublicKeyToken=0b231a5ff63cd9fa»,
” MiProyecto.MiMódulo.Eventos.VideoAñadidoEventoReceptor «);
}
En el código anterior, la clase personalizada «VideoAddedEventReceiver» del tipo «ItemAdded» está enlazada con una lista llamada «Video Library».
5. Desvinculación del receptor de eventos de SharePoint
– El receptor de eventos ligado con la ayuda del tipo de contenido no puede ser desatado.
– Si el receptor de eventos se vincula con la ayuda de una característica, la desactivación de la característica desbloquearía el receptor de eventos de su objeto asociado.
– Si el receptor de eventos estaba vinculado con el modelo de objeto WSS,
1. Muévase al objeto (colección de sitios o sitio web o lista) al que está vinculado el receptor del evento.
2. 2. Recuperar la definición de receptor de eventos del receptor de eventos previsto.
3. EventReceiverDefinitionObject.Delete().
4. 4. Llamar la actualización de ese objeto (colección de sitios o sitio web o lista).