Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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;
         }
     }
 }
Esempio n. 3
0
        /// <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));
            }
        }