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.

Preguntas similare

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.

Respuesta Responder a este mensaje
#2 joan
21/04/2008 - 23:01 | Informe spam
Hola Elecktrus,

la verdad es que no he puesto todo el código que utilizo.
Siempre utilizo try/catch, y siempre hago un using, así no hace falta hacer
el dispose.

En cuanto pueda pruebo lo de hacer el SPSite dentro de los permisos elevados.




"Elecktrus" wrote:

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.
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida