Associare da codice un workflow in modo dinamico ad una lista di sharepoint, ecco il codice:
internal static void AssociateWorkflowToDocLb(SPList doclib)
{
Guid wfId = Guid.Empty;foreach (SPWorkflowTemplate wft in doclib.ParentWeb.WorkflowTemplates)
{if (wft.Name == Constants.__workflowNome)
{
wfId = wft.Id;doclib.ParentWeb.AllowUnsafeUpdates = true;
if (doclib.ParentWeb.Lists["Tasks"] == null)
doclib.ParentWeb.Lists.Add("Tasks", "", SPListTemplateType.Tasks);SPList taskList = doclib.ParentWeb.Lists["Tasks"];
if (doclib.ParentWeb.Lists["Workflow History"] == null)
doclib.ParentWeb.Lists.Add("Workflow History", "", SPListTemplateType.WorkflowHistory);
SPList histList = doclib.ParentWeb.Lists["Workflow History"];SPWorkflowTemplate wfTemplate = wft;
wfTemplate.AutoStartCreate = true;
wfTemplate.AutoStartChange = true;SPWorkflowAssociation wfAssociation = SPWorkflowAssociation.
CreateListAssociation(wfTemplate, Constants.__workflowNomeDisplay, taskList, histList);
doclib.ParentWeb.Site.AllowUnsafeUpdates = true;
doclib.ParentWeb.AllowUnsafeUpdates = true;
doclib.ParentWeb.Update();
//doclib.ParentWeb.Site.WebApplication.FormDigestSettings.Enabled = false;
doclib.AddWorkflowAssociation(wfAssociation);
foreach (SPContentType ctp in doclib.ContentTypes)
{
try
{
ctp.AddWorkflowAssociation(wfAssociation);
ctp.Update();
}
catch (Exception ex)
{
}
}break;
}
}
}
No comments:
Post a Comment