Esempio n. 1
0
 /// <summary>
 /// 调用任务API,触发任务调度
 /// </summary>
 private async Task CallTaskApi(int jobID)
 {
     await Task.Run(() =>
     {
         TaskJobInfo taskJob = _yunYingRepository.GetModel <TaskJobInfo>(new { JobID = jobID });
         if (taskJob == null)
         {
             _logger.LogWarning($"Can not find the taskjob -> JobID[{jobID}]");
             return;
         }
         if (string.IsNullOrEmpty(taskJob.ApiUrl))
         {
             _logger.LogWarning($"the call apiUrl of taskjob is null-> JobID[{jobID}]");
             return;
         }
         _logger.LogInformation($"start CallTaskApi -> ApiUrl[{taskJob.ApiUrl}]");
         try
         {
             //call api url
             using (var httpClient = new HttpClient())
             {
                 var result = httpClient.GetStringAsync(taskJob.ApiUrl).Result;
                 _logger.LogInformation($"CallTaskApi success->JobID[{jobID}],Result[{result}]");
                 taskJob.LastExecuteTime = DateTime.Now;
                 _yunYingRepository.Update(taskJob);
             }
         }
         catch (Exception ex)
         {
             _logger.LogError(ex, $"CallTaskApi failed -> ApiUrl[{taskJob.ApiUrl}]");
         }
     });
 }
Esempio n. 2
0
        public async Task <ActionResult> SwitchStatus(SwitchStatusRequest switchRequest)
        {
            AjaxResult  ajaxResult = new AjaxResult();
            TaskJobInfo info       = _yunYingRepository.GetModel <TaskJobInfo>(new { JobID = switchRequest.JobId });

            if (info == null)
            {
                ajaxResult.IsOk = false;
                ajaxResult.Msg  = $"作业不存在[jobid={switchRequest.JobId}]";
                return(Json(ajaxResult));
            }
            await _quartzManager.CreateJob(info);

            if (switchRequest.Status == 1)
            {
                await _quartzManager.ResumeJob(info.JobName);
            }
            else if (switchRequest.Status == 2)
            {
                await _quartzManager.PauseJob(info.JobName);
            }
            else if (switchRequest.Status == 3)
            {
                await _quartzManager.DeleteJob(info.JobName);

                await _quartzManager.CreateJob(info);
            }
            ajaxResult.IsOk = true;
            ajaxResult.Msg  = "操作成功";
            return(Json(ajaxResult));
        }
        /// <summary>
        /// 创建CronTrigger
        /// </summary>
        /// <returns></returns>
        private ICronTrigger CreateCronTrigger(TaskJobInfo taskJob)
        {
            var          scheduleBuilder = CronScheduleBuilder.CronSchedule(taskJob.CronExpression);
            ICronTrigger trigger         = (ICronTrigger)TriggerBuilder.Create()
                                           .WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing())
                                           .WithIdentity(taskJob.JobName)
                                           .Build();

            return(trigger);
        }
Esempio n. 4
0
        public async Task <ActionResult> Add(TaskJobInfo info)
        {
            AjaxResult ajaxResult = new AjaxResult();

            if (info.JobID == 0)
            {
                info.LastExecuteTime = DateTime.Now;
                var jobId = _yunYingRepository.Insert(info);
                if (jobId > 0)
                {
                    info.JobID = (int)jobId;
                    await _quartzManager.CreateJob(info);

                    ajaxResult.IsOk = true;
                    ajaxResult.Msg  = "添加成功";
                }
                else
                {
                    ajaxResult.IsOk = false;
                    ajaxResult.Msg  = "添加失败";
                }
            }
            else
            {
                var    updateInfo = _yunYingRepository.GetModel <TaskJobInfo>(new { JobId = info.JobID });
                string oldJobName = updateInfo.JobName;
                updateInfo.JobName        = info.JobName;
                updateInfo.JobDesc        = info.JobDesc;
                updateInfo.JobClassName   = info.JobClassName;
                updateInfo.CronExpression = info.CronExpression;
                updateInfo.ApiUrl         = Convert.ToString(info.ApiUrl);
                if (_yunYingRepository.Update(updateInfo) > 0)
                {
                    await _quartzManager.DeleteJob(oldJobName);

                    await _quartzManager.CreateJob(updateInfo);

                    ajaxResult.IsOk = true;
                    ajaxResult.Msg  = "更新成功";
                }
                else
                {
                    ajaxResult.IsOk = false;
                    ajaxResult.Msg  = "更新失败";
                }
            }
            return(Json(ajaxResult));
        }
        /// <summary>
        /// 创建Job
        /// </summary>
        /// <param name="jobItem"></param>
        /// <param name="types"></param>
        /// <returns></returns>
        public async Task CreateJob(TaskJobInfo taskJob)
        {
            var isExist = await ExistJob(taskJob.JobName);

            if (isExist)
            {
                return;
            }
            Type[] types   = GetJobClass();
            var    jobType = types.Where(t => t.Name == taskJob.JobClassName).FirstOrDefault();

            if (jobType == null)
            {
                _logger.LogWarning($"Can not find JobType[{taskJob.JobClassName}],JobID[{taskJob.JobID}],JobName[{taskJob.JobName}]!");
                return;
            }
            var jobDetail = new JobDetailImpl(taskJob.JobName, jobType);

            jobDetail.JobDataMap.Put(JobParamKey.JobID, taskJob.JobID);
            ICronTrigger trigger = CreateCronTrigger(taskJob);
            await _scheduler.ScheduleJob(jobDetail, trigger);
        }
Esempio n. 6
0
        /// <summary>
        /// 任务添加
        /// </summary>
        /// <returns></returns>
        public ActionResult Add(int id)
        {
            TaskJobInfo info = _yunYingRepository.GetModel <TaskJobInfo>(new { JobID = id });

            return(View(info ?? new TaskJobInfo()));
        }