Esempio n. 1
0
        /// <summary>
        /// 用户单击“保存”按钮时的事件处理方法。
        /// </summary>
        private void BtnSave_Click(object sender, EventArgs e)
        {
            var formSysMessage = FormSysMessage.ShowLoading();

            BindFormlToObject(); // 进行数据绑定
            try
            {
                if (jobDetail.JobId > 0)
                {
                    int effected = CustomJobDetailBLL.CreateInstance().Update(jobDetail); // 调用“业务逻辑层”的方法,检查有效性后更新至数据库。
                    if (effected == 0)
                    {
                        return;
                    }

                    // 根据新的配置,更新寄宿服务里的任务计划
                    CustomJobDetailBLL.CreateInstance().ModifyHostJob(jobHostSite, jobDetail.JobId, jobDetail.JobName);

                    #region 开启或关闭任务计划

                    if (jobDetail.State == (byte)JobState.Running)
                    {
                        CustomJobDetailBLL.CreateInstance().StartHostJob(jobHostSite, jobDetail.JobId, jobDetail.JobName,
                                                                         () => { this.Invoke(new CallBackDelegate(CallBackFunc), formSysMessage, "启动任务计划成功。"); },
                                                                         () => { this.Invoke(new CallBackDelegate(CallBackFunc), formSysMessage, "启动任务计划失败。"); });
                    }
                    else if (jobDetail.State == (byte)JobState.Stopping || jobDetail.State == (byte)JobState.Waiting)
                    {
                        CustomJobDetailBLL.CreateInstance().StopHostJob(jobHostSite, jobDetail.JobId, jobDetail.JobName,
                                                                        () => { this.Invoke(new CallBackDelegate(CallBackFunc), formSysMessage, "关闭任务计划成功。"); },
                                                                        () => { this.Invoke(new CallBackDelegate(CallBackFunc), formSysMessage, "关闭任务计划失败。"); });
                    }
                    #endregion
                }
                else
                {
                    #region 添加任务计划
                    int newId = CustomJobDetailBLL.CreateInstance().Insert(jobDetail); // 调用“业务逻辑层”的方法,检查有效性后插入至数据库。
                    if (newId == 0)
                    {
                        return;
                    }
                    CustomJobDetailBLL.CreateInstance().AddHostJob(jobHostSite, jobDetail.JobId, jobDetail.JobName,
                                                                   () => { this.Invoke(new CallBackDelegate(CallBackFunc), formSysMessage, "添加任务计划成功。"); },
                                                                   () => { this.Invoke(new CallBackDelegate(CallBackFunc), formSysMessage, "添加任务计划失败。"); });

                    #endregion
                }
            }
            catch (Exception ex)
            {
                this.Invoke(new CallBackDelegate(CallBackFunc), formSysMessage, "保存失败。");
                Log4NetHelper.WriteExcepetion(ex);
            }
        }
Esempio n. 2
0
        public JsonResult StopJob()
        {
            try
            {
                IScheduler scheduler = QuartzNetHelper.GetScheduler();
                if (!scheduler.IsStarted)
                {
                    scheduler.Start();
                }
                int             jobId     = Convert.ToInt32(Request["jobId"]);
                string          jobName   = Request["jobName"];
                CustomJobDetail customJob = CustomJobDetailBLL.CreateInstance().Get(jobId, jobName);

                var jobKey = JobKey.Create(customJob.JobName, customJob.JobGroup);
                if (scheduler.CheckExists(jobKey))
                {
                    scheduler.PauseJob(jobKey);
                }
                else
                {
                    IJobDetail job = JobBuilder.Create <CustomHttpJob>()
                                     .WithIdentity(customJob.JobName, customJob.JobGroup)
                                     .Build();
                    ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
                                           .StartAt(customJob.StartDate)
                                           .EndAt(customJob.EndDate)
                                           .WithIdentity(customJob.JobName, customJob.JobGroup)
                                           .WithCronSchedule(customJob.CronExpression)
                                           .WithDescription(customJob.Description)
                                           .Build();
                    scheduler.ScheduleJob(job, trigger);
                    scheduler.Start();
                    scheduler.PauseJob(jobKey);
                }


                customJob.State = (byte)JobState.Stopping;
                CustomJobDetailBLL.CreateInstance().Update(customJob);

                return(Json(new { Code = 1, Message = "执行成功!" }));
            }
            catch (Exception ex)
            {
                Log4NetHelper.WriteExcepetion(ex);
                return(Json(new { Code = 0, Message = "执行失败!" }));
            }
        }
Esempio n. 3
0
        public void Execute(IJobExecutionContext context)
        {
            string jobName = context.JobDetail.Key.Name;

            Task.Factory.StartNew(() =>
            {
                try
                {
                    CustomJobDetail customJob = CustomJobDetailBLL.CreateInstance().Get(jobName);
                    HttpHelper.SendPost(customJob.JobServiceURL + "?jobName=" + customJob.JobName, "");
                }
                catch (Exception ex)
                {
                    Log4NetHelper.WriteExcepetion(ex);
                }
            });
        }
Esempio n. 4
0
        public JsonResult DeleteJob()
        {
            try
            {
                IScheduler scheduler = QuartzNetHelper.GetScheduler();
                if (!scheduler.IsStarted)
                {
                    scheduler.Start();
                }
                int             jobId     = Convert.ToInt32(Request["jobId"]);
                string          jobName   = Request["jobName"];
                CustomJobDetail customJob = CustomJobDetailBLL.CreateInstance().Get(jobId, jobName);
                scheduler.PauseTrigger(new TriggerKey(customJob.JobName, customJob.JobGroup));
                scheduler.UnscheduleJob(new TriggerKey(customJob.JobName, customJob.JobGroup));

                var jobKey = JobKey.Create(customJob.JobName, customJob.JobGroup);
                if (scheduler.CheckExists(jobKey))
                {
                    var result = scheduler.DeleteJob(jobKey);

                    if (result)
                    {
                        CustomJobDetailBLL.CreateInstance().Delete(customJob.JobId, customJob.JobName);
                    }

                    if (result)
                    {
                        return(Json(new { Code = 1, Message = "执行成功!" }));
                    }
                    else
                    {
                        return(Json(new { Code = 0, Message = "执行失败!" }));
                    }
                }
                return(Json(new { Code = 1, Message = "执行成功!" }));
            }
            catch (Exception ex)
            {
                Log4NetHelper.WriteExcepetion(ex);
                return(Json(new { Code = 0, Message = "执行失败!" }));
            }
        }
Esempio n. 5
0
        private void DgvGrid_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                return;
            }

            int             jobId       = Convert.ToInt32(DgvGrid["ColAction", e.RowIndex].Value.ToString()); // 获取所要修改关联对象的主键。
            string          jobIdentity = DgvGrid["ScheduleJobName", e.RowIndex].Value.ToString();
            CustomJobDetail jobDetail   = CustomJobDetailBLL.CreateInstance().Get(jobId, jobIdentity);

            #region 修改

            //用户单击DataGridView“操作”列中的“修改”按钮。
            if (JobDataGridViewActionButtonCell.IsModifyButtonClick(sender, e))
            {
                FormMain.LoadNewControl(ScheduleJobEdit.BindJobDetail(jobDetail));                            // 载入该模块的修改信息界面至主窗体显示。
            }
            #endregion

            #region  除

            //用户单击DataGridView“操作”列中的“删除”按钮。
            if (JobDataGridViewActionButtonCell.IsDeleteButtonClick(sender, e))
            {
                DialogResult dialogResult = FormSysMessage.ShowMessage("确定要删除该任务计划吗?");
                if (dialogResult == DialogResult.OK)
                {
                    var formSysMessage = FormSysMessage.ShowLoading();
                    int effected       = CustomJobDetailBLL.CreateInstance().Delete(jobId, jobIdentity);
                    if (effected > 0)
                    {
                        CustomJobDetailBLL.CreateInstance().DeleteHostJob(
                            jobHostSite,
                            jobId,
                            jobIdentity,
                            () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "删除任务计划成功。"); },
                            () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "删除任务计划失败。"); });
                    }
                    BindDataGrid();
                }
            }
            #endregion

            #region 启动任务计划

            //用户单击DataGridView“操作”列中的“启动”按钮。
            if (JobDataGridViewActionButtonCell.IsStartButtonClick(sender, e))
            {
                var formSysMessage = FormSysMessage.ShowLoading();
                CustomJobDetailBLL.CreateInstance().StartHostJob(jobHostSite, jobId, jobIdentity,
                                                                 () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "启动任务计划成功。"); },
                                                                 () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "启动任务计划失败。"); });
            }

            #endregion

            #region 停止任务计划

            //用户单击DataGridView“操作”列中的“停止”按钮。
            if (JobDataGridViewActionButtonCell.IsStopButtonClick(sender, e))
            {
                var formSysMessage = FormSysMessage.ShowLoading();
                CustomJobDetailBLL.CreateInstance().StopHostJob(jobHostSite, jobId, jobIdentity,
                                                                () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "停止任务计划成功。"); },
                                                                () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "停止任务计划失败。"); });
            }

            #endregion
        }
Esempio n. 6
0
 /// <summary>
 /// 对DataGridView控件的数据源进行绑定。
 /// </summary>
 public static void BindDataGrid()
 {
     instance.PageBar.DataControl = instance.DgvGrid;
     instance.PageBar.DataSource  = CustomJobDetailBLL.CreateInstance().GetPageList(instance.PageBar.PageSize, instance.PageBar.CurPage);
     instance.PageBar.DataBind();
 }