public Dictionary <int, List <Model.TaskVersion> > GetTasksTopVersions(int keeppackagecount) { int topcount = Math.Max(5, keeppackagecount); Dictionary <int, List <Model.TaskVersion> > rdata = new Dictionary <int, List <Model.TaskVersion> >(); DAL.TaskDal taskdal = new DAL.TaskDal(); using (RLib.DB.DbConn dbconn = Pub.GetConn()) { var tasks = taskdal.GetAllTask(dbconn, -1); foreach (var a in tasks) { rdata.Add(a.TaskId, taskdal.GetTaskAllVersion(dbconn, a.TaskId, topcount)); } } return(rdata); }
public bool DeleteNode(int nodeId) { using (RLib.DB.DbConn dbconn = Pub.GetConn()) { dbconn.BeginTransaction(); try { var taskdal = new DAL.TaskDal(); var tasks = taskdal.GetNodeTasks(dbconn, nodeId, false); if (tasks.Count > 0) { throw new MException("节点有任务,不能删除节点!"); } nodedal.Delete(dbconn, nodeId); dbconn.Commit(); return(true); } catch (Exception ex) { dbconn.Rollback(); throw ex; } } }
/// <summary> /// 任务自动绑定或删除主节点 返回任务详情和当前所有绑定 /// </summary> /// <param name="taskId"></param> /// <returns></returns> public static Tuple <Model.Task, List <Model.TaskBinding> > ToRightTaskNodes(int taskId, List <int> filterNodeIdds, bool checkThrow) { var taskdal = new DAL.TaskDal(); var nodedal = new DAL.NodeDal(); using (RLib.DB.DbConn dbconn = Pub.GetConn()) { var taskmodel = taskdal.GetDetail(dbconn, taskId); if (taskmodel == null || taskmodel.State != 0) { throw new MException("任务不存在或已删除!"); } var taskbinds = taskdal.GetTaskBindings(dbconn, taskId); foreach (var a in taskbinds) { a.Node = nodedal.Detail(dbconn, a.NodeId); } Exception throex = null; //添加控制节点 if (taskmodel.TaskType == 1 && taskbinds.Count(x => x.Node.NodeType == 1) == 0) { var mainnodes = nodedal.GetMainNode(dbconn); if (mainnodes.Count == 0) { throex = new MException("没有控制节点,不能运行调度任务!"); } else if (mainnodes.Count > 1) { throex = new MException("有多个控制节点,请手动添加控制节点!"); } else { var binding = taskdal.AddBinding(dbconn, new Model.TaskBinding() { BindId = 0, LastRunTime = null, LocalState = 0, ServerState = 0, NodeId = mainnodes.First().NodeId, RunVersion = 0, TaskId = taskmodel.TaskId }); binding.Node = mainnodes.First(); taskbinds.Add(binding); } } if (checkThrow == true && throex != null) { throw throex; } //删除控制节点 if (taskmodel.TaskType == 0 && taskbinds.Count(x => x.Node.NodeType == 1) > 0) { var mainnodes = taskbinds.Where(x => x.Node.NodeType == 1).ToList(); foreach (var a in mainnodes) { taskdal.DeleteBind(dbconn, a.BindId); taskbinds.Remove(a); } } if (filterNodeIdds != null && filterNodeIdds.Count > 0) { taskbinds.RemoveAll(x => !filterNodeIdds.Contains(x.NodeId)); } taskbinds = taskbinds.OrderByDescending(x => x.Node.NodeType).ToList(); return(new Tuple <Model.Task, List <Model.TaskBinding> >(taskmodel, taskbinds)); } }