Aplicaciones sobre SharePoint : Automatizando procesos con Event Receivers en SharePoint 2010

Post on 27-Jun-2015

700 views 1 download

description

​En esta sesión hablaremos sobre las mejores prácticas cuando se trata de desarrollar, desplegar y mantener Event Receivers. Así como casos de uso en los que podemos aprovechar sus características para automatizar procesos y facilitarle la vida a nuestros ususarios. Además veremos que se puede abusar con facilidad de ellos y que en muchas ocasiones es mejor utilizar otras estrategias de automatización cómo los workflows.

Transcript of Aplicaciones sobre SharePoint : Automatizando procesos con Event Receivers en SharePoint 2010

Automatizando procesos con Event Receivers en SharePoint 2010

Guillermo Bas

C&B419

SharePoint Developer MCTS – MCPD en SharePoint 2010

gbas@solidq.com - @guillebas

α Comprender los distintos tipos de Event Receivers

α Aprender cómo automatizar procesos repetitivos mediante el uso de Event Receivers

α Desplegar y administrar Event Receivers de forma controlada

Objetivos de la sesión Event Receivers

Tipos de evento

Colección de sitios (Site) Sitio (Web) Flujo de trabajo (Workflow)

WebAdding

WebProvisioned

WebDeleting

WebDeleted

WebMoving

WebMoved

SiteDeleting

SiteDeleted

WorkflowStarting

WorkflowStarted

WorkflowPostponed

WorkflowCompleted

Tipos de evento Por contexto

Lista (List) Campo (Field) Ítem (Item)

FieldAdding

FieldAdded

FieldDeleting

FieldDeleted

FieldUpdating

FieldUpdated

ListAdding

ListAdded

ListDeleting

ListDeleted

ItemAdding

ItemAdded

ItemDeleting

ItemDeleted

ItemUpdating

ItemUpdated

ItemFileConverted

ItemFileMoved

ItemCheckedIn

ItemCheckinOut

ItemAttachmentAdding

ItemAttachmentAdded

ItemAttachmentDeleting

ItemAttachmentDeleted

Tipos de evento Por contexto

Tipos de evento Sincronía

Asíncronos

αHilo de ejecución diferente del

proceso que los activa

α Identificables por el verbo en pasado

β Added, Updated, Deleted…

Síncronos

αMismo hilo de ejecución que el proceso que los activa

α Identificables por el verbo en gerundio

β Adding, Updating, Deleting…

Tipos de evento Sincronía

Tipos de evento desde Visual Studio 2010

Automatizando procesos

¡NO!

Automatizando procesos Tres maneras de automatizar

Desarrollador: "Los Event

Receivers molan un montón,

voy a usarlos para para todo."

Administrador: "Cuando

crean una tarea en una lista de

tareas, se creará una colección

de sitios con 15 subsitios y 50

listas desde el código del

Event Receiver. Nunca más

tendré que trabajar "

α Timer Jobs β Procesos muy pesados o que requiere mucho tiempo para

ejecutarse

β Procesos que se repiten a lo largo del tiempo

α Workflows β Procesos completos de negocio que tienen varios pasos o procesos

estructurados

β Se ejecutan de forma totalmente separada a la interfaz (no existe sincronía)

α Event Receivers β Procesos ligeros que aportan gran versatilidad para la

automatización

Automatizando procesos Tres maneras de automatizar

α Properties β Web

β List

β ListItem

β …

α Properties.Cancel

α Properties.ErrorMessage

Automatizando procesos Aspectos importantes del desarrollo de Event Receivers

Despliegue y administración

PowerShell

$spWeb = Get-SPWeb -Identity http://demo.spdev.local

$spList = $spWeb.Lists["My List Name"]

$spList.EventReceivers | Select Name,Assembly,Type

Listar eventos asociados a una lista

PowerShell

$spWeb = Get-SPWeb -Identity http://demo.spdev.local

$spList = $spWeb.Lists["Nombre de lista"]

$spEventReceiver = $spList.EventReceivers.Add()

$spEventReceiver.Assembly = "Solucion.Proyecto.Clase,

Version=1.0.0.0, Culture=neutral,

PublicKeyToken=24242342424"

$spEventReceiver.Class = "Namespace.MyClass.ClassName"

$spEventReceiver.Name = "Nombre para el Evento"

$spEventReceiver.Type = 10002

$spEventReceiver.SequenceNumber = 1000

$spEventReceiver.Synchronization = 1

$spEventReceiver.Update()

Asociar un evento a una lista

PowerShell

$spWeb = Get-SPWeb -Identity http://demo.spdev.local

$spList = $spWeb.Lists[" Nombre de lista "]

$eventsCount = $spList.EventReceivers.Count

$assembly = " Solucion.Proyecto.Clase, Version=1.0.0.0,

Culture=neutral, PublicKeyToken=24242342424"

$class = "Namespace.MyClass.ClassName"

$type = 10002

$name = "Nombre para el Evento"

for ($i = 0; $i -lt $eventsCount; $i+=1) {

if ($spList.EventReceivers[$i].Assembly -eq $assembly -and

$spList.EventReceivers[$i].Class -eq $class -and

$spList.EventReceivers[$i].Type -eq $type -and

$spList.EventReceivers[$i].Name -eq $Name) {

$spList.EventReceivers[$i].Delete()

}

}

$spList.Update()

Eliminar eventos asociados a una lista

α Incorporamos el registro o eliminación de event receivers al proyecto de Visual Studio y a la interfaz de SharePoint

α Solución más limpia

Feature Receivers Alternativa para eliminar Event Receivers

Histórico documental con Event Receivers

αCaso 1: Subir documento (no requiere check out)

αCaso 2: Subir documento (requiere check out)

Cadenas de ejecución Bibliotecas de documentos

αCaso 3: Crear documento desde Office 2010 (no requiere check out)

αCaso 4: Crear documento desde Office 2010 (requiere checkout)

Cadenas de ejecución Bibliotecas de documentos

α Tabla de valores con el tipo de evento y sincronía http://tinyurl.com/EventReceiversPowerShell

α Creando Event Receivers desde Visual Studio 2010 http://msdn.microsoft.com/en-us/library/gg252010.aspx

α Asociando eventos en una característica http://msdn.microsoft.com/en-us/library/ms430602.aspx

α Mi cuenta de twitter @guillebas http://twitter.com/guillebas

Recursos adicionales

Si quieres disfrutar de las mejores sesiones de

nuestros mentores de España y Latino América,

ésta es tu oportunidad.

http://summit.solidq.com/madrid/