public Node(string name, IJobConfigurator _configurator) { this._configurator = _configurator; Name = name; Mappers = new List <IMapper>(); MapperTasks = new List <Task>(); }
/// <summary> /// 添加一个工作调度 /// </summary> /// <param name="entity"></param> /// <param name="runNumber"></param> /// <returns></returns> public async Task <BaseResult> AddScheduleJobAsync(ScheduleEntity entity, long?runNumber = null) { var result = new BaseResult(); try { //检查任务是否已存在 var jobKey = new JobKey(entity.JobName, entity.JobGroup); if (await scheduler.CheckExists(jobKey)) { result.Code = 500; result.Msg = "任务已存在"; return(result); } //http请求配置 var httpDir = new Dictionary <string, string>() { { Constant.EndAt, entity.EndTime.ToString() }, { Constant.JobTypeEnum, ((int)entity.JobType).ToString() }, { Constant.MAILMESSAGE, ((int)entity.MailMessage).ToString() }, }; if (runNumber.HasValue) { httpDir.Add(Constant.RUNNUMBER, runNumber.ToString()); } IJobConfigurator jobConfigurator = null; if (entity.JobType == JobTypeEnum.Url) { jobConfigurator = JobBuilder.Create <HttpJob>(); httpDir.Add(Constant.REQUESTURL, entity.RequestUrl); httpDir.Add(Constant.HEADERS, entity.Headers); httpDir.Add(Constant.REQUESTPARAMETERS, entity.RequestParameters); httpDir.Add(Constant.REQUESTTYPE, ((int)entity.RequestType).ToString()); } else if (entity.JobType == JobTypeEnum.Emial) { jobConfigurator = JobBuilder.Create <MailJob>(); httpDir.Add(Constant.MailTitle, entity.MailTitle); httpDir.Add(Constant.MailContent, entity.MailContent); httpDir.Add(Constant.MailTo, entity.MailTo); } else if (entity.JobType == JobTypeEnum.Mqtt) { jobConfigurator = JobBuilder.Create <MqttJob>(); httpDir.Add(Constant.Topic, entity.Topic); httpDir.Add(Constant.Payload, entity.Payload); } else if (entity.JobType == JobTypeEnum.RabbitMQ) { jobConfigurator = JobBuilder.Create <RabbitJob>(); httpDir.Add(Constant.RabbitQueue, entity.RabbitQueue); httpDir.Add(Constant.RabbitBody, entity.RabbitBody); } // 定义这个工作,并将其绑定到我们的IJob实现类 IJobDetail job = jobConfigurator .SetJobData(new JobDataMap(httpDir)) .WithDescription(entity.Description) .WithIdentity(entity.JobName, entity.JobGroup) .Build(); // 创建触发器 ITrigger trigger; //校验是否正确的执行周期表达式 if (entity.TriggerType == TriggerTypeEnum.Cron)//CronExpression.IsValidExpression(entity.Cron)) { trigger = CreateCronTrigger(entity); } else { trigger = CreateSimpleTrigger(entity); } // 告诉Quartz使用我们的触发器来安排作业 await scheduler.ScheduleJob(job, trigger); result.Code = 200; } catch (Exception ex) { result.Code = 505; result.Msg = ex.Message; } return(result); }
public Job(IJobConfigurator configurator) { _configurator = configurator; _nodes = new List <Node>(); }