示例#1
0
        public SPWorkflowCollectionInstance CreateWorkflowFromWeb(SPWebInstance web, object inclusiveFilterStates,
                                                                  object exclusiveFilterStates, object rowCountLimit, object descending)
        {
            if (web == null)
            {
                throw new JavaScriptException(Engine, "Error", "A web must be supplied.");
            }

            SPWorkflowCollection result;

            if (inclusiveFilterStates == Undefined.Value && exclusiveFilterStates == Undefined.Value &&
                rowCountLimit == Undefined.Value && descending == Undefined.Value)
            {
                result = new SPWorkflowCollection(web.Web);
            }
            else
            {
                SPWorkflowState wsInclusiveFilterStates;
                if (!TypeConverter.ToString(inclusiveFilterStates).TryParseEnum(true, out wsInclusiveFilterStates))
                {
                    throw new JavaScriptException(Engine, "Error", "inclusiveFilerStates argument must be a valid SPWorkflowState.");
                }

                SPWorkflowState wsExclusiveFilterStates;
                if (!TypeConverter.ToString(exclusiveFilterStates).TryParseEnum(true, out wsExclusiveFilterStates))
                {
                    throw new JavaScriptException(Engine, "Error", "exclusiveFilterStates argument must be a valid SPWorkflowState.");
                }

                result = new SPWorkflowCollection(web.Web, wsInclusiveFilterStates, wsExclusiveFilterStates, TypeConverter.ToInteger(rowCountLimit), TypeConverter.ToBoolean(descending));
            }

            return(new SPWorkflowCollectionInstance(Engine.Object.InstancePrototype, result));
        }
示例#2
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)
            { }
        }
示例#3
0
        public WorkflowCollectionNode(object parent, SPWorkflowCollection workFlowCollection)
        {
            this.Tag = workFlowCollection;
            this.SPParent = parent;

            this.Setup();

            this.Nodes.Add(new ExplorerNodeBase("Dummy"));
        }
示例#4
0
        public WorkflowCollectionNode(object parent, SPWorkflowCollection workFlowCollection)
        {
            this.Tag      = workFlowCollection;
            this.SPParent = parent;

            this.Setup();

            this.Nodes.Add(new ExplorerNodeBase("Dummy"));
        }
示例#5
0
        public SPWorkflowCollectionInstance(ObjectInstance prototype, SPWorkflowCollection workflowCollection)
            : this(prototype)
        {
            if (workflowCollection == null)
            {
                throw new ArgumentNullException("workflowCollection");
            }

            m_workflowCollection = workflowCollection;
        }
示例#6
0
        /// <summary>
        /// The get method will get RegApprovalId from workflow attached to given registration
        /// </summary>
        /// <param name="regItem">Registratoin List item with workflow</param>
        /// <returns>RegApprovalId</returns>
        static public int GetRegApprovalID(SPListItem regItem)
        {
            int regApprovalID = 0;

            if (regItem != null)
            {
                SPWorkflowCollection workflows = regItem.Workflows;
                foreach (SPWorkflow workflow in workflows)
                {
                    if (workflow.InternalState == SPWorkflowState.Running)
                    {
                        regApprovalID = workflow.Tasks[0].ID;
                    }
                }
            }

            return(regApprovalID);
        }