Avviare un workflow SharePoint da codice
Un esempio di come avviare un workflow di SharePoint su una lista via codice:
se invece voglio verificare se su un item c'è un workflow già avviato:
C#
// using Microsoft.SharePoint.Workflow;
string wfName = "nome del workflow";
string listName = "nome lista";
if (string.IsNullOrEmpty(wfName))
{
throw new ArgumentNullException("Workflow name not defined.");
}
SPWeb web = SPContext.Current.Web;
SPList list = web.Lists[listName];
//cerco il workflow tra quelli associati alla lista
SPWorkflowAssociation wfAassociation = list.WorkflowAssociations.GetAssociationByName(wfName
, CultureInfo.InvariantCulture);
if (wfAassociation != null)
{
// se c'è lo avvio
web.Site.WorkflowManager.StartWorkflow(item, wfAassociation
, wfAassociation.AssociationData, SPWorkflowRunOptions.Asynchronous);
}
C#
private bool WorkflowIsRunning(SPListItem item)
{
foreach (SPWorkflow wf in item.Workflows)
{
if ((wf.InternalState & SPWorkflowState.Running) == SPWorkflowState.Running)
{
return true;
}
}
return false;
}