namespace Yw.Server
{
///
/// 工位运行分析单任务辅助类
///
public class EMWSRunAnalySingleJobHelper
{
private IScheduler _sched;//调度器
///
/// 配置
///
public Yw.Model.RunAnalyConfigure Configure { get; set; }
///
/// 开始任务
///
public async Task StartJob(Yw.Model.RunAnalyConfigure configure)
{
if (_sched != null)
{
return;
}
this.Configure = configure;
var jobName = EMWSRunAnalySingleJobNameHelper.GetJobName(configure);
var jobGroupName = EMWSRunAnalySingleJobNameHelper.GetJobGroupName(configure);
var triggerName = EMWSRunAnalySingleJobNameHelper.GetTriggerName(configure);
// 1.创建scheduler的引用
var fac = new Quartz.Impl.StdSchedulerFactory();
_sched = await fac.GetScheduler();
//2.启动 scheduler
await _sched.Start();
//3.创建任务
var job = JobBuilder.Create()
.WithIdentity(jobName, jobGroupName)
.Build();
job.JobDataMap.Put(EMWSRunAnalySingleJob.Instance, configure);
//4.创建Trigger
var trigger = TriggerBuilder.Create()
.WithIdentity(triggerName, jobGroupName)
.WithSimpleSchedule(x => x.WithIntervalInSeconds(configure.Frequency)
.RepeatForever().WithMisfireHandlingInstructionNextWithRemainingCount())
.Build();
//5.加入调度管理器
await _sched.ScheduleJob(job, trigger);
}
///
/// 取消任务
///
public async Task CancelJob()
{
if (_sched == null)
return;
var jobGroupName = EMWSRunAnalySingleJobNameHelper.GetJobGroupName(this.Configure);
var triggerName = EMWSRunAnalySingleJobNameHelper.GetTriggerName(this.Configure);
var triggerKey = new TriggerKey(triggerName, jobGroupName);
if (await _sched.CheckExists(triggerKey))
{
await _sched.UnscheduleJob(triggerKey);
}
}
}
}