miércoles, 3 de septiembre de 2008

Manipulando WorkFlows

Este es el segundo Post que abarca este tema.
En el primer posts Iniciar Automanticamente WorkFlow quedaron algunas dudas.
Como obtener el TemplateID de un workflow asociado a un Document Library.
Para esto haremos uso de una dll llamada Microsoft.SharePoint.dll que obviamente puede ser descargado de la pagina de microsoft.

Los parametros que usaremos seran:
urlSite: La direccion Url absoluta del site, donde estamos trabajando.
Libreria: El Nombre o GUID, de la libreria, donde estamos trabajando.

SPSite _site = new SPSite(urlSite);
SPWeb _Web = _site.OpenWeb();
String GUI = Libreria;//en formato similar a este: {68A5A98D-61AF-4BDF-B1DF-A326EA34460D}
Guid MiGUI = new Guid(GUI);
SPList _List = _Web.Lists[MiGUI];

SPWorkflowAssociationCollection MisWorkFlows=_List.WorkflowAssociations

En esta variable tenemos objetos del tipo SPWorkflowAssociation, que poseen 2 propiedades muy utiles: Name y Id, el primero obviamente si nombre lo dice, es el nombre del workflow y el segundo es el llamado TemplateID.
Pero ojo que se tendria que navegar la variable con un forech de esta manera:
Especificamente deseo conocer el TemplateID de un workflow cuyo nombre es pasado en la variable WFName="Mi WorkFlow".

string WFId="";
string WFName="MiWorkFlow";
foreach (SPWorkflowAssociation WF in _List.WorkflowAssociations)
{
if (WF.Name == WFName)
{
WFId=WF.Id.ToString();
}
}

De esta manera obtener el TemplateID de un WorkFlow, conociendo el nombre, libreria y site donde se encuentra este.