private void StartAutomation() { var configurationPath = Path.Combine(this.Environment.ContentRootPath, "configuration.json"); if (!File.Exists(configurationPath)) { Log.Error($"Cannot find the configuration file {configurationPath} to register jobs."); return; } var configuration = AutomationConfiguration.Read(configurationPath); foreach (var job in configuration.Jobs.Where(job => job.RunAtStartup)) { BackgroundJob.Enqueue <AutomationRunner>(automation => automation.RunAtStartup(configuration, job)); } foreach (var job in configuration.Jobs) { RecurringJob.RemoveIfExists(job.Id); } foreach (var job in configuration.Jobs.Where(job => !string.IsNullOrWhiteSpace(job.CronSchedule))) { RecurringJob.AddOrUpdate <AutomationRunner>(job.Id, automation => automation.RunRecurring(configuration, job), job.CronSchedule, TimeZoneInfo.Utc); } }
/// <summary> /// Start the program. /// </summary> /// <param name="args">Arguments of the console.</param> private static void Main(string[] args) { var log4netConfig = new XmlDocument(); log4netConfig.Load(File.OpenRead("log4net.config")); var repo = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(Hierarchy)); XmlConfigurator.Configure(repo, log4netConfig["log4net"]); Log.Info("START CONSOLE"); var path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "configuration.json"); var configuration = AutomationConfiguration.Read(path); foreach (var job in configuration.Jobs.Where(job => job.RunAtStartup)) { new JobRunner().RunAtStartup(configuration, job); } Log.Info("STOP CONSOLE"); }