Ejemplo n.º 1
0
 public Node(string name, IJobConfigurator _configurator)
 {
     this._configurator = _configurator;
     Name        = name;
     Mappers     = new List <IMapper>();
     MapperTasks = new List <Task>();
 }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
 public Job(IJobConfigurator configurator)
 {
     _configurator = configurator;
     _nodes        = new List <Node>();
 }