protected void Page_Load(object sender, EventArgs e) { if (!WebUtil.CheckPrivilege(WebConfig.FunctionAutomationAddScheduledTask, OpType.READ, Session)) { Response.Redirect(WebConfig.PageNotEnoughPrivilege, true); } string op = Request.Params[WebConfig.ParamOperation]; if (op != null && op == WebConfig.OpTypeModify && Session[WebConfig.SessionScheduledTask] != null) { _opType = PageOpType.Modify; _taskUnit = Session[WebConfig.SessionScheduledTask] as ScheduledTaskUnit; if (_taskUnit == null) { return; } //修改自动化作业需要对ScheduledTaskManager有写权限 if (!WebUtil.CheckPrivilege(TheAdminServer.ScheduledTaskManager.SecurityObject, OpType.WRITE, Session)) { Response.Redirect(WebConfig.PageNotEnoughPrivilege, true); } } else { _opType = PageOpType.Add; //添加自动化作业需要对ScheduledTaskManager有写权限 if (!WebUtil.CheckPrivilege(TheAdminServer.ScheduledTaskManager.SecurityObject, OpType.WRITE, Session)) { Response.Redirect(WebConfig.PageNotEnoughPrivilege, true); } } if (!IsPostBack) { ListScheduledTaskType(); if (_opType == PageOpType.Modify) { LabelOpType.Text = StringDef.EditScheduledTask; if (_taskUnit != null) { AutomationEditor1.Automation = _taskUnit.Task.Automation; TextBoxName.Text = _taskUnit.Task.SecurityObject.Name; TextBoxComment.Text = _taskUnit.Task.SecurityObject.Comment; switch (_taskUnit.Task.Type) { case ScheduledTaskType.Once: { OnceScheduledTask task = _taskUnit.Task as OnceScheduledTask; TextBoxExecuteTime.Text = task.ExecuteTime.ToString(); } break; case ScheduledTaskType.Repeat: { RepeatScheduledTask task = _taskUnit.Task as RepeatScheduledTask; TextBoxStartTime.Text = task.StartTime.ToString(); TextBoxEndTime.Text = task.EndTime.ToString(); TextBoxInterval.Text = task.Interval.ToString(); } break; case ScheduledTaskType.DayOfWeek: { DayOfWeekScheduledTask task = _taskUnit.Task as DayOfWeekScheduledTask; TextBoxDayOfWeekExecuteTime.Text = task.TimeOfDay.ToString(); foreach (DayOfWeek day in task.DayOfWeek) { CheckBoxListDayOfWeek.Items[(int)day].Selected = true; } } break; } SetScheduledTaskType(_taskUnit.Task.Type); } } else if (_opType == PageOpType.Add) { AutomationEditor1.Automation = null; LabelOpType.Text = StringDef.AddScheduledTask; } LabelOnceExecuteTime.Text += "[yyyy-mm-dd hh:mm:ss]"; LabelRepeatStartTime.Text += "[hh:mm:ss]"; LabelRepeatEndTime.Text += "[hh:mm:ss]"; LabelIntervalTime.Text += "[hh:mm:ss]"; LabelDayOfWeekExecuteTime.Text += "[hh:mm:ss]"; } OperateResult.Text = string.Empty; }
protected void FinishButton_Click(object sender, EventArgs e) { try { IAutomation automation = AutomationEditor1.Automation; if (automation != null) { string name = TextBoxName.Text.Trim(); string comment = TextBoxComment.Text.Trim(); foreach (ScheduledTaskUnit unit in TheAdminServer.ScheduledTaskManager.ScheduledTaskList) { if (unit.Task.SecurityObject.Name == name) { //重名的判定: //1.添加时与任何一个已有的计划任务名称相同 //2.修改时与除本身外的任何一个已有的计划任务名称相同 if ((_opType == PageOpType.Add) || ((_opType == PageOpType.Modify) && (unit.Task.SecurityObject.Id != _taskUnit.Task.SecurityObject.Id))) { OperateResult.Text = "该计划任务名称已存在" + StringDef.Colon + "计划任务ID - " + unit.Task.SecurityObject.Id.ToString(); return; } } } ScheduledTaskType type = (ScheduledTaskType)(int.Parse(DropDownListScheduledTaskType.SelectedValue)); if (_opType == PageOpType.Add) { IScheduledTask task = null; switch (type) { case ScheduledTaskType.Once: { OnceScheduledTask onceTask = new OnceScheduledTask(); onceTask.Automation = automation; onceTask.ExecuteTime = DateTime.Parse(TextBoxExecuteTime.Text); task = onceTask; } break; case ScheduledTaskType.Repeat: { RepeatScheduledTask repeatTask = new RepeatScheduledTask(); repeatTask.Automation = automation; repeatTask.StartTime = TimeSpan.Parse(TextBoxStartTime.Text); repeatTask.EndTime = TimeSpan.Parse(TextBoxEndTime.Text); repeatTask.Interval = TimeSpan.Parse(TextBoxInterval.Text); task = repeatTask; } break; case ScheduledTaskType.DayOfWeek: { DayOfWeekScheduledTask dayOfWeekTask = new DayOfWeekScheduledTask(); dayOfWeekTask.Automation = automation; dayOfWeekTask.TimeOfDay = TimeSpan.Parse(TextBoxDayOfWeekExecuteTime.Text); int count = 0; foreach (ListItem item in CheckBoxListDayOfWeek.Items) { if (item.Selected) { ++count; } } dayOfWeekTask.DayOfWeek = new DayOfWeek[count]; count = 0; foreach (ListItem item in CheckBoxListDayOfWeek.Items) { if (item.Selected) { dayOfWeekTask.DayOfWeek[count] = (DayOfWeek)int.Parse(item.Value); ++count; } } task = dayOfWeekTask; } break; } TheAdminServer.ScheduledTaskManager.Add(task, name, comment); } else if (_opType == PageOpType.Modify) { IScheduledTask task = null; //如果类型没有改变,则不需要生成新的对象;否则,需要根据类型生成新的对象 if (_taskUnit.Task.Type == type) { task = _taskUnit.Task; switch (type) { case ScheduledTaskType.Once: { OnceScheduledTask onceTask = (OnceScheduledTask)task; onceTask.Automation = automation; onceTask.ExecuteTime = DateTime.Parse(TextBoxExecuteTime.Text); } break; case ScheduledTaskType.Repeat: { RepeatScheduledTask repeatTask = (RepeatScheduledTask)task; repeatTask.Automation = automation; repeatTask.StartTime = TimeSpan.Parse(TextBoxStartTime.Text); repeatTask.EndTime = TimeSpan.Parse(TextBoxEndTime.Text); repeatTask.Interval = TimeSpan.Parse(TextBoxInterval.Text); } break; case ScheduledTaskType.DayOfWeek: { DayOfWeekScheduledTask dayOfWeekTask = task as DayOfWeekScheduledTask; dayOfWeekTask.Automation = automation; dayOfWeekTask.TimeOfDay = TimeSpan.Parse(TextBoxDayOfWeekExecuteTime.Text); int count = 0; foreach (ListItem item in CheckBoxListDayOfWeek.Items) { if (item.Selected) { ++count; } } dayOfWeekTask.DayOfWeek = new DayOfWeek[count]; count = 0; foreach (ListItem item in CheckBoxListDayOfWeek.Items) { if (item.Selected) { dayOfWeekTask.DayOfWeek[count] = (DayOfWeek)int.Parse(item.Value); ++count; } } } break; } } else { switch (type) { case ScheduledTaskType.Once: { OnceScheduledTask onceTask = new OnceScheduledTask(); onceTask.Automation = automation; onceTask.ExecuteTime = DateTime.Parse(TextBoxExecuteTime.Text); task = onceTask; } break; case ScheduledTaskType.Repeat: { RepeatScheduledTask repeatTask = new RepeatScheduledTask(); repeatTask.Automation = automation; repeatTask.StartTime = TimeSpan.Parse(TextBoxStartTime.Text); repeatTask.EndTime = TimeSpan.Parse(TextBoxEndTime.Text); repeatTask.Interval = TimeSpan.Parse(TextBoxInterval.Text); task = repeatTask; } break; case ScheduledTaskType.DayOfWeek: { DayOfWeekScheduledTask dayOfWeekTask = new DayOfWeekScheduledTask(); dayOfWeekTask.Automation = automation; dayOfWeekTask.TimeOfDay = TimeSpan.Parse(TextBoxDayOfWeekExecuteTime.Text); int count = 0; foreach (ListItem item in CheckBoxListDayOfWeek.Items) { if (item.Selected) { ++count; } } dayOfWeekTask.DayOfWeek = new DayOfWeek[count]; count = 0; foreach (ListItem item in CheckBoxListDayOfWeek.Items) { if (item.Selected) { dayOfWeekTask.DayOfWeek[count] = (DayOfWeek)int.Parse(item.Value); ++count; } } task = dayOfWeekTask; } break; } } TheAdminServer.ScheduledTaskManager.Update(_taskUnit.Task.SecurityObject.Id, task, name, comment); } Response.Redirect("ScheduledTaskList.aspx"); } else { OperateResult.Text = "未指定要执行的自动化任务(需要在第一步中指定并点击'应用'按钮)"; return; } } catch (Exception ex) { OperateResult.Text = StringDef.ParameterInputError + StringDef.Colon + ex.Message; //Response.Write("<script language='JavaScript'>alert('参数有误!');</script>"); //ShowMessage("参数有误", MessageType.Failure); } }