Exemplo n.º 1
0
        public object GetDetailWidthBinding(int taskId)
        {
            //得到所有绑定 并确定主节点情况
            var taskandbinds = TaskBll.ToRightTaskNodes(taskId, null, false);

            using (RLib.DB.DbConn dbconn = Pub.GetConn())
            {
                var nodeldal = new DAL.NodeDal();
                foreach (var b in taskandbinds.Item2)
                {
                    b.Node = nodeldal.Detail(dbconn, b.NodeId);
                }
            }
            return(taskandbinds);
        }
Exemplo n.º 2
0
 public Dictionary <string, List <string> > ViewStatus(int nodeId)
 {
     using (RLib.DB.DbConn dbconn = Pub.GetConn())
     {
         var    nodemodel = this.nodedal.Detail(dbconn, nodeId);
         string msg       = Ruanal.Core.ConfigConst.TalkNodeTaskStatus + string.Format("{0}", nodemodel.ClientId);
         var    result    = Ruanal.Core.Notify.NotifyHelper.TalkToAll(msg, 4000, 1);
         Dictionary <string, List <string> > vs = new Dictionary <string, List <string> >();
         DAL.NodeDal nodedal = new DAL.NodeDal();
         foreach (var a in result)
         {
             var _s = RLib.Utils.StringHelper.SplitToStringList(a, new char[] { '#' });
             vs[nodeId.ToString()] = _s;
         }
         return(vs);
     }
 }
Exemplo n.º 3
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);
     }
 }
Exemplo n.º 4
0
        public Dictionary <string, List <string> > ViewStatus(int taskId)
        {
            using (RLib.DB.DbConn dbconn = Pub.GetConn())
            {
                var    counts = taskdal.GetTaskBindsNodes(dbconn, taskId, true).Count;
                string msg    = Ruanal.Core.ConfigConst.TalkTaskInstanceStatus + string.Format("{0}", taskId);
                var    result = Ruanal.Core.Notify.NotifyHelper.TalkToAll(msg, 4000, counts);
                Dictionary <string, List <string> > vs = new Dictionary <string, List <string> >();
                DAL.NodeDal nodedal = new DAL.NodeDal();
                foreach (var a in result)
                {
                    var _s = RLib.Utils.StringHelper.SplitToStringList(a, new char[] { '#' });

                    string clientid         = _s[0].Substring(1, _s[0].Length - 2);
                    var    clientnodedetail = nodedal.Detail(dbconn, clientid);
                    vs[string.Format("[{0}] {1}", clientnodedetail.NodeId, clientnodedetail.Title)] = _s.Skip(1).ToList();
                }
                return(vs);
            }
        }
Exemplo n.º 5
0
        public List <Model.Node> GetCanBindingNodes(int taskId)
        {
            using (RLib.DB.DbConn dbconn = Pub.GetConn())
            {
                var nodedal      = new DAL.NodeDal();
                var taskmodel    = taskdal.GetDetail(dbconn, taskId);
                var allnodes     = nodedal.GetAllNode(dbconn, false);
                var tasknowbinds = taskdal.GetTaskBindings(dbconn, taskId);
                //当前任务已有主节点 或 主节点个数等于1时 不显示主节点
                if (allnodes.Where(x => x.NodeType == 1).ToList().Exists(x => tasknowbinds.Exists(y => y.NodeId == x.NodeId)) ||
                    allnodes.Count(x => x.NodeType == 1) == 1)
                {
                    allnodes.RemoveAll(x => x.NodeType == 1);
                }
                if (taskmodel.TaskType == 0)
                {
                    allnodes.RemoveAll(x => x.NodeType == 1);
                }

                allnodes.RemoveAll(x => tasknowbinds.Exists(k => k.NodeId == x.NodeId));
                return(allnodes);
            }
        }
Exemplo n.º 6
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));
            }
        }