public static void ReSchedule(string guid) { var task = JobRepository.GetByGuid(guid); var job = JobRepository.SetTaskOneTimeOnly(guid, task.Alias, task.Data); JobScheduler.LaunchJob <JobList.CommandJob>(guid); }
public static void LaunchJob <T>(string guid) where T : IJob { var _task = JobRepository.GetByGuid(guid); IJobDetail task = JobBuilder.Create <T>() .WithIdentity(_task.Alias, Guid.NewGuid().ToString()) .UsingJobData("data", _task.Data) .UsingJobData("jobID", _task.Guid) .Build(); ITrigger trigger; switch (_task.TriggerPeriod) { case TriggerPeriod.IsOneTimeOnly: trigger = DefineOneTimeOnlyTrigger(_task.Alias, _task.StartTime); break; case TriggerPeriod.IsCron: trigger = DefineCronTrigger(_task.Alias, _task.StartTime, _task.CronExpression); break; case TriggerPeriod.WithInterval: trigger = DefineIntervalTrigger(_task.Alias, _task.StartTime, _task.IntervalType, _task.IntervalSpan, _task.Count); break; default: trigger = DefineDefaultTrigger(_task.Alias); break; } __scheduler.ScheduleJob(task, trigger); }
public static void Schedule(string jobName, string command, string cron) { var guid = Guid.NewGuid().ToString(); string[] data = new string[] { command.GetFirstString(), command.GetAllStringsButFirst() }; string dataJson = JsonConvert.SerializeObject(data); var job = JobRepository.SetTaskCron(guid, jobName, dataJson, cron); Thread.Sleep(20); JobScheduler.LaunchJob <JobList.CommandJob>(guid); }
public void Execute(IJobExecutionContext context) { JobKey key = context.JobDetail.Key; JobDataMap dataMap = context.JobDetail.JobDataMap; string dataJson = dataMap.GetString("data"); string[] data = JsonConvert.DeserializeObject <string[]>(dataJson); string command = data[0]; string arguments = data[1]; string jobId = dataMap.GetString("jobID"); CommandModel cmd = Command.Launch(command, arguments); string output = cmd.output; JobRepository.AddResult(jobId, output); }
public static void Start(bool _recoverTasks) { if (_recoverTasks == false) { __scheduler.Start(); } else { __scheduler.Start(); List <JobModel> taskList = JobRepository.GetEnabled(); ConsoleLogger.Log("{0} job(s) scheduled", taskList.ToArray().Length); if (taskList.ToArray().Length > 0) { foreach (JobModel task in taskList) { if (task != null) { LaunchJob <JobList.CommandJob>(task.Guid); } } } } }