Пример #1
0
        public void StopCronJob(CronJobType cronJobID, DateTime stopTime)
        {
            using (var _unitOfWork = new EfUnitOfWork())
            {
                Logger.Current.Informational("Request for stopping cronjob");
                var cronJobHistory = _unitOfWork.CronJobHistoryRepository.Find(ch => ch.CronJobID == cronJobID).OrderByDescending(ch => ch.StartTime).FirstOrDefault();
                //var cronJobHistory = _unitOfWork.CronJobHistoryRepository.Find(ch => ch.CronJobID == cronJobID).OrderByDescending(ch => ch.StartTime).Take(1).FirstOrDefault();
                var cronJob = _unitOfWork.CronJobsRepository.Single(cj => cj.CronJobID == cronJobID);
                cronJob.IsRunning          = false;
                cronJob.LastNotifyDateTime = stopTime;

                if (cronJobHistory != null)
                {
                    cronJobHistory.EndTime = DateTime.UtcNow;
                }
                else
                {
                    Logger.Current.Error("Start entry doesn't exists for jobid " + cronJobID);
                }

                _unitOfWork.CronJobsRepository.Edit(cronJob);
                _unitOfWork.CronJobHistoryRepository.Edit(cronJobHistory);
                _unitOfWork.Commit();
                Logger.Current.Informational("Cronjob stopped successfully");
            }
        }
Пример #2
0
 public void UpdateLastNotifyDateTime(CronJobType cronJobID, DateTime lastNotifyDateTime)
 {
     using (var _unitOfWork = new EfUnitOfWork())
     {
         var cronJob = _unitOfWork.CronJobsRepository.Single(cj => cj.CronJobID == cronJobID);
         cronJob.LastNotifyDateTime = lastNotifyDateTime;
         _unitOfWork.CronJobsRepository.Edit(cronJob);
         _unitOfWork.Commit();
     }
 }
Пример #3
0
        public void RegisterJob <T>(CronJobType jobType) where T : IJob
        {
            var dbJob = _jobService.GetCronJobByType(jobType);

            if (dbJob == null)
            {
                throw new InvalidOperationException($"Job with {jobType} not found in the database");
            }

            RegisterJob <T>(jobType, dbJob.Expression);
        }
Пример #4
0
        public void RegisterJob <T>(CronJobType jobType, string cronExpressinon) where T : IJob
        {
            var group   = "group" + jobType;
            var jobName = "job" + jobType;

            var trigger   = BuildTrigger(jobType, cronExpressinon);
            var jobDetail = JobBuilder.Create <T>()
                            .WithIdentity(jobName, group)
                            .UsingJobData(BaseJob.DbJobTypeKey, (int)jobType)
                            .Build();

            _scheduler.ScheduleJob(jobDetail, trigger);
        }
Пример #5
0
        private ITrigger BuildTrigger(CronJobType jobType, string cronExpressinon)
        {
            if (String.IsNullOrEmpty(cronExpressinon))
            {
                throw new ArgumentException("cronExpressinon is not defined");
            }

            var trigger = TriggerBuilder.Create()
                          .WithIdentity("trigger", jobType.ToString())
                          .WithCronSchedule(cronExpressinon)
                          .Build();

            return(trigger);
        }
Пример #6
0
        public void StartJob(CronJobType cronJobID, DateTime lastRunTime)
        {
            using (var _unitOfWork = new EfUnitOfWork())
            {
                var cronJob = _unitOfWork.CronJobsRepository.Single(cj => cj.CronJobID == cronJobID);
                cronJob.LastRunOn          = lastRunTime;
                cronJob.IsRunning          = true;
                cronJob.LastNotifyDateTime = lastRunTime;
                _unitOfWork.CronJobsRepository.Edit(cronJob);

                var cronJobHistory = new CronJobHistoryDb
                {
                    CronJobID = cronJobID,
                    StartTime = DateTime.UtcNow,
                };
                _unitOfWork.CronJobHistoryRepository.Add(cronJobHistory);
                _unitOfWork.Commit();
            }
        }
Пример #7
0
        public void RegisterJob(CronJobType jobType, Type job, string jobGroup)
        {
            var dbJob = _jobService.GetCronJobByType(jobType);

            if (dbJob == null)
            {
                throw new InvalidOperationException($"Job with {jobType} not found in the database");
            }

            var group   = "group" + jobGroup;
            var jobName = "job" + jobType;

            var trigger   = BuildTrigger(jobType, dbJob.Expression);
            var jobDetail = JobBuilder.Create(job)
                            .WithIdentity(jobName, group)
                            .UsingJobData(BaseJob.DbJobTypeKey, (int)jobType)
                            .Build();

            _scheduler.ScheduleJob(jobDetail, trigger);
        }
Пример #8
0
        public List <QuartzJob> GetByType(CronJobType type)
        {
            DataContext dc = new DataContext(this.DbString);

            return(dc.Context.GetTable <QuartzJob>().Where(s => s.jobType.Equals((int)type)).ToList());
        }
Пример #9
0
 public CronJobDb GetCronJobByType(CronJobType cronJobID)
 {
     return(unitOfWork.CronJobsRepository.SingleOrDefault(x => x.CronJobID == cronJobID));
 }