/// <summary>
        /// Gets the number of active tasks for instance of a workflow
        /// </summary>
        /// <param name="ProcessInstanceId"></param>
        /// <returns></returns>
        public int GetTaskCount(int ProcessInstanceId, string ProcessName)
        {
            int Result = 0;
            int count  = 0;

            SourceCode.Workflow.Management.WorkflowManagementServer wrkmgt        = new SourceCode.Workflow.Management.WorkflowManagementServer(servername, 5555);
            SourceCode.Workflow.Management.WorklistItems            worklistItems = null;
            wrkmgt.Open();
            try
            {
                worklistItems = wrkmgt.GetWorklistItems("", "", "", "", "", "", "");

                foreach (SourceCode.Workflow.Management.WorklistItem worklistItem in worklistItems)
                {
                    if (worklistItem.ProcInstID == ProcessInstanceId)
                    {
                        count++;
                    }
                }
                Result = count;
            }

            catch (Exception ex)
            {
                Result = 0;
            }
            finally
            {
                wrkmgt.Connection.Close();
            }

            return(Result);
        }
Esempio n. 2
0
    private void BindList(string InstanceID)
    {
        DataTable dt = processHistoryBLL.GetProcessHistoryList(InstanceID);

        if (dt != null && dt.Rows != null && dt.Rows.Count > 0)
        {
            string formID = dt.Rows[0]["FormID"].ToString();
            if (!string.IsNullOrEmpty(formID))
            {
                SourceCode.Workflow.Management.WorklistItems items = WorkflowManage.GetNextApprover(formID);
                if (items != null)
                {
                    foreach (SourceCode.Workflow.Management.WorklistItem item in items)
                    {
                        string[] nameArray = item.Actioner.Name.Split('\\');
                        if (nameArray != null && nameArray.Length > 1)
                        {
                            string    domainID          = nameArray[1];
                            DataTable employeeDataTable = processHistoryBLL.GetEmployeeInfo(domainID);
                            DataRow   dataRow           = dt.NewRow();
                            dt.Rows.Add(dataRow);
                            dataRow["ApproveByUserName"] = employeeDataTable == null ? string.Empty : employeeDataTable.Rows[0]["EmployeeName"].ToString();
                            dataRow["DepartName"]        = employeeDataTable == null ? string.Empty : employeeDataTable.Rows[0]["DepartName"].ToString();
                            dataRow["FinishedTime"]      = new DateTime(9999, 12, 31);
                            dataRow["ApproveResult"]     = "送达";
                            dataRow["CurrentActiveName"] = item.ActivityName;
                            dataRow["ISSign"]            = "0";
                        }
                    }
                }
            }
        }
        rpViewHistory.DataSource = dt;
        rpViewHistory.DataBind();
    }
        /// <summary>
        /// Checks to see if there is an task
        /// </summary>
        /// <param name="ProcessInstanceId"></param>
        /// <param name="ProcessName"></param>
        /// <returns></returns>
        public Boolean IsTaskFound(int ProcessInstanceId, string ProcessName)
        {
            Boolean Result = false;

            SourceCode.Workflow.Management.WorkflowManagementServer wrkmgt        = new SourceCode.Workflow.Management.WorkflowManagementServer(servername, 5555);
            SourceCode.Workflow.Management.WorklistItems            worklistItems = null;
            wrkmgt.Open();
            try
            {
                worklistItems = wrkmgt.GetWorklistItems("", "", "", "", "", "", "");


                foreach (SourceCode.Workflow.Management.WorklistItem worklistItem in worklistItems)
                {
                    if (worklistItem.ProcInstID == ProcessInstanceId)
                    {
                        Result = true;
                    }
                }
            }
            catch (Exception ex)
            {
                Result = false;
            }
            finally
            {
                wrkmgt.Connection.Close();
            }

            return(Result);
        }
        /// <summary>
        /// Gets details about the task
        /// </summary>
        /// <param name="ProcessInstanceId"></param>
        /// <returns></returns>
        public List <tasklist> GetTask(string ProcessInstanceId, string ProcessName)
        {
            int ProcInstId = 0;

            int.TryParse(ProcessInstanceId, out ProcInstId);

            List <tasklist> list = new List <tasklist>();

            SourceCode.Workflow.Management.WorkflowManagementServer wrkmgt        = new SourceCode.Workflow.Management.WorkflowManagementServer(servername, 5555);
            SourceCode.Workflow.Management.WorklistItems            worklistItems = null;
            wrkmgt.Open();
            try
            {
                worklistItems = wrkmgt.GetWorklistItems("", "", "", "", "", "", "");

                foreach (SourceCode.Workflow.Management.WorklistItem worklistItem in worklistItems)
                {
                    if (worklistItem.ProcInstID == ProcInstId)
                    {
                        var x = worklistItem.ActivityName;

                        list.Add(new tasklist
                        {
                            Status        = worklistItem.Status.ToString(),
                            Destination   = worklistItem.Destination,
                            EventName     = worklistItem.EventName,
                            ActInstDestID = worklistItem.ActInstDestID.ToString(),
                            ActivityName  = worklistItem.ActivityName,
                            SerialNumber  = (ProcessInstanceId + "_" + worklistItem.ActInstDestID)
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                // Result = false;
            }
            finally
            {
                wrkmgt.Connection.Close();
            }

            return(list);
        }