Upload
solidq
View
699
Download
1
Embed Size (px)
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.
Citation preview
Automatizando procesos con Event Receivers en SharePoint 2010
Guillermo Bas
C&B419
SharePoint Developer MCTS – MCPD en SharePoint 2010
[email protected] - @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/