Ramon Torras

TECHNOLOGY ENTHUSIAST

Cancelar las tareas pendientes de un replicator / replicador

Muchas veces se utiliza el replicador para generar una serie de actividades (tareas).
 
A veces nuestra logica de workflow nos obliga a que cuado al menos una tarea es rechazada el resto de tareas pendientes tendrian de ser canceladas.
 
Utilizamos la until condition del replicador.
 
Pero una vez las tareas pendientes van al replicador childComplete no hay forma de acceder a las tarea para cancelarla.
 
Una posible solución es:
 
Guardar la ID de la tarea en una lista .. en el evento ChildComplete del replicador y luego en el Design del workflow ejecutamos un Code como este:
 
 
la lista seria:

IncompleteTaskGUIDs = new List<String>();

 
 
Y este codigo dentro del metodo del code:
 
 

// Find tasks and set them as Complete

XmlDocument xmldoc = new XmlDocument();

SPWeb web = new SPSite(this.workflowProperties.WebUrl).OpenWeb();

SPList list = web.Lists[this.workflowProperties.TaskListId];

for (int i = 0; i < list.ItemCount; i++)

{

SPListItem item = list.Items[i];

xmldoc.LoadXml(item.Xml);

string itemGUID = xmldoc.FirstChild.Attributes[ ows_GUID ].Value.ToLower();

itemGUID = itemGUID.Trim(‘{‘, ‘}’);

// find Sequence of Events Task

if (IncompleteTaskGUIDs.Contains(itemGUID))

{

// Complete Task

try

{

//if (item[ PercentComplete ] != 1 )

//{

item[ PercentComplete ] = 1 ;

item[ Status ] = Cancelado ;

item[ Completed ] = 1 ;

item.Update();

//}

}

catch { }

}

}

Comments are currently closed.