/// <summary>
        /// 发起流程
        /// </summary>
        /// wangpf  15.11.24
        /// <param name="action">当前流程行为实体</param>
        /// <param name="toDoWork">下一个任务实体</param>
        /// <param name="processUserId">当前用户ID</param>
        /// <param name="instanceData">关联的数据</param>
        /// <returns></returns>
        public bool Start(FlowAction action, ToDoWorkInfo toDoWork, int processUserId, string instanceData)
        {
            bool result = true;
            //1.新建流程实例
            InstanceInfo1 instance = new InstanceInfo1()
            {
                WorkFlowId  = toDoWork.nodeInfo.FlowId,
                ProcessUser = processUserId,
                ProcessTime = DateTime.Now,
                StartUser   = processUserId,
                StartTime   = DateTime.Now,
                Status      = (byte)FlowStatus.流转
            };
            int instanceId = (int)this.ProcessClass.NewFlowInstance(instance);
            //2.1 下一个处理者ID
            var nextUserId = this.IFindUserMechanism.FindUser();

            //3.更新流程实例
            result &= this.ContinueProcess(toDoWork, instanceId, nextUserId, processUserId);
            //4.节点通知处理
            result &= NewNodeMessage((int)toDoWork.action.ToNode, nextUserId, "", 1);
            //5.记录流程日志
            string content = string.Format("用户" + this.ProcessClass.GetUserByUserID(processUserId).Username + "发起了流程");

            result &= NewFlowLog(instanceId, (int)toDoWork.action.Node, (int)toDoWork.action.ID, processUserId, content);

            return(result);
        }
Beispiel #2
0
        public ActionResult ListInstances(InstanceInfo1 info)
        {
            if (!ModelState.IsValid)
            {
                return(View(info));
            }

            return(View(info));
        }
        /// <summary>
        /// 继续流程流转
        /// </summary>
        /// wangpf  15.11.25
        /// <param name="toDoWork">下一个任务实体</param>
        /// <param name="instanceId">流程实例ID</param>
        /// <param name="nextUserId">下一个处理用户ID</param>
        /// <param name="currentUserId">当前用户ID</param>
        /// <returns></returns>
        private bool ContinueProcess(ToDoWorkInfo toDoWork, int instanceId, int nextUserId, int currentUserId)
        {
            //更新流程
            InstanceInfo1 instance = new InstanceInfo1()
            {
                InstanceId  = instanceId,
                CurrentNode = (int)toDoWork.nodeInfo.NodeId,
                CurrentUser = nextUserId,
                ProcessUser = currentUserId,
                ProcessTime = DateTime.Now
            };

            return(this.ProcessClass.UpdateFlowInstance(instance));
        }
        /// <summary>
        /// 中止流程流转
        /// </summary>
        /// wangpf  15.11.25
        /// <param name="toDoWork">下一个任务实体</param>
        /// <param name="instanceId">流程实例ID</param>
        /// <param name="currentUserId">当前用户ID</param>
        /// <returns></returns>
        private bool StopProcess(ToDoWorkInfo toDoWork, int instanceId, int currentUserId)
        {
            //更新流程为中止
            InstanceInfo1 instance = new InstanceInfo1()
            {
                InstanceId  = instanceId,
                CurrentNode = (int)toDoWork.nodeInfo.NodeId,
                CurrentUser = null,
                ProcessUser = currentUserId,
                ProcessTime = DateTime.Now,
                EndTime     = DateTime.Now,
                Status      = (byte)FlowStatus.中止
            };

            return(this.ProcessClass.EndFlowInstance(instance));
        }
Beispiel #5
0
 public bool UpdateFlowInstance(InstanceInfo1 instance)
 {
     return(new InstanceMapper().Update(instance));
 }
Beispiel #6
0
 /// <summary>
 /// 创建流程实例
 /// </summary>
 /// wangpf  15.11.24
 /// <param name="instance">流程实例实体</param>
 /// <returns></returns>
 public object NewFlowInstance(InstanceInfo1 instance)
 {
     return(new InstanceMapper().Insert(instance));
 }
Beispiel #7
0
 /// <summary>
 /// 结束流程实例
 /// </summary>
 /// <param name="instance">流程实例实体</param>
 /// <returns></returns>
 public bool EndFlowInstance(InstanceInfo1 instance)
 {
     return(new InstanceMapper().End(instance));
 }