public void GetListOfModulesInJsonFile() { //Given Constants.CodeBaseRootPath = GetExecutingDirectorybyAppDomain(); AssemblyLoaderManager loader = new AssemblyLoaderManager(); //When var(modules, plugins) = loader.GetAssembliesToRegister(); //Then Assert.NotEmpty(modules); }
public virtual void Discover() { Logger.Info("Loading the assemblies..."); // Reload assemblies AssemblyLoaderManager.LoadAssemblies(JobsDirectory, cleanLoad: true); Logger.Info("Discovering the jobs..."); // discovering new jobs var discoveredJobs = AssemblyLoaderManager.GetImplementorsOf <BaseJob>(); Logger.Info($"Found {discoveredJobs.Count} job(s)"); if (discoveredJobs.Count > 0) { Logger.Debug($"Discovered jobs:{Environment.NewLine}{string.Join(Environment.NewLine, discoveredJobs.Select(job => $"- Group: {job.GetGroup()}, Name: {job.GetName()}, Schedule: {job.Schedule}"))}"); } // Currently scheduled jobs var scheduledJobs = GetAllJobs().Where(job => job.Group != "DEFAULT").ToList(); // exclude triggers which are running right now if (scheduledJobs.Any()) { Logger.Info("Revisiting scheduled jobs..."); Logger.Debug($"Currently scheduled jobs:{Environment.NewLine}{string.Join(Environment.NewLine, scheduledJobs)}"); } // Un-scheduling old jobs foreach (var scheduledJob in scheduledJobs) { if (!discoveredJobs.Any(job => job.GetType().Name.Equals(scheduledJob.Name, StringComparison.InvariantCultureIgnoreCase) && job.GetType().Namespace.Equals(scheduledJob.Group, StringComparison.InvariantCultureIgnoreCase))) { UnscheduleJob(scheduledJob.Name, scheduledJob.Group); } } // schedule new jobs if (discoveredJobs.Count > 0) { ScheduleJobs(discoveredJobs); OnJobsDiscovered(); } }
public Task Execute(IJobExecutionContext context) { return(Task.Run(() => { try { var typeFullName = context.JobDetail?.JobDataMap?.GetString("TypeFullName"); var jobType = AssemblyLoaderManager.GetType(typeFullName); if (jobType != null) { var jobObj = Container.Resolve <BaseJob>(jobType); jobObj.Execute(); } } catch (Exception ex) { throw new JobExecutionException("An unexpected error has occurred during job execution", ex, false); } })); }