Como iniciar un WF desde código en ItemAdded ??

21/04/2008 - 12:12 por joan | Informe spam
Hola a todos,

Estoy tratando de iniciar un WorkFlow cuando se inserta un item en una lista.
Tengo el siguiente código (el cual funciona cuando lo hago desde una
aplicación):
-
public override void ItemAdded(SPItemEventProperties properties)
{
SPSite site = new SPSite("http://misitio");

SPSecurity.RunWithElevatedPrivileges(delegate()
{
//Iniciamos el Workflow asociado a la lista.
Guid guid = item.ParentList.WorkflowAssociations[0].Id;
SPWorkflowAssociation wrkFl =
item.ParentList.WorkflowAssociations[guid];

site.WorkflowManager.StartWorkflow(item, wrkFl,
wrkFl.AssociationData, true);
item.Update();
});
}
-
Cuando lo intento hacer con el EventHandler, justo al añadir el item, lo
inicia, pero lo cancela de inmediato.

Diréis ... y porque no lo inicias automaticamente cuando se crea el item ??
Pues bién, tengo otro EventHandler que le asigna permisos al item, este
funciona perfectamente, pero si hago que el Workflow se inicie
automáticamente ... pues entonces no me funciona.

Se os ocurre alguna posible solución ??

Muchas gracias por vustra ayuda.

Saludos a todos.
 

Leer las respuestas

#1 Elecktrus
21/04/2008 - 20:50 | Informe spam
Hola, joan:
A primera vista, viendo solo tu codigo, parece un problema de permisos, y
creo que viene por que declaras el site y luego elevas los privilegios y usas
esa declaracion, lo que es incorrecto. Mete la declaracion del SPSite site =
new SPSite("http://misitio"); dentro del codigo elevado.
Y por cierto, ademas de un try-cactch (en sharepoint es mas necesario que el
comer) deberias hacerle al final un site.Dispose(), para liberar memoria, ya
que objeto SPSite no es gestionado y no autolibera ram.

A ver si con eso hay suerte. Sobre lo del arranque automatico, cuando lo
haces, que es lo que no te funciona, el flujo o tu manejador de permisos?


"joan" wrote:

Hola a todos,

Estoy tratando de iniciar un WorkFlow cuando se inserta un item en una lista.
Tengo el siguiente código (el cual funciona cuando lo hago desde una
aplicación):
-
public override void ItemAdded(SPItemEventProperties properties)
{
SPSite site = new SPSite("http://misitio");

SPSecurity.RunWithElevatedPrivileges(delegate()
{
//Iniciamos el Workflow asociado a la lista.
Guid guid = item.ParentList.WorkflowAssociations[0].Id;
SPWorkflowAssociation wrkFl =
item.ParentList.WorkflowAssociations[guid];

site.WorkflowManager.StartWorkflow(item, wrkFl,
wrkFl.AssociationData, true);
item.Update();
});
}
-
Cuando lo intento hacer con el EventHandler, justo al añadir el item, lo
inicia, pero lo cancela de inmediato.

Diréis ... y porque no lo inicias automaticamente cuando se crea el item ??
Pues bién, tengo otro EventHandler que le asigna permisos al item, este
funciona perfectamente, pero si hago que el Workflow se inicie
automáticamente ... pues entonces no me funciona.

Se os ocurre alguna posible solución ??

Muchas gracias por vustra ayuda.

Saludos a todos.

Preguntas similares