/// <summary> /// 控制流程实例的流转 /// </summary> /// qiy 16.04.29 /// yaoy 16.07.27 移除流程引擎中开始流程方法 /// <param name="data">流程数据</param> /// <returns></returns> public bool Process(FlowData data) { var _action = new Action(); InstanceInfo instance; ActionInfo action = _action.Get(data.ActionId); instance = _instance.Get(data.InstanceId.Value); IFindUser finduser = FindUser.CreateStrategy(action); instance.CurrentNode = action.Transfer; instance.CurrentUser = finduser.FindUser(data); instance.ProcessTime = DateTime.Now; instance.ProcessUser = User.User.CurrentUserId; if (action.Type == ActionInfo.TypeEnum.完成) { instance.Status = InstanceInfo.StatusEnum.完成; } else if (action.Type == ActionInfo.TypeEnum.终止) { instance.Status = InstanceInfo.StatusEnum.终止; } if (instance.Status != InstanceInfo.StatusEnum.正常) { instance.EndTime = DateTime.Now; } Log _log = new Log(); _log.Add(new LogInfo { InstanceId = instance.InstanceId, NodeId = action.NodeId, ActionId = action.ActionId, ProcessUser = instance.ProcessUser, ProcessTime = instance.ProcessTime, InOpinion = data.InOpinion, ExOpinion = data.ExOpinion }); return(_instance.Modify(instance)); }
/// <summary> /// 查找下一个处理者 /// </summary> /// yand 16.09.13 /// <param name="actionId"></param> /// <returns></returns> public UserInfo FindLastUser(int actionId, int instanceId) { UserInfo userinfo = new UserInfo(); //根据行为ID查找对应的通知用户 ActionInfo action = new BLL.Flow.Action().Get(actionId); IFindUser finduser = FindUser.CreateStrategy(action); //根据行为ID和实例ID查找下一个处理者 FlowData flowData = new FlowData() { InstanceId = instanceId, ActionId = actionId }; // 判断是否查到人,查不到分配总经理账户 int userId = finduser.FindUser(flowData) == null ? new DAL.User.UserInfoMapper().FindByRole("总经理").UserId : finduser.FindUser(flowData).Value; userinfo = new BLL.User.User().GetUser(userId); return(userinfo); }