/// <summary> /// Si el job es de tipo Automático crea un trigger en CGControlPanel y en Quartz. Se ejecuta automáticamente. /// Si el job es de tipo manual se crea un trigger DESHABILITADO en CGControlPanel. Se ejecutará luego manualmente desde el menú contextual correspondiente -que disparará ExecuteManualJob-. /// </summary> /// <param name="job"></param> /// <param name="trigger"></param> public void AddTrigger(Job job, JobTrigger trigger) { // OJO: Si el trigger viene deshabilitado NO se lo debe agregar al Quartz, es el caso de agendamiento de un job manual job.Triggers.Add(trigger); trigger.Job = job; trigger.JobId = job.JobId; if (trigger.Validate()) { UnitOfWork.JobTriggerRepository.Insert(trigger); UnitOfWork.JobsRepository.Update(job); UnitOfWork.Save(); if (trigger.Enabled) { AddQuartzJob(job, trigger); } } else { Utils.Validation.Helper.BuildValidationErrors(trigger.ValidationErrors); } }
public void DeleteTrigger(JobTrigger trigger) { if(trigger.JobTriggerStatus != JobTriggerStatus.Ejecutado) { trigger.Deleted = true; trigger.DeletedDate = DateTime.Now; if (Status() == SchedulerStatus.Apagado) throw new QuartzException("El servicio scheduler se encuentra apagado"); if (trigger.Validate()) { UnitOfWork.JobTriggerRepository.Update(trigger); UnitOfWork.Save(); Scheduler.UnscheduleJob(new TriggerKey(trigger.JobTriggerId.ToString())); return; } UnitOfWork.Save(); Utils.Validation.Helper.BuildValidationErrors(trigger.ValidationErrors); Scheduler.UnscheduleJob(new TriggerKey(trigger.JobTriggerId.ToString())); return; } throw new Exception("Procesos ya ejecutados no pueden ser eliminados."); }