namespace Yw.Server
|
{
|
/// <summary>
|
/// 设备评价任务辅助类
|
/// </summary>
|
public class EquipmentEvaluateJobHelper
|
{
|
|
private IScheduler _sched;//调度器
|
|
/// <summary>
|
/// 绑定
|
/// </summary>
|
public Model.HealthMultiEvaluationModelBinding Binding { get; set; }
|
|
/// <summary>
|
/// 开始任务
|
/// </summary>
|
public async Task StartJob(Model.HealthMultiEvaluationModelBinding binding)
|
{
|
if (_sched != null)
|
{
|
return;
|
}
|
|
this.Binding = binding;
|
var jobName = EquipmentEvaluateJobNameHelper.GetJobName(binding);
|
var jobGroupName = EquipmentEvaluateJobNameHelper.GetJobGroupName(binding);
|
var triggerName = EquipmentEvaluateJobNameHelper.GetTriggerName(binding);
|
|
// 1.创建scheduler的引用
|
var fac = new Quartz.Impl.StdSchedulerFactory();
|
_sched = await fac.GetScheduler();
|
|
//2.启动 scheduler
|
await _sched.Start();
|
|
//3.创建任务
|
var job = JobBuilder.Create<EquipmentEvaluateJob>()
|
.WithIdentity(jobName, jobGroupName)
|
.Build();
|
job.JobDataMap.Put(EquipmentEvaluateJob.Instance, binding);
|
|
//4.创建Trigger
|
ITrigger trigger = null;
|
if (binding.CronType == Health.eCronType.Real)
|
{
|
trigger = TriggerBuilder.Create()
|
.WithIdentity(triggerName, jobGroupName)
|
.WithSimpleSchedule(x => x.WithIntervalInSeconds(int.Parse(binding.CronParas))
|
.RepeatForever().WithMisfireHandlingInstructionNextWithRemainingCount())
|
.Build();
|
}
|
else
|
{
|
trigger = TriggerBuilder.Create()
|
.WithIdentity(triggerName, jobGroupName)
|
.WithCronSchedule(binding.CronParas)
|
.Build();
|
}
|
|
//5.加入调度管理器
|
await _sched.ScheduleJob(job, trigger);
|
}
|
|
/// <summary>
|
/// 取消任务
|
/// </summary>
|
public async Task CancelJob()
|
{
|
if (_sched == null)
|
return;
|
var jobGroupName = EquipmentEvaluateJobNameHelper.GetJobGroupName(this.Binding);
|
var triggerName = EquipmentEvaluateJobNameHelper.GetTriggerName(this.Binding);
|
var triggerKey = new TriggerKey(triggerName, jobGroupName);
|
if (await _sched.CheckExists(triggerKey))
|
{
|
await _sched.UnscheduleJob(triggerKey);
|
}
|
}
|
|
|
}
|
}
|