public void ChangeJobStatus(ChangeJobStatusReq req) { var job = Repository.FirstOrDefault(u => u.Id == req.Id); if (job == null) { throw new Exception("任务不存在"); } if (req.Status == (int)JobStatus.NotRun) //停止 { job.Stop(_scheduler); } else //启动 { job.Start(_scheduler); } var user = _auth.GetCurrentUser().User; job.Status = req.Status; job.UpdateTime = DateTime.Now; job.UpdateUserId = user.Id; job.UpdateUserName = user.Name; Repository.Update(job); }
public void ChangeJobStatus(ChangeJobStatusReq req) { var job = Repository.FirstOrDefault(u => u.Id == req.Id); if (job == null) { throw new Exception("任务不存在"); } if (req.Status == 0) //停止 { TriggerKey triggerKey = new TriggerKey(job.Id); // 停止触发器 _scheduler.PauseTrigger(triggerKey); // 移除触发器 _scheduler.UnscheduleJob(triggerKey); // 删除任务 _scheduler.DeleteJob(new JobKey(job.Id)); } else //启动 { var jobBuilderType = typeof(JobBuilder); var method = jobBuilderType.GetMethods().FirstOrDefault( x => x.Name.Equals("Create", StringComparison.OrdinalIgnoreCase) && x.IsGenericMethod && x.GetParameters().Length == 0) ?.MakeGenericMethod(Type.GetType(job.JobCall)); var jobBuilder = (JobBuilder)method.Invoke(null, null); IJobDetail jobDetail = jobBuilder.WithIdentity(job.Id).Build(); jobDetail.JobDataMap[Define.JOBMAPKEY] = job.Id; //传递job信息 ITrigger trigger = TriggerBuilder.Create() .WithCronSchedule(job.Cron) .WithIdentity(job.Id) .StartNow() .Build(); _scheduler.ScheduleJob(jobDetail, trigger); } var user = _auth.GetCurrentUser().User; job.Status = req.Status; job.UpdateTime = DateTime.Now; job.UpdateUserId = user.Id; job.UpdateUserName = user.Name; Repository.Update(job); }
public Response ChangeStatus(ChangeJobStatusReq req) { var result = new Response(); try { _app.ChangeJobStatus(req); result.Message = "切换成功,可以在系统日志中查看运行结果"; } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return(result); }
public string ChangeStatus(ChangeJobStatusReq req) { var result = new Response(); try { _app.ChangeJobStatus(req); result.Message = "切換成功,可以在系統日誌中檢視執行結果"; } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return(JsonHelper.Instance.Serialize(Result)); }
public void ChangeJobStatus(ChangeJobStatusReq req) { var job = Repository.FindSingle(u => u.Id == req.Id); if (job == null) { throw new Exception("任务不存在"); } if (req.Status == 0) //停止 { TriggerKey triggerKey = new TriggerKey(job.Id); // 停止触发器 _scheduler.PauseTrigger(triggerKey); // 移除触发器 _scheduler.UnscheduleJob(triggerKey); // 删除任务 _scheduler.DeleteJob(new JobKey(job.Id)); } else //启动 { IJobDetail jobDetail = JobBuilder.Create <SysLogJob>().WithIdentity(job.Id).Build(); jobDetail.JobDataMap[Define.JOBMAPKEY] = job.Id; //传递job信息 ITrigger trigger = TriggerBuilder.Create() .WithCronSchedule(job.Cron) .WithIdentity(job.Id) .StartNow() .Build(); _scheduler.ScheduleJob(jobDetail, trigger); } var user = _auth.GetCurrentUser().User; job.Status = req.Status; job.UpdateTime = DateTime.Now; job.UpdateUserId = user.Id; job.UpdateUserName = user.Name; Repository.Update(job); }
public async Task <IActionResult> ChangeStatus(ChangeJobStatusReq req) { CommonResult result = new CommonResult(); try { TaskManager job = iService.Get(req.Id); if (job == null) { throw new Exception("任务不存在"); } OnBeforeUpdate(job); job.Status = req.Status; IScheduler scheduler = await schedulerFactory.GetScheduler(); if (job.Status == 0) //停止 { TriggerKey triggerKey = new TriggerKey(job.Id, job.GroupName); // 停止触发器 await scheduler.PauseTrigger(triggerKey); // 移除触发器 await scheduler.UnscheduleJob(triggerKey); // 删除任务 await scheduler.DeleteJob(new JobKey(job.Id)); } else //启动 { IJobDetail jobDetail; if (job.IsLocal) { var implementationAssembly = Assembly.Load("Yuebon.Quartz.Jobs"); var implementationTypes = implementationAssembly.DefinedTypes.Where(t => t.GetInterfaces().Contains(typeof(IJob))); var tyeinfo = implementationTypes.Where(x => x.FullName == job.JobCallAddress).FirstOrDefault(); jobDetail = JobBuilder.Create(tyeinfo).WithIdentity(job.Id, job.GroupName).Build(); } else { jobDetail = JobBuilder.Create <HttpResultfulJob>().WithIdentity(job.Id, job.GroupName).Build(); } jobDetail.JobDataMap["OpenJob"] = job.Id; //传递job信息 ITrigger trigger = TriggerBuilder.Create() .WithCronSchedule(job.Cron) .WithIdentity(job.Id, job.GroupName) .WithDescription(job.Description) .ForJob(job.Id, job.GroupName) //给任务指定一个分组 .StartNow() .Build(); await scheduler.ScheduleJob(jobDetail, trigger); } if (job.Status == 1) { await scheduler.Start(); } iService.Update(job, job.Id); result.ErrCode = ErrCode.successCode; result.ErrMsg = "切换成功,可以在系统日志中查看运行结果"; } catch (Exception ex) { result.ErrCode = "500"; result.ErrMsg = ex.InnerException?.Message ?? ex.Message; } return(ToJsonContent(result)); }