| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 立即运行 |
| | | /// </summary> |
| | | /// <param name="jobname"></param> |
| | | public ApiAction ImmediateRun<TJob>(TJob newEntity, string jobname) where TJob : class, ITJob |
| | | { |
| | | ApiAction apiAction = new(); |
| | | try |
| | | { |
| | | if (JobManager.AllSchedules.Any(q => q.Name == jobname)) |
| | | { |
| | | JobManager.RemoveJob(jobname); |
| | | string guid = Guid.NewGuid().ToString("N"); |
| | | TSK_JOB job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == jobname).First(); |
| | | var trigger = Biz.Db.Queryable<TSK_TRIG>().Where(x => x.JobId == job.ID).First(); |
| | | TrigArgs args = JsonConvert.DeserializeObject<TrigArgs>(job.Triggers[0].Args); |
| | | args.runType = RunType.ToRunNow; |
| | | JobManager.AddJob<TJob>((s) => GenerateSchedule(args, s.WithName(jobname))); |
| | | trigger.Status = TSK_TRIG.Statuss.Running.GetValue(); |
| | | trigger.Args = JsonConvert.SerializeObject(args); |
| | | |
| | | var db = Biz.Db; |
| | | //保存到数据库 |
| | | var dbTran = db.UseTran(() => |
| | | { |
| | | db.Updateable(trigger, "system_ImmediateRun_job").UpdateColumns(q => new { q.Status, q.Args, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); |
| | | }); |
| | | if (!dbTran.IsSuccess) |
| | | { |
| | | Logger.Scheduler.Fatal(dbTran.ErrorException, $"立即运行工作任务时保存状态到数据库异常"); |
| | | } |
| | | apiAction.LocaleMsg = new($"立即运行工作任务成功"); |
| | | } |
| | | } |
| | | catch (System.Exception ex) |
| | | { |
| | | apiAction.CatchExceptionWithLog(ex); |
| | | } |
| | | return apiAction; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 停止服务 |
| | | /// </summary> |
| | | public void Stop() |