QuartzNet进阶持久化管理.docx
- 文档编号:30208040
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:23
- 大小:191.76KB
QuartzNet进阶持久化管理.docx
《QuartzNet进阶持久化管理.docx》由会员分享,可在线阅读,更多相关《QuartzNet进阶持久化管理.docx(23页珍藏版)》请在冰豆网上搜索。
QuartzNet进阶持久化管理
目录
一、数据库中新建Job表2
二、后台Job的管理控制器:
JobController3
三、View页面视图5
四、作业管理JobHelper12
五、定义要执行的任务14
六、Quartz的cron表达式16
这篇我们要完成任务调度的持久化功能,即新增修改删除之类的功能,这必须得要有的,不然都不知道后台都有什么作业在跑
一、数据库中新建Job表
以MSSQLServer为例
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[dt_job](
[id][int]IDENTITY(1,1)NOTNULL,
[GroupName][nvarchar](50)NULL,
[JobName][nvarchar](50)NULL,
[TriggerName][nvarchar](50)NULL,
[Cron][varchar](50)NULL,
[TriggerState][varchar](50)NULL,
[PreTime][datetime]NULL,
[NextTime][datetime]NULL,
[Description][nvarchar](200)NULL,
[CreateTime][datetime]NULL,
CONSTRAINT[PK_dt_job_1]PRIMARYKEYCLUSTERED
(
[id]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
GO
2、后台Job的管理控制器:
JobController
注:
unitOfWork:
数据库访问链接上下文,根据自己框架自行修改
publicclassJobController:
BaseAdminController
{
//GET:
Admin/Job
publicActionResultIndex(stringPageIndex)
{
varmodel=unitOfWork.JobRepository.findAll();
returnView(model);
}
publicActionResultEdit(int?
id)
{
varmodel=newdt_job();
if(id.HasValue)
{
model=unitOfWork.JobRepository.find(id);
}
returnView(model);
}
[HttpPost]
publicActionResultEdit(int?
id,dt_jobmodel)
{
try
{
if(ModelState.IsValid)
{
if(id.HasValue&&id.Value>0)
{
var_model=unitOfWork.JobRepository.find(id.Value);
_model.GroupName=model.GroupName;
_model.JobName=model.JobName;
_model.TriggerName=model.TriggerName;
_model.Cron=model.Cron;
_model.Description=model.Description;
_model.TriggerState=Quartz.TriggerState.None.ToString();
unitOfWork.JobRepository.Update(_model);
}
else
{
this.unitOfWork.JobRepository.Insert(newdt_job()
{
GroupName=model.GroupName,
JobName=model.JobName,
TriggerName=model.TriggerName,
Cron=model.Cron,
Description=model.Description,
TriggerState=Quartz.TriggerState.None.ToString()
});
}
}
returnRedirectToAction("Index");
}
catch
{
ModelState.AddModelError("","验证未通过!
");
returnView(model);
}
}
[HttpGet]
publicActionResultDelete(intid)
{
JobHelper.Deltete(unitOfWork.JobRepository.find(id));
this.unitOfWork.JobRepository.Delete(id);
returnRedirectToAction("Index");
}
publicActionResultRun(intid)
{
varentity=this.unitOfWork.JobRepository.find(id);
entity.TriggerState=Quartz.TriggerState.Normal.ToString();
unitOfWork.JobRepository.Update(entity);
JobHelper.Run(entity);
returnRedirectToAction("Index","Job");
}
publicActionResultPause(intid)
{
varentity=this.unitOfWork.JobRepository.find(id);
entity.TriggerState=Quartz.TriggerState.Paused.ToString();
unitOfWork.JobRepository.Update(entity);
JobHelper.Pause(entity);
returnRedirectToAction("Index");
}
publicActionResultStop(intid)
{
varentity=this.unitOfWork.JobRepository.find(id);
entity.TriggerState=Quartz.TriggerState.None.ToString();
unitOfWork.JobRepository.Update(entity);
JobHelper.Deltete(entity);
returnRedirectToAction("Index");
}
publicActionResultResume(intid)
{
varentity=unitOfWork.JobRepository.find(id);
entity.TriggerState=Quartz.TriggerState.Normal.ToString();
unitOfWork.JobRepository.Update(entity);
JobHelper.Resume(entity);
returnRedirectToAction("Index");
}
}
3、View页面视图
Index视图:
@modelIEnumerable
@{
ViewBag.Title="Index";
}