#region 添加任务计划
/// <summary>
/// 添加任务计划
/// </summary>
/// <returns></returns>
private void AddScheduleJob(List<AutoJobEntity> entityList)
{
try
{
foreach (AutoJobEntity entity in entityList.Where(p => p.JobStatus == StatusEnum.Yes.ParseToInt()))
{
if (entity.StartTime == null)
{
entity.StartTime = DateTime.Now;
}
DateTimeOffset starRunTime = DateBuilder.NextGivenSecondDate(entity.StartTime, 1);
if (entity.EndTime == null)
{
entity.EndTime = DateTime.MaxValue.AddDays(-1);
}
DateTimeOffset endRunTime = DateBuilder.NextGivenSecondDate(entity.EndTime, 1);
var scheduler = JobScheduler.GetScheduler();
IJobDetail job = JobBuilder.Create<JobExecute>().WithIdentity(entity.JobName, entity.JobGroupName).Build();
job.JobDataMap.Add("Id", entity.Id);
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
.StartAt(starRunTime)
.EndAt(endRunTime)
.WithIdentity(entity.JobName, entity.JobGroupName)
.WithCronSchedule(entity.CronExpression)
.Build();
//避免系统启动就把全部任务启动一次。
((CronTriggerImpl)trigger).MisfireInstruction = MisfireInstruction.CronTrigger.DoNothing;
scheduler.ScheduleJob(job, trigger);
scheduler.Start();
}
}
catch (Exception ex)
{
LogHelper.Write(ex);
}
}
#endregion