/// <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); }
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)); }
public bool UpdateFlowInstance(InstanceInfo1 instance) { return(new InstanceMapper().Update(instance)); }
/// <summary> /// 创建流程实例 /// </summary> /// wangpf 15.11.24 /// <param name="instance">流程实例实体</param> /// <returns></returns> public object NewFlowInstance(InstanceInfo1 instance) { return(new InstanceMapper().Insert(instance)); }
/// <summary> /// 结束流程实例 /// </summary> /// <param name="instance">流程实例实体</param> /// <returns></returns> public bool EndFlowInstance(InstanceInfo1 instance) { return(new InstanceMapper().End(instance)); }