Como obtener el estado del Workflow de un Item con C#

Una de las cosas que me ha surgido, ha sido la necesidad de obtener mediante programación, el estado de los items de una lista o biblioteca en SharePoint 2010.

Es un proceso muy sencillo, ya que hay que obtener la el valor del campo que se genera en la lista, cuando se le asocia un workflow, únicamente lo que debemos hacer posteriormente, es convertir el numero por un texto legible. En caso de ser necesario puedes hacer directamente la traducción en castellano de los estados, si eliminas la linea System.Enum.GetName(typeof(SPWorkflowStatus), WorkflowStatusValue) y la sustituyes por un switch por ejemplo…

Aquí os dejo una función que podrá serviros de ayuda, los unicos parametros que hay que pasar son:

siteUrl = Url del sitio
listName = Nombre de la lista o libreria a la cual esta asociado el workflow
itemId = Identificador, del item que queremos consultar
wfFieldName = Nombre del campo de la lista donde se muestra el estado del workflow

 

static string GetWorkflowStatud(string siteUrl, string listName, int itemId, string wfFieldName)
{
  string result = string.Empty;
  SPSecurity.RunWithElevatedPrivileges(delegate
  {
	try
	{
	  using (SPSite spSite = new SPSite(siteUrl))
	  {
		using (SPWeb spWeb = spSite.OpenWeb())
		{
		  //instancia la lista/biblioteca
		  SPList spList = spWeb.Lists[listName]; 
		  //recupera el item de la lista
		  SPListItem spListItem = spList.Items.GetItemById(itemId); 
		  //recupera el valor del campo del Workflow
		  Int32 WorkflowStatusValue = Convert.ToInt32(spListItem[wfFieldName]); 
		  //traduce el numero a texto
		  string WorkflowStatusString = System.Enum.GetName(typeof(SPWorkflowStatus), WorkflowStatusValue); 
		  //almacena el estado del Workflow
		  result = WorkflowStatusString;
		}
	  }
	}
	catch (Exception ex) { result = ex.Message; }
  });
  return result;
}

Para más información, puedes consultar el enumerador SPWorkflowStatus con los posibles estados del workflow.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *