Showing posts with label Attach Workflow to Content Type SharePoint. Show all posts
Showing posts with label Attach Workflow to Content Type SharePoint. Show all posts

Monday, December 2, 2013

Attach/Associate Workflow to Content Type SharePoint






  private bool CreateWorkflowAssociation(string strContentTypeName, string strWorkflowName, string strTaskList, string strHistoryList, string strSiteCollection)
        {
            SPSite objSite = null;
            SPWeb objWeb = null;
            SPContentType objContentType = null;
            bool blnReturn = false;

            try
            {
                objSite = new SPSite(strSiteCollection);
                objWeb = objSite.OpenWeb();

                objWeb.AllowUnsafeUpdates = true;
                objWeb.Update();
                objContentType = objWeb.ContentTypes[strContentTypeName];

                // Get the specific template for ReminderWorkflow
                SPWorkflowTemplate workflowTemplate = null;
                foreach (SPWorkflowTemplate template in objWeb.WorkflowTemplates)
                {
                    workflowTemplate = template;
                    if (workflowTemplate.Name == strWorkflowName)
                        break;
                }
                // Create an association.              
                SPWorkflowAssociation workflowAssociation = SPWorkflowAssociation.CreateWebContentTypeAssociation(workflowTemplate, strWorkflowName, strTaskList, strHistoryList);

                if (objContentType.WorkflowAssociations.GetAssociationByName(workflowAssociation.Name, objWeb.Locale) == null)
                    objContentType.WorkflowAssociations.Add(workflowAssociation);
                else
                    objContentType.WorkflowAssociations.Update(workflowAssociation);

                objWeb.Update();
                blnReturn = true;
                LogWindow.Text = "WORKFLOW ASSOCIATION DONE SUCCESSFULLY FOR " + strContentTypeName;
            }
            catch (Exception ex)
            {
                //throw;
                LogWindow.Text = "ERROR DETECTED WHILE WORKFLOW ASSOCIATION FOR " +" " + strContentTypeName +" " + ex.Message.ToString();
            }
            finally
            {
                if (objSite != null) objSite.Close();
                if (objWeb != null) objWeb.Close();
            }
            return (blnReturn);
        }


Usage:-


 bool AssociateWorkflow = CreateWorkflowAssociation(ContentType, "RetentionPolicy", "Tasks", "Workflow History", sitecollectionUrl);