示例#1
0
        public JobCollection GetJobsByGroup(string group)
        {
            var jobs = new JobCollection();

            lock (_initLock) {
                foreach (var job in _jobs)
                {
                    if (job.Group == group)
                    {
                        jobs.Add(job);
                    }
                }
            }

            return(jobs);
        }
示例#2
0
        private void AddJobs(IEnumerable <IJobConfiguration> jobs, JobProvider provider)
        {
            if (jobs == null)
            {
                return;
            }

            foreach (var jobConfiguration in jobs)
            {
                Type jobType = Type.GetType(jobConfiguration.Type, false, true);
                if (jobType == null)
                {
                    throw new ConfigurationErrorsException(
                              String.Format("Could not load type '{0}' for job '{1}'.",
                                            jobConfiguration.Type, jobConfiguration.Name));
                }

                JobLockProvider jobLockProvider = _defaultJobLockProvider;

                if (!String.IsNullOrEmpty(jobConfiguration.JobLockProvider))
                {
                    // first try getting from provider collection
                    jobLockProvider = _jobLockProviders[jobConfiguration.JobLockProvider];
                    if (jobLockProvider == null)
                    {
                        // next, try loading type
                        Type lockType = Type.GetType(jobConfiguration.JobLockProvider, false, true);
                        if (lockType == null)
                        {
                            throw new ConfigurationErrorsException(
                                      String.Format("Could not load job lock type '{0}' for job '{1}'.",
                                                    jobConfiguration.JobLockProvider, jobConfiguration.Name));
                        }

                        jobLockProvider = _dependencyResolver.GetService <JobLockProvider>();
                    }

                    // if not found in provider collection or couldn't create type.
                    if (jobLockProvider == null)
                    {
                        throw new ConfigurationErrorsException(
                                  String.Format("Could not find job lock provider '{0}' for job '{1}'.", jobConfiguration.JobLockProvider, jobConfiguration.Name));
                    }
                }

                JobHistoryProvider jobHistoryProvider = null;
                if (!String.IsNullOrEmpty(jobConfiguration.JobHistoryProvider))
                {
                    Type historyType = Type.GetType(jobConfiguration.JobHistoryProvider, false, true);
                    if (historyType == null)
                    {
                        throw new ConfigurationErrorsException(
                                  String.Format("Could not load job history type '{0}' for job '{1}'.", jobConfiguration.JobHistoryProvider, jobConfiguration.Name));
                    }

                    jobHistoryProvider = _dependencyResolver.GetService <JobHistoryProvider>();
                }

                var j = new JobRunner(jobConfiguration, jobType, jobLockProvider, jobHistoryProvider, _dependencyResolver);
                _jobs.Add(j);

                // keep track of jobs for providers so they can be sync'd later
                if (provider == null)
                {
                    continue;
                }

                JobCollection providerJobs;
                if (!_providerJobs.TryGetValue(provider, out providerJobs))
                {
                    providerJobs = new JobCollection();
                    _providerJobs.Add(provider, providerJobs);
                }
                providerJobs.Add(j);
            }
        }