コード例 #1
0
 public async Task StartAsync()
 {
     _scheduler = await new StdSchedulerFactory().GetScheduler();
     await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) =>
     {
         IJobConfigRepository jobConfigRepository             = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork);
         IHolidayCalendarRepository holidayCalendarRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IHolidayCalendarRepository>(unitOfWork);
         var activeJobConfigs = await jobConfigRepository.GetActiveJobConfigs();
         List <HolidayCalendar> holidayCalendars = new List <HolidayCalendar>();
         if (activeJobConfigs.Any(r => r.HolidayCalendarId.HasValue))
         {
             holidayCalendars = (await holidayCalendarRepository.GetAllAsync()).ToList();
             Quartz.Impl.Calendar.HolidayCalendar calendar = new Quartz.Impl.Calendar.HolidayCalendar();
             foreach (var holidayCalendar in holidayCalendars)
             {
                 if (activeJobConfigs.Any(r => r.HolidayCalendarId == holidayCalendar.Id))
                 {
                     await AddCalendar(holidayCalendar);
                 }
             }
         }
         foreach (var activeJobConfig in activeJobConfigs)
         {
             IJobDetail job   = CreateJobDetail(activeJobConfig);
             ITrigger trigger = CreateJobTriggerAsync(activeJobConfig, holidayCalendars);
             await _scheduler.ScheduleJob(job, trigger);
         }
         _scheduler.ListenerManager.AddJobListener(QuartzJobListener, GroupMatcher <JobKey> .AnyGroup());
         await _scheduler.Start();
     });
 }
コード例 #2
0
 public async Task <List <JobConfig> > GetAllJobConfigs()
 {
     return(await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) =>
     {
         IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork);
         var results = await jobConfigRepository.GetAllAsync();
         return results.ToList();
     }));
 }
コード例 #3
0
        public async Task DeleteJob(Guid id)
        {
            await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) =>
            {
                IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork);
                var dbJobConfig = await jobConfigRepository.GetAsync(id);
                await jobConfigRepository.DeleteAsync(dbJobConfig);
                await _jobManager.UnScheduleJob(dbJobConfig);
            });

            Logger.LogInformation($"DeleteJob:{id}");
        }
コード例 #4
0
        public async Task ResumeJob(Guid id)
        {
            var jobConfig = await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) =>
            {
                IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork);
                var result = await jobConfigRepository.GetAsync(id);
                return(result);
            });

            await _jobManager.ResumeJob(jobConfig);

            Logger.LogInformation($"ResumeJob:{id}");
        }
コード例 #5
0
        public async Task AddJob(JobConfig jobConfig)
        {
            jobConfig.Id = Guid.NewGuid();
            await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) =>
            {
                IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork);
                await jobConfigRepository.InsertAsync(jobConfig);
                if (jobConfig.IsActive)
                {
                    await _jobManager.ScheduleJob(jobConfig);
                }
            });

            Logger.LogInformation($"AddJob:{JsonConvert.SerializeObject(jobConfig)}");
        }
コード例 #6
0
        public async Task UpdateJob(JobConfig jobConfig)
        {
            await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) =>
            {
                IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork);
                var dbJobConfig = await jobConfigRepository.GetAsync(jobConfig.Id);
                if (dbJobConfig == null)
                {
                    throw new SpriteException("未找到Job配置信息");
                }
                await _jobManager.UnScheduleJob(dbJobConfig);
                await jobConfigRepository.UpdateAsync(jobConfig);
                await _jobManager.ScheduleJob(jobConfig);
            });

            Logger.LogInformation($"UpdateJob:{JsonConvert.SerializeObject(jobConfig)}");
        }
コード例 #7
0
        public async Task ActiveJob(Guid id, bool isActive)
        {
            await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) =>
            {
                IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork);
                var dbJobConfig = await jobConfigRepository.GetAsync(id);
                if (dbJobConfig.IsActive == isActive)
                {
                    throw new SpriteException($"job已经处于{(isActive ? "激活" : "未激活")}状态");
                }
                dbJobConfig.IsActive = isActive;
                await jobConfigRepository.UpdateAsync(dbJobConfig);
                if (isActive)
                {
                    await _jobManager.ScheduleJob(dbJobConfig);
                }
                else
                {
                    await _jobManager.UnScheduleJob(dbJobConfig);
                }
            });

            Logger.LogInformation($"ActiveJob:{id},{isActive}");
        }
コード例 #8
0
        public async Task UpdateHolidayCalendar(HolidayCalendar holidayCalendar)
        {
            await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) =>
            {
                IHolidayCalendarRepository holidayCalendarRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IHolidayCalendarRepository>(unitOfWork);
                IJobConfigRepository jobConfigRepository             = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork);
                var dbHolidayCalendar = await holidayCalendarRepository.GetAsync(holidayCalendar.Id);
                if (dbHolidayCalendar == null)
                {
                    throw new SpriteException("未找到假期信息");
                }
                await holidayCalendarRepository.UpdateAsync(holidayCalendar);
                var activeJobConfigs = await jobConfigRepository.GetActiveJobConfigs();
                foreach (var activeJobConfig in activeJobConfigs)
                {
                    if (activeJobConfig.HolidayCalendarId.HasValue && activeJobConfig.HolidayCalendarId.Value == holidayCalendar.Id)
                    {
                        await _jobManager.UnScheduleJob(activeJobConfig);
                    }
                }

                await _jobManager.DeleteCalendar(holidayCalendar.Id);

                await _jobManager.AddCalendar(holidayCalendar);

                foreach (var activeJobConfig in activeJobConfigs)
                {
                    if (activeJobConfig.HolidayCalendarId.HasValue && activeJobConfig.HolidayCalendarId.Value == holidayCalendar.Id)
                    {
                        await _jobManager.ScheduleJob(activeJobConfig);
                    }
                }
            });

            Logger.LogInformation($"UpdateHolidayCalendar:{JsonConvert.SerializeObject(holidayCalendar)}");
        }