上一篇我们了解了任务调度及他的远端管理方式,传送门:任务调度及远端管理(基于Quartz.net)
这篇我们要完成任务调度的持久化功能,即新增修改删除之类的功能,这必须得要有的,不然都不知道后台都有什么作业在跑
一、Job的CURD
1.1 、新建Job表
.( , (50) COLLATE Chinese_PRC_CI_AS NULL, (50) COLLATE Chinese_PRC_CI_AS NULL, (50) COLLATE Chinese_PRC_CI_AS NULL, (50) COLLATE Chinese_PRC_CI_AS NULL, (50) COLLATE Chinese_PRC_CI_AS NULL, , , , , (200) COLLATE Chinese_PRC_CI_AS NULL, , ( )) )
1.2、控制器还是用上一篇的HelloJobController,改一下
HelloJobController : Controller 2 { 3 private IJobApplication jobApplication; HelloJobController(IJobApplication jobApplication) 6 { 7 this.jobApplication = jobApplication; 8 } )] 11 public ActionResult Index(string PageIndex) 12 { 13 Page page = new Page(); 14 page.PageIndex = PageIndex.ToInt(1); model = new JobPageViewModel(); 17 var soure = this.jobApplication.GetPage(page, t => t.CreateTime); 18 19 model.Items = Mapper.Map<List<JobViewModel>>(soure.Item2); 20 model.Total = soure.Item1; 21 model.Page = page; View(model); 24 } 25 26 [HttpPost] 27 [ValidateAntiForgeryToken] 28 public ActionResult Add(JobCURequest entity) 29 { 30 this.jobApplication.Add(new JobCURequest() 31 { 32 Id = Guid.NewGuid(), 33 GroupName = entity.GroupName, 34 JobName = entity.JobName, 35 TriggerName = entity.TriggerName, 36 Cron = entity.Cron, 37 TriggerState = Quartz.TriggerState.None.ToString() 38 }); RedirectToAction(); 41 } 42 43 [HttpGet] 44 public ActionResult Delete(string id) 45 { 46 this.jobApplication.Delete(Guid.Parse(id)); ); 48 } 49 50 [HttpGet] 51 public ActionResult Edit(Guid id) 52 { 53 var soure = this.jobApplication.Get(id); 54 return Json(soure, JsonRequestBehavior.AllowGet); 55 } 56 57 [HttpPost] 58 [ValidateAntiForgeryToken] 59 public ActionResult Edit(JobCURequest entity) 60 { 61 this.jobApplication.Update(new JobCURequest() 62 { 63 Id = entity.Id, 64 GroupName = entity.GroupName, 65 JobName = entity.JobName, 66 TriggerName = entity.TriggerName, 67 Cron = entity.Cron, 68 TriggerState = Quartz.TriggerState.None.ToString() 69 }); RedirectToAction(); 72 }73 }
可以看到我们新加了IJobApplication的注入,以及Index、Add、Delete、Edit(2个)5个方法
至于里边的实现就是我们上一个系列写好的功能,详细情况请点击传送门:架构设计
1.3、 视图View也要改一下
1 @model Presentation.MVC.Models.JobPageViewModel 2 @{ 3 ViewBag.Title = "Index"; 4 Layout = "~/Views/Shared/_Bootstrap.cshtml"; 5 } 新增作业 @using (Html.BeginForm("Add", "HelloJob", null, FormMethod.Post, new { @id = "formHelloJob", @class = "form-horizontal", role = "form" })) 20 { 21 @Html.AntiForgeryToken() 群组作业名称触发器名称执行计划描述提交 } 执行暂停恢复修改删除序号群组作业名称触发器名称执行计划描述开始时间结束时间上次执行下次执行状态 @foreach (var item in Model.Items) 96 { @item.RowNumber@item.GroupName@item.JobName@item.TriggerName@item.Cron@item.Description@item.StartTime@item.EndTime@item.PreTime@item.NextTime@item.TriggerState } @for (int index = 1; index <= Model.TotalPage; index++) 118 { index) 120 { @index } 123 else 124 { @index } 127 } () { () { .checked) { .checked); { ); 138 } 139 }); () { GetChooseIds(); ; 144 145 $.ajax({ id, , , (result) { ).val(result.Id); ).val(result.GroupName); ).val(result.JobName); ).val(result.TriggerName); ).val(result.Cron); ).val(result.Description); ); ); ); 160 }, (e) { 162 alert(e); 163 } 164 }); 165 }); () { GetChooseIds(); ; () { id; 173 }); 174 }); () { GetChooseIds(); ; () { id; 182 }); 183 }); () { GetChooseIds(); ; () { id; 191 }); 192 }); () { GetChooseIds(); ; () { id; 200 }); 201 }); GetChooseIds() { ; () { ); 207 }); id; 210 } 211 });
1.4、界面代码就完成了,我们去看看
完全没问题,下面我们来完成 执行、暂停、恢复三个操作作业的按钮功能
二、作业管理
2.1、HelloJobHelper改一下,名称我也改了(JobHelper)
2.2、HelloJobController加入上边三个功能