El siguiente fragmento de código crea primero una instancia (SPListItem) de un elemento en una Lista o Biblioteca, luego encuentra el GUID de un Flujo de Trabajo que ya se ha configurado en la Lista (llamado "FlujoPrueba"), encuentra la asociación del flujo y finalmente lo inicia con parámetros por defecto:
SPListItem item = otherWeb.Lists["nm3"].Items[0];
Guid approvalworkflowId = item.Web.WorkflowTemplates.GetTemplateByName("number02", CultureInfo.InvariantCulture).Id;
if (approvalworkflowId != Guid.Empty)
{
foreach (SPWorkflowAssociation workflowAssociation in item.ParentList.WorkflowAssociations)
{
if (workflowAssociation.BaseId == approvalworkflowId)
{
item.Web.Site.WorkflowManager.StartWorkflow(item, workflowAssociation, workflowAssociation.AssociationData, true);
break;
}
}
}
El tercer parámetro del método StartWorkflow es una enumeración del tipo SPWorkflowRunOptions que puede tener tres valores: sincrónico, asincrónico o sincrónico posponiendo todas las operaciones en ejecución.
Si es necesario insertar parámetros de iniciación, el parámetro "eventData" del tipo string puede contenerlos definidos en formato xml de la siguiente forma:
String data = String.Format("<dfs:myFields
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
xmlns:dms=\"http://schemas.microsoft.com/office/2009/documentManagement/types\"
xmlns:dfs=\"http://schemas.microsoft.com/office/infopath/2003/dataFormSolution\"
xmlns:q=\"http://schemas.microsoft.com/office/infopath/2009/WSSList/queryFields\"
xmlns:d=\"http://schemas.microsoft.com/office/infopath/2009/WSSList/dataFields\"
xmlns:ma=\"http://schemas.microsoft.com/office/2009/metadata/properties/metaAttributes\"
xmlns:pc=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
<dfs:queryFields></dfs:queryFields><dfs:dataFields>
<d:SharePointListItem_RW>
<d:NombreCampo>ValorCampo</d:NombreCampo>
</d:SharePointListItem_RW></dfs:dataFields>
Cada parámetro debe ser especificado como "<d:Nombre>Valor</d:Nombre>" después del parámetro "<d:SharePointListItem_RW>".
Nota: Flujos de Trabajo no se pueden iniciar con una cuenta de sistema, deben ser siempre iniciados por cuentas de usuarios de SharePoint
Fuente: http://www.gavd.net/servers/sharepointv4/spsv4_item.aspx?top=1&itm=1408
No hay comentarios:
Publicar un comentario