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.
Movimientos Precursores de La Independencia en Venezuela
Aplicaciones sobre SharePoint : Automatizando procesos con Event Receivers en SharePoint 2010
1. C&B419
Automatizando procesos con Event
Receivers en SharePoint 2010
Guillermo Bas
SharePoint Developer
MCTS – MCPD en SharePoint 2010
gbas@solidq.com - @guillebas
2. Objetivos de la sesión
Event Receivers
α 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
4. Tipos de evento
Por contexto
Colección de sitios (Site) Sitio (Web) Flujo de trabajo (Workflow)
SiteDeleting WebAdding WorkflowStarting
SiteDeleted WebProvisioned WorkflowStarted
WebDeleting WorkflowPostponed
WebDeleted WorkflowCompleted
WebMoving
WebMoved
5. Tipos de evento
Por contexto
Lista (List) Campo (Field) Ítem (Item)
ItemAdding
ItemAdded
ListAdding FieldAdding
ItemDeleting
ListAdded FieldAdded
ItemDeleted
ListDeleting FieldDeleting
ItemUpdating
ListDeleted FieldDeleted ItemUpdated
FieldUpdating ItemFileConverted
FieldUpdated ItemFileMoved
ItemCheckedIn
ItemCheckinOut
ItemAttachmentAdding
ItemAttachmentAdded
ItemAttachmentDeleting
ItemAttachmentDeleted
6. 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…
7. Tipos de evento
Sincronía
Síncronos
α Mismo hilo de ejecución que el
proceso que los activa
α Identificables por el verbo en
gerundio
β Adding, Updating, Deleting…
10. Automatizando procesos
Tres maneras de automatizar
Administrador: "Cuando
crean una tarea en una lista de
Desarrollador: "Los Event tareas, se creará una colección
Receivers molan un montón, de sitios con 15 subsitios y 50
voy a usarlos para para todo." listas desde el código del
Event Receiver. Nunca más
tendré que trabajar "
¡NO!
11. Automatizando procesos
Tres maneras de automatizar
α 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
14. PowerShell
Listar eventos asociados a una lista
$spWeb = Get-SPWeb -Identity http://demo.spdev.local
$spList = $spWeb.Lists["My List Name"]
$spList.EventReceivers | Select Name,Assembly,Type
15. PowerShell
Asociar un evento a una lista
$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()
16. PowerShell
Eliminar eventos asociados a una lista
$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()
17. Feature Receivers
Alternativa para eliminar Event Receivers
α 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
19. Cadenas de ejecución
Bibliotecas de documentos
α Caso 1: Subir documento (no requiere check out)
α Caso 2: Subir documento (requiere check out)
20. 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)
21. Recursos adicionales
α 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
22. 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/