public override void RestoreHistory(Job job) {
            var history = _jobHistoryRepository.Where(h => h.Name == job.Name).OrderByDescending(j => j.StartTime).FirstOrDefault();
            if (history == null)
                return;

            job.LastResult = history.Result;
            job.LastRunStartTime = history.StartTime;
            job.LastRunFinishTime = history.FinishTime;
            job.LastStatus = (JobStatus)history.Status;
        }
        public override void SaveHistory(Job job) {
            var history = new JobHistory {
                Name = job.Name,
                StartTime = job.LastRunStartTime,
                FinishTime = job.LastRunFinishTime,
                Status = (int)job.LastStatus,
                Result = job.LastResult
            };

            _jobHistoryRepository.Add(history);
        }
예제 #3
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 Job(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);
            }

        }
예제 #4
0
 /// <summary>
 /// Saves the history to the provider.
 /// </summary>
 /// <param name="job">The job to save the history on.</param>
 public abstract void SaveHistory(Job job);
예제 #5
0
 /// <summary>
 /// Restores the latest job history from the provider.
 /// </summary>
 /// <param name="job">The job to restore the history to.</param>
 public abstract void RestoreHistory(Job job);