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

22
Automatizando procesos con Event Receivers en SharePoint 2010 Guillermo Bas C&B419 SharePoint Developer MCTS – MCPD en SharePoint 2010 [email protected] - @guillebas

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

Page 1: 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

[email protected] - @guillebas

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

α 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

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

Tipos de evento

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

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

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

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

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

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…

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

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

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

Tipos de evento desde Visual Studio 2010

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

Automatizando procesos

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

¡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 "

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

α 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

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

α Properties β Web

β List

β ListItem

β …

α Properties.Cancel

α Properties.ErrorMessage

Automatizando procesos Aspectos importantes del desarrollo de Event Receivers

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

Despliegue y administración

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

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

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

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

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

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

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

α 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

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

Histórico documental con Event Receivers

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

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

αCaso 2: Subir documento (requiere check out)

Cadenas de ejecución Bibliotecas de documentos

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

α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

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

α 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

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

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/