Example #1
0
        public SPWorkflowInstance StartWorkflowWithContext(object context, SPWorkflowAssociationInstance association, object eventData, object runOptions)
        {
            if (association == null)
            {
                throw new JavaScriptException(this.Engine, "Error",
                                              "An instance of a SPWorkflowAssociation object must be supplied as the second argument.");
            }

            var wfRunOptions = SPWorkflowRunOptions.Synchronous;

            if (runOptions != Undefined.Value)
            {
                SPWorkflowRunOptions tmpOptions;
                if (TypeConverter.ToString(runOptions).TryParseEnum(true, out tmpOptions))
                {
                    wfRunOptions = tmpOptions;
                }
            }

            var assData = association.SPWorkflowAssociation.AssociationData;

            if (eventData != Undefined.Value)
            {
                assData = TypeConverter.ToString(eventData);
            }

            object localContext = null;

            if (context is SPListItemInstance)
            {
                localContext = (context as SPListItemInstance).ListItem;
            }
            else if (context is SPSiteInstance)
            {
                localContext = (context as SPSiteInstance).Site;
            }
            else if (context is SPListInstance)
            {
                localContext = (context as SPListInstance).List;
            }
            else if (context is SPContentTypeInstance)
            {
                localContext = (context as SPContentTypeInstance).ContentType;
            }

            var result = m_workflowManager.StartWorkflow(localContext,
                                                         association.SPWorkflowAssociation, assData, wfRunOptions);

            return(result == null
                ? null
                : new SPWorkflowInstance(this.Engine.Object.InstancePrototype, result));
        }
Example #2
0
        private static void StartWorkflow(SPListItem listItem, string workflowName)
        {
            try
            {
                SPWorkflowManager manager = listItem.Web.Site.WorkflowManager;
                SPWorkflowAssociationCollection objWorkflowAssociationCollection = listItem.ParentList.WorkflowAssociations;
                foreach (SPWorkflowAssociation objWorkflowAssociation in objWorkflowAssociationCollection)
                {
                    if (String.Compare(objWorkflowAssociation.Name, workflowName, true) == 0)
                    {
                        //We found our workflow association that we want to trigger.

                        //Replace the workflow_GUID with the GUID of the workflow feature that you
                        //have deployed.

                        try
                        {
                            manager.StartWorkflow(listItem, objWorkflowAssociation, objWorkflowAssociation.AssociationData, true);
                            //The above line will start the workflow...
                        }
                        catch (Exception)
                        { }


                        break;
                    }
                }
            }
            catch (Exception)
            {}
        }
Example #3
0
        public static void StartWorkflow(SPListItem listItem, string workflowName, SPWorkflowRunOptions runOption)
        {
            try
            {
                SPWorkflowManager manager = listItem.Web.Site.WorkflowManager;
                SPWorkflowAssociationCollection objWorkflowAssociationCollection = listItem.ParentList.WorkflowAssociations;
                Debug.WriteLine("WF.Count=" + objWorkflowAssociationCollection.Count.ToString());

                foreach (SPWorkflowAssociation objWorkflowAssociation in objWorkflowAssociationCollection)
                {
                    Debug.WriteLine("WF.InternalName=" + objWorkflowAssociation.InternalName);
                    Debug.WriteLine("WF.Id=" + objWorkflowAssociation.Id.ToString());

                    if (String.Compare(objWorkflowAssociation.Name, workflowName, true) == 0)
                    {
                        Debug.WriteLine("WF.Selected");

                        try
                        {
                            SPWorkflowCollection wfc = manager.GetItemActiveWorkflows(listItem);
                            bool isActive            = false;
                            foreach (SPWorkflow wf in wfc)
                            {
                                Debug.WriteLine("WF.InternalName=" + wf.ItemName);

                                // wf.IsCompleted nie używać - blokuje kolejne uruchomienie procesu jeżęli status jest "Ukończono"
                                if (wf.IsLocked && objWorkflowAssociation.Id.Equals(wf.AssociationId))
                                {
                                    isActive = true;
                                    Debug.WriteLine("WF.IsLocked=" + wf.IsLocked.ToString());
                                    Debug.WriteLine("WF.AssociationId=" + wf.AssociationId.ToString());
                                    break;
                                }
                            }

                            if (!isActive)
                            {
                                SPWorkflow spw = manager.StartWorkflow(listItem, objWorkflowAssociation, objWorkflowAssociation.AssociationData, runOption);
                                Debug.WriteLine("Workflow: " + workflowName + " Internal State: " + spw.InternalState);
                                //The above line will start the workflow...
                            }
                            else
                            {
                                Debug.WriteLine("WF aktualnie uruchomiony - kolejna aktywacja procesu przerwana");
                                //ElasticEmail.EmailGenerator.SendMail("wf aktualnie uruchomiony" + listItem.ID.ToString(), string.Empty);
                            }
                        }
                        catch (Exception)
                        { }


                        break;
                    }
                }
            }
            catch (Exception)
            { }
        }
Example #4
0
        public static SPWorkflow StartWorkflow(SPListItem listItem, string workflowName)
        {
            SPWorkflow wf = null;

            try
            {
                SPWorkflowManager manager = listItem.Web.Site.WorkflowManager;
                SPWorkflowAssociationCollection objWorkflowAssociationCollection = listItem.ParentList.WorkflowAssociations;
                foreach (SPWorkflowAssociation objWorkflowAssociation in objWorkflowAssociationCollection)
                {
                    if (String.Compare(objWorkflowAssociation.Name, workflowName, true) == 0)
                    {
                        //We found our workflow association that we want to trigger.

                        //Replace the workflow_GUID with the GUID of the workflow feature that you
                        //have deployed.

                        try
                        {
                            //result = manager.StartWorkflow(listItem, objWorkflowAssociation, objWorkflowAssociation.AssociationData, SPWorkflowRunOptions.SynchronousAllowPostpone);
                            wf = manager.StartWorkflow(listItem, objWorkflowAssociation, objWorkflowAssociation.AssociationData, true);

                            //ElasticEmail.EmailGenerator.SendMail("StartWorkflow: " + workflowName + " " + wf.InternalState.ToString(), "");

                            //manager.StartWorkflow(listItem, objWorkflowAssociation, objWorkflowAssociation.AssociationData, true);
                            //The above line will start the workflow...
                        }
                        catch (Exception)
                        { }


                        break;
                    }
                }
            }
            catch (Exception)
            { }

            return(wf);
        }