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); }
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; } } }
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; } } }
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); } }