Esempio n. 1
0
        public Model.Cmd AddCmd(RLib.DB.DbConn dbconn, Model.Cmd model)
        {
            string sql = @"INSERT INTO [dbo].[cmd]
           ([nodeId]
           ,[cmdType]
           ,[cmdArgs]
           ,[createTime]
           ,[cmdState]
      --     ,[callTime]
      --     ,[endTime]
      --     ,[resultText]
        )
     VALUES
           (@nodeid
           ,@cmdtype
           ,@cmdargs
           ,getdate()
           ,@cmdstate
     --      ,@callTime
     --      ,@endTime
      --     ,@resultText
      )";

            dbconn.ExecuteSql(sql, new
            {
                nodeid   = model.NodeId,
                cmdtype  = model.CmdType ?? "",
                cmdargs  = model.CmdArgs ?? "",
                cmdstate = 0
            });
            model.CmdId = dbconn.GetIdentity();
            return(model);
        }
Esempio n. 2
0
        public bool StartTask(int taskId, List <int> nodeids)
        {
            var taskandbinds = TaskBll.ToRightTaskNodes(taskId, nodeids, true);

            if (taskandbinds.Item2.Count() == 0)
            {
                throw new MException("没有节点,无法启动!");
            }
            if (taskandbinds.Item1.CurrVersionId == 0)
            {
                throw new MException("请上传任务版本文件并设置当前运行版本!");
            }
            using (RLib.DB.DbConn dbconn = Pub.GetConn())
            {
                dbconn.BeginTransaction();
                try
                {
                    var cmdmodel = new Model.Cmd()
                    {
                        CmdArgs = RLib.Utils.DataSerialize.SerializeJson(new Ruanal.Core.CmdTaskArg()
                        {
                            TaskId = taskId
                        }),
                        CmdState = 0,
                        CmdType  = Ruanal.Core.ConfigConst.CmdType_StartTask,
                        NodeId   = 0
                    };
                    List <string> clientIds = new List <string>();
                    foreach (var a in taskandbinds.Item2)
                    {
                        cmdmodel.NodeId = a.NodeId;
                        cmddal.AddCmd(dbconn, cmdmodel);
                        taskdal.UpdateBindLocalState(dbconn, a.BindId, 1);

                        clientIds.Add(a.Node.ClientId);
                    }
                    dbconn.Commit();
                    NotifyNewCmd(clientIds);
                    return(true);
                }
                catch (Exception ex)
                {
                    dbconn.Rollback();
                    throw ex;
                }
            }
        }
Esempio n. 3
0
 public bool StopDispatch(int dispatchid)
 {
     using (RLib.DB.DbConn dbconn = Pub.GetConn())
     {
         dbconn.BeginTransaction();
         try
         {
             var dismodel = dispatchdal.GetDetail(dbconn, dispatchid);
             if (dismodel.NodeId <= 0)
             {
                 throw new MException("任务未分配到节点,停止执行失败!");
             }
             var cmdmodel = new Model.Cmd()
             {
                 CmdState = 0,
                 CmdType  = Ruanal.Core.ConfigConst.CmdType_StopDispatchJob,
                 NodeId   = dismodel.NodeId,
                 CmdArgs  = RLib.Utils.DataSerialize.SerializeJson(
                     new Ruanal.Core.CmdDispatchArg()
                 {
                     TaskId     = dismodel.TaskId,
                     DispatchId = dismodel.DispatchId,
                     InvokeId   = dismodel.InvokeId
                 })
             };
             cmddal.AddCmd(dbconn, cmdmodel);
             dbconn.Commit();
             var nodemodel = nodedal.Detail(dbconn, dismodel.NodeId);
             if (nodemodel != null)
             {
                 NotifyNewCmd(new List <string>()
                 {
                     nodemodel.ClientId
                 });
             }
             return(true);
         }
         catch (Exception ex)
         {
             dbconn.Rollback();
             throw ex;
         }
     }
 }
Esempio n. 4
0
 public bool RestartNode(int nodeId)
 {
     using (RLib.DB.DbConn dbconn = Pub.GetConn())
     {
         var nodemodel = nodedal.Detail(dbconn, nodeId);
         if (nodemodel == null)
         {
             return(false);
         }
         var cmdmodel = new Model.Cmd()
         {
             CmdArgs  = "",
             CmdState = 0,
             CmdType  = Ruanal.Core.ConfigConst.CmdType_RestartNode,
             NodeId   = nodeId
         };
         cmddal.AddCmd(dbconn, cmdmodel);
         NotifyNewCmd(new List <string>()
         {
             nodemodel.ClientId
         });
         return(true);
     }
 }