Пример #1
0
 private TaskState GetTaskState(TaskEntity paraTask)
 {
     DateTime dtNow = DateTime.Now;
     if (paraTask.Enable == false) return TaskState.已删除;
     if (paraTask.DateEnd < dtNow) return TaskState.超时;
     if (paraTask.DateStart > dtNow) return TaskState.等待执行;
     return TaskState.正在执行;
 }
Пример #2
0
 public static void ReseveMappingTaskEntity(TaskEntity paraTaskEntity, ref TaskDataSet.PL_TimerTaskRow paraRow)
 {
     paraRow.Name = paraTaskEntity.Name;
     paraRow.CreateDate = DateTime.Now;
     paraRow.DateEnd = paraTaskEntity.DateEnd;
     paraRow.DateStart = paraTaskEntity.DateStart;
     paraRow.Enable = paraTaskEntity.Enable.ToString();
     paraRow.ExtraParaStr = paraTaskEntity.ExtraParaStr;
     paraRow.Name = paraTaskEntity.Name;
     paraRow.RunSpaceTimeSecs = paraTaskEntity.RunSpaceTime;
     paraRow.RunSpaceType = paraTaskEntity.RunSpaceType.ToString();
     paraRow.RunTimeOutSecs = paraTaskEntity.RunTimeOutSecs;
     paraRow.TaskAppName = paraTaskEntity.RegestesAppName;
 }
Пример #3
0
 public Int64 AddTask(TaskEntity paraTask)
 {
     try
     {
         TaskDataSet.PL_TimerTaskRow taskRow = _DataSet.PL_TimerTask.NewPL_TimerTaskRow();
         Mapper.DataMapper.ReseveMappingTaskEntity(paraTask, ref taskRow);
         _DataSet.PL_TimerTask.AddPL_TimerTaskRow(taskRow);
         this.Save2DB();
         paraTask.SetKeyID(taskRow.ID);
         return taskRow.ID;
     }
     catch
     {
         throw;
     }
 }
Пример #4
0
 /// <summary>
 /// Adds the task.
 /// </summary>
 /// <param name="paraEntity">The para entity.</param>
 /// <returns></returns>
 public TaskEntity AddTask(TaskEntity paraEntity)
 {
     try
     {
         return AddTask(paraEntity.Name,
             paraEntity.DateStart,
             paraEntity.DateEnd,
             paraEntity.RegestesAppName,
             paraEntity.RunSpaceTime,
             paraEntity.RunSpaceType,
             paraEntity.ExtraParaStr,
             paraEntity.RunTimeOutSecs);
     }
     catch
     {
         throw;
     }
 }
Пример #5
0
        /// <summary>
        /// 修改引擎中的任务
        /// </summary>
        /// <param name="paraTask"></param>
        public void ModifyTask(TaskEntity paraTask)
        {
            lock (((ICollection)_TaskList).SyncRoot)
            {
                IWorkingTask task = _TaskList.Find(delegate(IWorkingTask wt) { return wt.Task.TaskEntity.ID == paraTask.ID; });
                if (task != null)
                {
                    task.UpdateTask(paraTask);
                    //task.Task.TaskEntity.Name = paraTask.Name;
                    //task.Task.TaskEntity.DateEnd = paraTask.DateEnd;
                    //task.Task.TaskEntity.DateStart = paraTask.DateStart;
                    //task.Task.TaskEntity.Enable = paraTask.Enable;
                    //task.Task.TaskEntity.ExtraParaStr = paraTask.ExtraParaStr;
                    //task.Task.TaskEntity.RegestesAppName = paraTask.RegestesAppName;
                    //task.Task.TaskEntity.RunSpaceTime = paraTask.RunSpaceTime;
                    //task.Task.TaskEntity.RunSpaceType = paraTask.RunSpaceType;
                    //task.Task.TaskEntity.RunTimeOutSecs = paraTask.RunTimeOutSecs;

                    //task.RebuildTaskRunTimeList();
                    Console.WriteLine("更新一条任务:{0}", paraTask.ToString());
                }
                else
                {
                    Console.WriteLine("需要更新的任务在任务列表中没有({0})", paraTask.ToString());
                }

            }
        }
Пример #6
0
 /// <summary>
 /// 修改方式
 /// </summary>
 /// <param name="paraTask"></param>
 public FrmTaskEdit(TaskEntity paraTask, IBLLLogic paraLogic)
     : this(paraLogic)
 {
     _Task = paraTask;
 }
Пример #7
0
        private void FrmTaskEdit_Load(object sender, EventArgs e)
        {
            this.cbx_Apps.DataSource = _BLL.GetRegestedApp();
            this.cbx_Frequnce.DataSource = Enum.GetNames(typeof(Model.Enums.TaskFrequence));

            if (_Task == null)
            {
                _Task = new TaskEntity();
                this.Text = "新增任务";
            }
            this.InitControls();
        }
Пример #8
0
 public void ModifyTask(Int64 paraTaskId, TaskEntity paraTask)
 {
     try
     {
         this.LoadTaskDataFromDB();
         TaskDataSet.PL_TimerTaskRow taskRow = _DataSet.PL_TimerTask.FindByID(paraTaskId);
         if (taskRow == null)
         {
             throw new Exception("修改任务错误:传入的任务ID非法!");
         }
         else
         {
             Mapper.DataMapper.ReseveMappingTaskEntity(paraTask, ref taskRow);
         }
         this.Save2DB();
     }
     catch
     {
         throw;
     }
 }
Пример #9
0
 /// <summary>
 /// 检查并设置任务的频率
 /// [对用户输入的信息做检验]
 /// </summary>
 /// <param name="paraTask">The para task.</param>
 public static void CheckAndSetTaskFrequence(ref TaskEntity paraTask)
 {
     switch (paraTask.RunSpaceType)
     {
         case TaskFrequence.Day:
             paraTask.RunSpaceTime = 24 * 60 * 60;
             break;
         case TaskFrequence.Hour:
             paraTask.RunSpaceTime = 60 * 60;
             break;
         case TaskFrequence.Minute:
             paraTask.RunSpaceTime = 60;
             break;
         case TaskFrequence.Week:
             paraTask.RunSpaceTime = 7 * 24 * 60 * 60;
             break;
         case TaskFrequence.Once:    //如果执行一次,设置间隔为2分钟,结束时间为开始时间+20秒(给20秒的缓冲区)
             paraTask.RunSpaceTime = 2 * 60;
             paraTask.DateEnd = paraTask.DateStart.AddSeconds(20);
             break;
     }
 }
Пример #10
0
        /// <summary>
        /// 更新任务
        /// </summary>
        /// <param name="paraTaskID"></param>
        /// <param name="paraName"></param>
        /// <param name="paraDateStart"></param>
        /// <param name="paraDateEnd"></param>
        /// <param name="paraAppName"></param>
        /// <param name="paraRunSpaceTimeSecs"></param>
        /// <param name="paraRunSpaceType"></param>
        /// <param name="paraExtraStr"></param>
        /// <param name="paraRunTimeOutSecs"></param>
        /// <returns></returns>
        public void UpdateTask(Int64 paraTaskID, string paraName, DateTime paraDateStart, DateTime paraDateEnd, string paraAppName, Int64 paraRunSpaceTimeSecs, TaskFrequence paraRunSpaceType, string paraExtraStr, Int64 paraRunTimeOutSecs)
        {
            try
            {
                TaskAssembly assembly = BLLFactory.GetBllRegistApp().GetRegestedApp(paraAppName);
                if (assembly == null)
                {
                    throw new Exception(string.Format("更新的计划的程序(RegestesAppName){0}尚未在配置文件(RegistedApps.xml)中注册", paraAppName));
                }
                else
                {
                    TaskEntity entity = new TaskEntity(paraTaskID, paraName, true, paraDateStart, paraDateEnd, paraRunSpaceTimeSecs,
                        paraRunSpaceType, paraExtraStr, paraRunTimeOutSecs, paraAppName);

                    //发送消息同步到任务管理器中
                    string message = MessageParser.BuildMessage(null, null, new List<TaskEntity>() { entity }, null, null, null);
                    //一定要保证先发送,后保存
                    this.SendXMLSocket2Server(message);
                    _DataAccess.ModifyTask(paraTaskID, entity);
                }
            }
            catch
            {
                throw;
            }
        }
Пример #11
0
 /// <summary>
 /// Updates the task.
 /// </summary>
 /// <param name="paraEntity">The para entity.</param>
 /// <returns></returns>
 public void UpdateTask(TaskEntity paraEntity)
 {
     try
     {
         this.UpdateTask(
             paraEntity.ID,
             paraEntity.Name,
             paraEntity.DateStart,
             paraEntity.DateEnd,
             paraEntity.RegestesAppName,
             paraEntity.RunSpaceTime,
             paraEntity.RunSpaceType,
             paraEntity.ExtraParaStr,
             paraEntity.RunTimeOutSecs);
     }
     catch
     {
         throw;
     }
 }
Пример #12
0
        /// <summary>
        /// 获取计划富实体
        /// </summary>
        /// <param name="paraEntity"></param>
        /// <returns></returns>
        public Task GetTask(TaskEntity paraEntity)
        {
            List<TaskAssembly> assList = this.GetRegistedApps();

            List<Task> list = new List<Task>();
            TaskAssembly assembly = assList.Find(delegate(TaskAssembly a) { return a.UserName == paraEntity.RegestesAppName; });
            if (assembly != null)
            {
                Task task = new Task(paraEntity, assembly);
                return task;
            }
            return null;
        }
Пример #13
0
        /// <summary>
        /// 翻译一条消息
        /// </summary>
        /// <param name="paraMessage">The para message.</param>
        /// <param name="paraAddedTasks">The para added tasks.</param>
        /// <param name="paraDeletedTasks">The para deleted tasks.</param>
        /// <param name="paraUpdateTasks">The para update tasks.</param>
        /// <param name="paraRunImmediateTask">The para run immediate task.</param>
        /// <param name="paraRunType">Type of the para run.</param>
        /// <param name="paraStopTask">The para stop task.</param>
        public static void ParseMessage(string paraMessage, out List<TaskEntity> paraAddedTasks, out List<Int64> paraDeletedTasks, out List<TaskEntity> paraUpdateTasks, out List<Int64> paraRunImmediateTask, out List<RunTaskType> paraRunType, out List<Int64> paraStopTask)
        {
            paraAddedTasks = new List<TaskEntity>();
            paraDeletedTasks = new List<long>();
            paraUpdateTasks = new List<TaskEntity>();
            paraRunImmediateTask = new List<long>();
            paraRunType = new List<RunTaskType>();
            paraStopTask = new List<long>();

            XmlDocument doc = new XmlDocument();
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(paraMessage));
            doc.Load(ms);
            XmlNode iNode = doc.SelectSingleNode("Root");

            XmlNode addNode = iNode.SelectSingleNode("AddList");
            foreach (XmlElement ele in addNode.ChildNodes)
            {
                TaskEntity entity = new TaskEntity();
                entity.SetKeyID(long.Parse(ele.GetAttribute("ID")));
                entity.Name = ele.GetAttribute("Name");
                entity.Enable = bool.Parse(ele.GetAttribute("Enable"));
                entity.DateStart = DateTime.Parse(ele.GetAttribute("DateStart"));
                entity.DateEnd = DateTime.Parse(ele.GetAttribute("DateEnd"));
                entity.RunSpaceTime = Int64.Parse(ele.GetAttribute("RunSpaceTime"));
                entity.RunSpaceType = (TaskFrequence)Enum.Parse(typeof(TaskFrequence), ele.GetAttribute("RunSpaceType"));
                entity.ExtraParaStr = ele.GetAttribute("ExtraParaStr");
                entity.RunTimeOutSecs = Int64.Parse(ele.GetAttribute("RunTimeOutSecs"));
                entity.RegestesAppName = ele.GetAttribute("RegestesAppName");

                CheckAndSetTaskFrequence(ref entity);
                paraAddedTasks.Add(entity);
            }

            XmlNode mdfNode = iNode.SelectSingleNode("UpdateList");
            foreach (XmlElement ele in mdfNode.ChildNodes)
            {
                TaskEntity entity = new TaskEntity();
                entity.Name = ele.GetAttribute("Name");
                entity.Enable = bool.Parse(ele.GetAttribute("Enable"));
                entity.DateStart = DateTime.Parse(ele.GetAttribute("DateStart"));
                entity.DateEnd = DateTime.Parse(ele.GetAttribute("DateEnd"));
                entity.RunSpaceTime = Int64.Parse(ele.GetAttribute("RunSpaceTime"));
                entity.RunSpaceType = (TaskFrequence)Enum.Parse(typeof(TaskFrequence), ele.GetAttribute("RunSpaceType"));
                entity.ExtraParaStr = ele.GetAttribute("ExtraParaStr");
                entity.RunTimeOutSecs = Int64.Parse(ele.GetAttribute("RunTimeOutSecs"));
                entity.RegestesAppName = ele.GetAttribute("RegestesAppName");
                entity.SetKeyID(Int64.Parse(ele.GetAttribute("ID")));

                CheckAndSetTaskFrequence(ref entity);
                paraUpdateTasks.Add(entity);
            }

            XmlNode delNode = iNode.SelectSingleNode("DeleteList");
            foreach (XmlElement ele in delNode.ChildNodes)
            {
                paraDeletedTasks.Add(
                    Int64.Parse(ele.GetAttribute("ID")));
            }

            XmlNode runNode = iNode.SelectSingleNode("RunList");
            foreach (XmlElement ele in runNode.ChildNodes)
            {
                paraRunImmediateTask.Add(
                    Int64.Parse(ele.GetAttribute("ID")));
                paraRunType.Add((RunTaskType)Enum.Parse(typeof(RunTaskType),ele.GetAttribute("Type")));
            }

            //释放内存流
            ms.Close();
            ms.Dispose();
        }
Пример #14
0
 /// <summary>
 /// 向引擎中添加任务
 /// </summary>
 /// <param name="paraTask"></param>
 public void AddWorkingTask(TaskEntity paraTask)
 {
     IWorkingTask itask = null;
     lock (((ICollection)_TaskList).SyncRoot)
     {
         itask = GetWorkingTask(_IBLLLogic.GetTask(paraTask));
         _TaskList.Add(itask);
     }
     Console.WriteLine("新增一条任务,下次执行时间为:{0}:{1}", itask.NextRunTime, paraTask.ToString());
 }
Пример #15
0
        /// <summary>
        /// 添加定时任务
        /// </summary>
        /// <param name="paraName"></param>
        /// <param name="paraDateStart"></param>
        /// <param name="paraDateEnd"></param>
        /// <param name="paraAppName"></param>
        /// <param name="paraRunSpaceTimeSecs">周期数(秒)</param>
        /// <param name="paraRunSpaceType">周期类型(便于存储和下次查看)</param>
        /// <param name="paraExtraStr"></param>
        /// <param name="paraRunTimeOutSecs">执行超时时间,如果不限定,则给-1,如果限定了,在指定时间内未执行完成,则强制结束(exe直接结束进程,dll通过接口通知结束)</param>
        /// <returns></returns>
        public TaskEntity AddTask(string paraName, DateTime paraDateStart, DateTime paraDateEnd, string paraAppName, Int64 paraRunSpaceTimeSecs, TaskFrequence paraRunSpaceType, string paraExtraStr, Int64 paraRunTimeOutSecs)
        {
            try
            {
                TaskAssembly assembly = BLLFactory.GetBllRegistApp().GetRegestedApp(paraAppName);
                if (assembly == null)
                {
                    throw new Exception(string.Format("添加的计划的程序(RegestesAppName){0}尚未在配置文件(RegistedApps.xml)中注册", paraAppName));
                }
                else
                {
                    TaskEntity entity = new TaskEntity();
                    entity.DateEnd = paraDateEnd;
                    entity.DateStart = paraDateStart;
                    entity.Enable = true;
                    entity.ExtraParaStr = paraExtraStr;
                    entity.Name = paraName;
                    entity.RunSpaceTime = paraRunSpaceTimeSecs;
                    entity.RunSpaceType = paraRunSpaceType;
                    entity.RunTimeOutSecs = paraRunTimeOutSecs;
                    entity.RegestesAppName = paraAppName;

                    //先校验,后保存

                    //输入校验
                    MessageParser.CheckAndSetTaskFrequence(ref entity);
                    //保存到数据库
                    Int64 id = _DataAccess.AddTask(entity);

                    if (id >= 0)
                    {//保存成功
                        entity.SetKeyID(id);
                        try
                        {
                            //发送消息同步到任务管理器中
                            string message = MessageParser.BuildMessage(new List<TaskEntity>() { entity }, null, null, null, null, null);
                            this.SendXMLSocket2Server(message);
                            return entity;
                        }
                        catch
                        {
                            this.DelTaskComplet(id);
                            throw;
                        }
                    }
                    else
                    {//未保存成功
                        this.WriteLog(-1, entity.Name, "计划保存到数据库没有成功", LogType.TaskAdd2DBError);
                        throw new Exception("计划保存到数据库没有成功");
                    }
                }
            }
            catch
            {
                throw;
            }
        }
Пример #16
0
        /// <summary>
        /// 更新任务属性
        /// </summary>
        /// <param name="taskEntity">The task entity.</param>
        public void UpdateTask(TaskEntity taskEntity)
        {
            this._Task.TaskEntity.Name = taskEntity.Name;
            this._Task.TaskEntity.DateEnd = taskEntity.DateEnd;
            this._Task.TaskEntity.DateStart = taskEntity.DateStart;
            this._Task.TaskEntity.Enable = taskEntity.Enable;
            this._Task.TaskEntity.ExtraParaStr = taskEntity.ExtraParaStr;
            this._Task.TaskEntity.RegestesAppName = taskEntity.RegestesAppName;
            this._Task.TaskEntity.RunSpaceTime = taskEntity.RunSpaceTime;
            this._Task.TaskEntity.RunSpaceType = taskEntity.RunSpaceType;
            this._Task.TaskEntity.RunTimeOutSecs = taskEntity.RunTimeOutSecs;

            this.RebuildTaskRunTimeList();
        }
Пример #17
0
 public Task(TaskEntity paraEntity, TaskAssembly paraAssembly)
 {
     _TaskEntity = paraEntity;
     _TaskAssembly = paraAssembly;
 }