/// <summary> /// Initializes a new instance of the <see cref="JobbrServer"/> class. /// </summary> public JobbrServer(IJobScheduler scheduler, IJobExecutor jobExecutor, IJobStorageProvider jobStorageProvider, List <IJobbrComponent> components, MessageDispatcher messageDispatcher, ConfigurationManager configurationManager, RegistryBuilder registryBuilder) { Logger.Debug("A new instance of a a JobbrServer has been created."); this.scheduler = scheduler; this.executor = jobExecutor; this.components = components; this.configurationManager = configurationManager; this.registryBuilder = registryBuilder; this.jobStorageProvider = jobStorageProvider; messageDispatcher.WireUp(); }
private static void AddTrigger(IJobStorageProvider storage, JobTriggerBase trigger, JobDefinition jobDef, long jobId) { trigger.IsActive = true; trigger.JobId = jobId; Logger.InfoFormat("Adding trigger (type: '{0}' to job '{1}' (JobId: '{2}')", trigger.GetType().Name, jobDef.UniqueName, jobId); var scheduledTrigger = trigger as ScheduledTrigger; if (scheduledTrigger != null) { storage.AddTrigger(jobId, scheduledTrigger); } var recurringTrigger = trigger as RecurringTrigger; if (recurringTrigger != null) { storage.AddTrigger(jobId, recurringTrigger); } }
public ExposeStorageProvider(IJobStorageProvider jobStorageProvider) { this.JobStorageProvider = jobStorageProvider; Instance = this; }
public ExposeAllServicesComponent(IJobbrServiceProvider serviceProvider, IArtefactsStorageProvider artefactsStorageProvider, IJobStorageProvider jobStorageProvider, IJobManagementService jobManagementService, IQueryService queryService, IServerManagementService managementService, IJobRunInformationService informationService, IJobRunProgressChannel progressChannel) { this.ServiceProvider = serviceProvider; this.ArtefactsStorageProvider = artefactsStorageProvider; this.JobStorageProvider = jobStorageProvider; this.JobManagementService = jobManagementService; this.QueryService = queryService; this.ManagementService = managementService; this.InformationService = informationService; this.ProgressChannel = progressChannel; instancesPerThread.Value = this; }
internal int Apply(IJobStorageProvider storage) { var numberOfChanges = 0; if (this.HasConfiguration) { foreach (var jobDefinition in this.Definitions) { var existingJob = storage.GetJobByUniqueName(jobDefinition.UniqueName); if (existingJob == null) { // Add new Job Logger.InfoFormat("Adding job '{0}' of type '{1}'", jobDefinition.UniqueName, jobDefinition.ClrType); var job = new Job { UniqueName = jobDefinition.UniqueName, Type = jobDefinition.ClrType, Parameters = jobDefinition.Parameter }; storage.AddJob(job); foreach (var trigger in jobDefinition.Triggers) { AddTrigger(storage, trigger, jobDefinition, job.Id); numberOfChanges++; } } else { // Update existing Jobs and triggers if (!string.Equals(existingJob.Type, jobDefinition.ClrType, StringComparison.OrdinalIgnoreCase)) { Logger.InfoFormat("Updating type for Job '{0}' (Id: '{1}') from '{2}' to '{2}'", existingJob.UniqueName, existingJob.Id, existingJob.Type, jobDefinition.ClrType); existingJob.Type = jobDefinition.ClrType; existingJob.Parameters = jobDefinition.Parameter; storage.Update(existingJob); numberOfChanges++; } if (jobDefinition.HasTriggerDefinition) { // Setup triggers var job = storage.GetJobByUniqueName(jobDefinition.UniqueName); var activeTriggers = storage.GetTriggersByJobId(job.Id, 1, int.MaxValue).Items.Where(t => t.IsActive).ToList(); var toDeactivateTriggers = new List <JobTriggerBase>(activeTriggers.Where(t => !(t is InstantTrigger))); if (jobDefinition.Triggers.Any()) { Logger.InfoFormat("Job '{0}' has {1} tiggers explicitly specified by definition. Going to apply the TriggerDefiniton to the actual storage provider.", existingJob.UniqueName, jobDefinition.Triggers.Count); } // Update or add new ones foreach (var trigger in jobDefinition.Triggers) { var existingOne = activeTriggers.FirstOrDefault(t => this.IsSame(t as dynamic, trigger as dynamic)); if (existingOne == null) { // Add one AddTrigger(storage, trigger, jobDefinition, job.Id); Logger.InfoFormat("Added trigger (type: '{0}' to job '{1}' (JobId: '{2}')'", trigger.GetType().Name, jobDefinition.UniqueName, trigger.Id); numberOfChanges++; } else { toDeactivateTriggers.Remove(existingOne); } } // Deactivate not specified triggers foreach (var trigger in toDeactivateTriggers) { Logger.InfoFormat("Deactivating trigger (type: '{0}' to job '{1}' (JobId: '{2}')'", trigger.GetType().Name, jobDefinition.UniqueName, trigger.Id); storage.DisableTrigger(existingJob.Id, trigger.Id); numberOfChanges++; } } } } // Deactivate non existent } return(numberOfChanges); }
public JobbrRepository(IJobStorageProvider storageProvider) { this.storageProvider = storageProvider; }