Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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));
        }