public ResponseResult GetReadyTasks(TaskQueryEntity query)
        {
            IWorkflowService service = new WorkflowService();
            var result = service.GetReadyTasks(query);

            return(ResponseResult.Success());
        }
Beispiel #2
0
        /// <summary>
        /// 流程否决
        /// </summary>
        /// <param name="taskId"></param>
        //public bool RejectProcess(string taskId, string comment)
        //{
        //    bool result = false;
        //    _dataAccessor.DbTransaction(session =>
        //    {
        //        var tim = new TaskManager(_dataAccessor, session, _loggerFactory);
        //        WfTask task = tim.GetTask(taskId);
        //        if (!task.IsCanHandle)
        //        {
        //            result = false;
        //        }
        //        else
        //        {

        //            if (task != null)
        //            {
        //                _dataAccessor.Execute("update WfProcessInstance set ProcessState='" + WfProcessInstanceState.Completed + "', ApproveState='" + WfApproveState.Disagree + "' where Fid='" + task.ProcessInsUid + "'");
        //                _dataAccessor.Execute("update WfTask set TaskState='" + WfTaskState.Rejected + "' where Fid='" + task.Fid);
        //                _dataAccessor.Execute("update WfActivity set ActivityState='" + WfActivityInstanceState.Completed + "', ApproveState='" + WfApproveState.Disagree + "' where Fid='" + task.ActivityInsUid + "'");

        //                TaskAdviceManager tam = new TaskAdviceManager(_dataAccessor, session, _session, _loggerFactory);
        //                tam.RecordWhenReject(task.ProcessInsUid, task.Fid, comment);

        //                result = true;
        //            }
        //            else
        //            {
        //                result = false;
        //            }
        //        }

        //    });
        //    return result;
        //}
        #endregion

        #region 任务读取和处理
        ///// <summary>
        ///// 设置任务为已读状态(根据任务ID获取任务)
        ///// </summary>
        ///// <param name="runner">执行人</param>
        ///// <returns>任务读取的标志</returns>
        //public bool SetTaskRead(WfAppRunner taskRunner)
        //{
        //    bool isRead = false;
        //    try
        //    {
        //        var taskManager = new TaskManager();
        //        taskManager.SetTaskRead(taskRunner);
        //        isRead = true;
        //    }
        //    catch (System.Exception)
        //    {
        //        throw;
        //    }

        //    return isRead;
        //}

        ///// <summary>
        ///// 获取运行中的任务
        ///// </summary>
        ///// <param name="query">查询实体</param>
        ///// <returns>任务列表</returns>
        //public IList<TaskViewEntity> GetRunningTasks(TaskQueryEntity query)
        //{
        //    int allRowsCount = 0;
        //    var taskManager = new TaskManager();
        //    var taskList = taskManager.GetRunningTasks(query, out allRowsCount);
        //    if (taskList != null)
        //        return taskList.ToList();
        //    else
        //        return null;
        //}

        /// <summary>
        /// 获取任务(分页)
        /// </summary>
        /// <param name="query">查询对象</param>
        /// <returns>任务列表</returns>
        //public PageDataView<WfTask> GetPagedTasks(PageCriteria criteria)
        //{
        //    return new TaskManager(_dataAccessor, _loggerFactory).GetPagedTasks(criteria);
        //}

        /// <summary>
        /// 获取任务列表
        /// </summary>
        /// <param name="taskQueryEntity"></param>
        /// <returns></returns>
        public IEnumerable <TaskViewModel> GetTasks(TaskQueryEntity taskQueryEntity)
        {
            string sql = @"select a.Fid as TaskId, a.TaskName, a.TaskState, a.TaskType, a.ExecutorName, 
            a.ExecutorRealName, a.TaskStartTime, a.TaskEndTime, b.Fid as ProcessId, b.ProcessName, b.StarterName, b.StarterRealName  
            from WfTask a, WfProcessInstance b where a.ProcessId=b.Fid  ";

            if (taskQueryEntity != null)
            {
                if (!string.IsNullOrWhiteSpace(taskQueryEntity.TaskState))
                {
                    sql += " and a.TaskState='" + taskQueryEntity.TaskState + "'";
                }
                else if (!string.IsNullOrWhiteSpace(taskQueryEntity.StarterId))
                {
                    sql += " and b.StarterName='" + taskQueryEntity.StarterId + "'";
                }
                else if (!string.IsNullOrWhiteSpace(taskQueryEntity.ExecutorId))
                {
                    sql += " and a.ExecutorName='" + taskQueryEntity.ExecutorId + "'";
                }
            }

            sql += " order by a.Fid desc";
            IEnumerable <TaskViewModel> model = _dataAccessor.QueryOriSql <TaskViewModel>(sql);

            return(model);
        }
Beispiel #3
0
        /// <summary>
        /// 获取正在运行中的活动实例
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public IList <ActivityInstanceEntity> GetRunningActivityInstance(TaskQueryEntity query)
        {
            var aim  = new ActivityInstanceManager();
            var list = aim.GetRunningActivityInstanceList(query.AppInstanceID, query.ProcessGUID).ToList();

            return(list);
        }
Beispiel #4
0
        private void btn综合部签字_Click(object sender, EventArgs e)
        {
            WfAppRunner appRunner = new WfAppRunner();

            appRunner.ProcessGUID   = process_guid;
            appRunner.AppInstanceID = application_instance_id;
            //第一步任务承担者,登录后要找到自己的任务
            appRunner.AppName  = "officeIn";
            appRunner.UserID   = "3";
            appRunner.UserName = "******";

            IWorkflowService wfService = new WorkflowService();
            TaskQueryEntity  en        = new TaskQueryEntity
            {
                UserID = "3"
            };
            IList <TaskViewEntity> taskViewList = wfService.GetReadyTasks(en);

            appRunner.TaskID = taskViewList[0].TaskID;

            PerformerList list = new PerformerList();

            list.Add(new Performer("5", "user5"));
            NodeView nv = wfService.GetNextActivity(appRunner);
            Dictionary <String, PerformerList> dictPerformer = new Dictionary <String, PerformerList>();

            dictPerformer.Add(nv.ActivityGUID, list);
            appRunner.NextActivityPerformers = dictPerformer;
            var result = wfService.RunProcessApp(appRunner);
            var msg    = string.Format("流程运行结果:{0}\r\n{1}\r\n", result.Status, result.Message);

            tBoxResult.Text += msg;
        }
Beispiel #5
0
        /// <summary>
        /// 当前用户代办任务列表(一次加载所有数据)
        /// </summary>
        /// <returns></returns>
        public ActionResult FlowList()
        {
            IWorkflowService service = new WorkflowService();
            TaskQueryEntity  en      = new TaskQueryEntity
            {
                UserID = User.Identity.GetUserId()
            };
            IList <TaskViewEntity> taskViewList = service.GetReadyTasks(en);

            return(View(taskViewList));
        }
Beispiel #6
0
        private void button1_Click(object sender, EventArgs e)
        {
            TaskQueryEntity query = new TaskQueryEntity();

            query.AppInstanceID = "4612";
            query.AppName       = "order";
            query.UserID        = "2";

            var wfService = new WorkflowService();

            wfService.GetRunningTasks(query);
        }
Beispiel #7
0
        /// <summary>
        /// 获取办结任务列表
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public IList <TaskViewEntity> GetCompletedTasks(TaskQueryEntity query)
        {
            int allRowsCount = 0;
            var taskManager  = new TaskManager();
            var taskList     = taskManager.GetCompletedTasks(query, out allRowsCount);

            if (taskList != null)
            {
                return(taskList.ToList());
            }
            else
            {
                return(null);
            }
        }
Beispiel #8
0
        /// <summary>
        /// 获取当前用户待办任务列表
        /// </summary>
        private void GetReadyTasks()
        {
            IWorkflowService wfService = new WorkflowService();
            TaskQueryEntity en = new TaskQueryEntity
            {
                UserID = LoginUserID.ToString()
            };
            IList<TaskViewEntity> taskViewList = wfService.GetReadyTasks(en);
            if (taskViewList != null)
            {
                Repeater2.DataSource = taskViewList;
                Repeater2.DataBind();
            }

        }
Beispiel #9
0
        /// <summary>
        /// 运行流程
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnRun_Click(object sender, EventArgs e)
        {
            WfAppRunner appRunner = new WfAppRunner();

            appRunner.ProcessGUID   = process_guid;
            appRunner.AppInstanceID = application_instance_id;
            //第一步任务承担者,登录后要找到自己的任务
            appRunner.AppName  = "officeIn";
            appRunner.UserID   = "1";
            appRunner.UserName = "******";
            IWorkflowService wfService = new WorkflowService();
            TaskQueryEntity  en        = new TaskQueryEntity
            {
                UserID = "1"
            };
            IList <TaskViewEntity> taskViewList = wfService.GetReadyTasks(en);

            if (taskViewList != null)
            {
                dataGridView1.DataSource = taskViewList;
            }
            ////下一步执行人
            //PerformerList list = new PerformerList();
            //Performer p = new Performer("3", "user3");
            //下一步人ID,Name 注意有角色区分
            //list.Add(p);
            //Dictionary<string, string> dictCondition = new Dictionary<string, string>();
            //dictCondition.Add("IsHavingWeight", "true");
            //dictCondition.Add("CanUseStock", "false");
            //appRunner.Conditions = dictCondition;
            //NodeView nv = wfService.GetNextActivity(appRunner);//, dictCondition
            //Dictionary<String, PerformerList> dictPerformer = new Dictionary<String, PerformerList>();
            //dictPerformer.Add(nv.ActivityGUID, list);
            //appRunner.NextActivityPerformers = dictPerformer;

            var result = wfService.RunProcessApp(appRunner);
            var msg    = string.Format("流程运行结果:{0}\r\n", result.Status);

            textBox1.Text += msg;
        }
Beispiel #10
0
        public ResponseResult <List <TaskViewEntity> > QueryCompletedTasks(TaskQueryEntity query)
        {
            var result = ResponseResult <List <TaskViewEntity> > .Default();

            try
            {
                var taskList  = new List <TaskViewEntity>();
                var wfService = new WorkflowService();
                var itemList  = wfService.GetCompletedTasks(query);

                if (itemList != null)
                {
                    taskList = itemList.ToList();
                }
                result = ResponseResult <List <TaskViewEntity> > .Success(taskList);
            }
            catch (System.Exception ex)
            {
                result = ResponseResult <List <TaskViewEntity> > .Error(string.Format(
                                                                            "获取已办任务数据失败, 异常信息:{0}",
                                                                            ex.Message));
            }
            return(result);
        }
Beispiel #11
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string result = string.Empty;
            string Action = string.Empty;

            if (context.Request.QueryString["Action"] != null && !string.IsNullOrWhiteSpace(context.Request.QueryString["Action"].ToString()))
            {
                string ProcessGUID = GetRequestString(context, "ProcessGUID");
                string Version     = GetRequestString(context, "Version");
                Action = GetRequestString(context, "Action");
                switch (Action)
                {
                case "QueryProcessFile":
                    ProcessFileQuery query = new ProcessFileQuery();
                    query.ProcessGUID = ProcessGUID;
                    query.Version     = Version;
                    ResponseResult <ProcessFileEntity> _result = QueryProcessFile(query);
                    result = JsonHelper.ObjectToJson(_result);
                    break;


                case "QueryReadyActivityInstance":
                    string          AppInstanceID = GetRequestString(context, "AppInstanceID");
                    TaskQueryEntity taskQuery     = new TaskQueryEntity();
                    taskQuery.ProcessGUID   = ProcessGUID;
                    taskQuery.AppInstanceID = AppInstanceID;

                    ResponseResult <List <ActivityInstanceEntity> > activityInstanceResult = QueryReadyActivityInstance(taskQuery);
                    result = JsonHelper.ObjectToJson(activityInstanceResult);
                    break;
                }
            }
            context.Response.Write(result);
            context.Response.End();
        }
Beispiel #12
0
        /// <summary>
        /// 获取任务(分页)
        /// </summary>
        /// <param name="query"></param>
        /// <param name="activityState"></param>
        /// <returns></returns>
        private IEnumerable <TaskViewEntity> GetTasksPaged(TaskQueryEntity query, int activityState, out int allRowsCount)
        {
            //processState:2 -running 流程处于运行状态
            //activityType:4 -表示“任务”类型的节点
            //activityState: 1-ready(准备), 2-running(运行);

            StringBuilder sql = new StringBuilder(512);

            sql.Append(@"SELECT 
                            Top 100 * 
                         FROM vwWfActivityInstanceTasks 
                         WHERE ProcessState=2 
                            AND ActivityType=4
                            AND ActivityState=@activityState
                            AND AssignedToUserID=@assignedToUserID
                        ");

            DynamicParameters parameters = new DynamicParameters();

            parameters.Add("@activityState", activityState);
            parameters.Add("@assignedToUserID", query.UserID);

            if (!string.IsNullOrEmpty(query.AppInstanceID))
            {
                sql.Append(" AND AppInstanceID=@appInstanceID");
                parameters.Add("@appinstanceID", query.AppInstanceID);
            }

            if (!string.IsNullOrEmpty(query.ProcessGUID))
            {
                sql.Append(" AND ProcessGUID=@processGUID");
                parameters.Add("@processGUID", query.ProcessGUID);
            }

            if (!string.IsNullOrEmpty(query.AppName))
            {
                sql.AppendFormat(" AND AppName like '%' + @appName + '%' ");
                parameters.Add("@appName", query.AppName);
            }

            sql.Append(" ORDER BY TASKID DESC ");

            //如果数据记录数为0,则不用查询列表
            StringBuilder sqlCount = new StringBuilder(1024);

            sqlCount.Append("SELECT COUNT(1) FROM (");
            sqlCount.Append(sql.ToString());
            sqlCount.Append(")T");

            allRowsCount = Repository.Count(sqlCount.ToString(), parameters);
            if (allRowsCount == 0)
            {
                return(null);
            }

            //查询列表数据并返回结果集
            var list = Repository.Query <TaskViewEntity>(sql.ToString(),
                                                         parameters);

            return(list);
        }
Beispiel #13
0
 /// <summary>
 /// 获取当前用户待办的任务
 /// </summary>
 /// <param name="query"></param>
 /// <returns></returns>
 internal IEnumerable <TaskViewEntity> GetReadyTasks(TaskQueryEntity query, out int allRowsCount)
 {
     return(GetTasksPaged(query, 1, out allRowsCount));
 }
Beispiel #14
0
        public ResponseResult <List <ActivityInstanceEntity> > QueryReadyActivityInstance(TaskQueryEntity query)
        {
            var result = ResponseResult <List <ActivityInstanceEntity> > .Default();

            try
            {
                var wfService = new WorkflowService();
                var itemList  = wfService.GetRunningActivityInstance(query).ToList();


                result = ResponseResult <List <ActivityInstanceEntity> > .Success(itemList);
            }
            catch (System.Exception ex)
            {
                result = ResponseResult <List <ActivityInstanceEntity> > .Error(string.Format(
                                                                                    "获取待办任务数据失败, 异常信息:{0}",
                                                                                    ex.Message));
            }
            return(result);
        }
Beispiel #15
0
 /// <summary>
 /// 获取已经完成任务
 /// </summary>
 /// <param name="query">查询实体</param>
 /// <param name="allRowsCount">任务记录数</param>
 /// <returns>任务列表</returns>
 internal IEnumerable <TaskViewEntity> GetCompletedTasks(TaskQueryEntity query, out int allRowsCount)
 {
     return(GetTasksPaged(query, 4, out allRowsCount));
 }
Beispiel #16
0
        /// <summary>
        /// 获取任务(分页)
        /// </summary>
        /// <param name="query">查询实体</param>
        /// <param name="activityState">活动状态</param>
        /// <param name="allRowsCount">任务记录数</param>
        /// <returns>活动列表</returns>
        private IEnumerable <TaskViewEntity> GetTasksPaged(TaskQueryEntity query, int activityState, out int allRowsCount)
        {
            //processState:2 -running 流程处于运行状态
            //activityType:4 -表示“任务”类型的节点
            //activityState: 1-ready(准备), 2-running(运行);

            string sql = @"SELECT
                            TOP 100 * 
                         FROM vwWfActivityInstanceTasks 
                         WHERE ProcessState=2 
                            AND (ActivityType=4 OR WorkItemType=1)
                            AND ActivityState=@activityState
                            AND AssignedToUserID=@assignedToUserID
							AND TaskState<>32
                        ";

            sql = SqlDataProvider.GetSqlTaskPaged(sql);
            StringBuilder sqlBuilder = new StringBuilder(512);

            sqlBuilder.Append(sql);

            DynamicParameters parameters = new DynamicParameters();

            parameters.Add("@activityState", activityState);
            parameters.Add("@assignedToUserID", query.UserID);
            //获取待办工作时需要获取主活动节点为办理状态的任务信息
            if (activityState == 1)
            {
                sqlBuilder.Append(" AND MiHostState<>4");
            }
            if (!string.IsNullOrEmpty(query.AppInstanceID))
            {
                sqlBuilder.Append(" AND AppInstanceID=@appInstanceID");
                parameters.Add("@appinstanceID", query.AppInstanceID);
            }

            if (!string.IsNullOrEmpty(query.ProcessGUID))
            {
                sqlBuilder.Append(" AND ProcessGUID=@processGUID");
                parameters.Add("@processGUID", query.ProcessGUID);
            }

            if (!string.IsNullOrEmpty(query.EndedByUserID))
            {
                sqlBuilder.Append(" AND EndedByUserID=@endedByUserID");
                parameters.Add("@endedByUserID", query.EndedByUserID);
            }

            if (!string.IsNullOrEmpty(query.AppName))
            {
                sqlBuilder.AppendFormat(" AND AppName like '%' + @appName + '%' ");
                parameters.Add("@appName", query.AppName);
            }

            sqlBuilder.Append(" ORDER BY TASKID DESC ");

            //如果数据记录数为0,则不用查询列表
            StringBuilder sqlCount = new StringBuilder(1024);

            sqlCount.Append("SELECT COUNT(1) FROM (");
            sqlCount.Append(sqlBuilder.ToString());
            sqlCount.Append(")T");

            allRowsCount = Repository.Count(sqlCount.ToString(), parameters);
            if (allRowsCount == 0)
            {
                return(null);
            }

            //查询列表数据并返回结果集
            var list = Repository.Query <TaskViewEntity>(sqlBuilder.ToString(),
                                                         parameters);

            return(list);
        }