Esempio n. 1
0
 public List <MApiEntity.Task> TaskList()
 {
     using (RLib.DB.DbConn dbconn = Pub.GetConn())
     {
         return(taskdal.GetAllTask(dbconn, -1)
                .Select(x => new MApiEntity.Task()
         {
             DispatchClass = x.DispatchClass,
             EnterClass = x.EnterClass,
             EnterDll = x.EnterDll,
             RunCron = x.RunCron,
             TaskBindings = taskdal.GetTaskBindings(dbconn, x.TaskId)
                            .Select(y => new MApiEntity.TaskBinding()
             {
                 BindId = y.BindId,
                 TaskId = y.TaskId,
                 LastRunTime = y.LastRunTime,
                 LocalState = y.LocalState,
                 NodeId = y.NodeId,
                 ServerState = y.ServerState
             }).ToList(),
             Remark = x.Remark,
             State = x.State,
             Title = x.Title,
             TaskId = x.TaskId,
             TaskConfig = x.TaskConfig,
             TaskType = x.TaskType
         }).ToList());
     }
 }
Esempio n. 2
0
 public List <Model.Task> GetAllTaskOfManage(int tagindex)
 {
     using (RLib.DB.DbConn dbconn = Pub.GetConn())
     {
         DAL.NodeDal nodedal = new DAL.NodeDal();
         var         tasks   = taskdal.GetAllTask(dbconn, tagindex);
         foreach (var a in tasks)
         {
             a.TaskBindings = taskdal.GetTaskBindings(dbconn, a.TaskId);
             foreach (var b in a.TaskBindings)
             {
                 b.Node = nodedal.Detail(dbconn, b.NodeId);
             }
             a.TaskBindings = a.TaskBindings.OrderByDescending(x => x.Node.NodeType).ToList();
         }
         return(tasks);
     }
 }
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));
            }
        }