/// <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}]"); } }); }
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); }
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); }
/// <summary> /// 任务添加 /// </summary> /// <returns></returns> public ActionResult Add(int id) { TaskJobInfo info = _yunYingRepository.GetModel <TaskJobInfo>(new { JobID = id }); return(View(info ?? new TaskJobInfo())); }