public virtual void Run()
        {
            ILog log = LogManager.GetLogger(typeof(RemoteClientExample));

            NameValueCollection properties = new NameValueCollection();

            properties["quartz.scheduler.instanceName"] = "RemoteClient";

            // set thread pool info
            properties["quartz.threadPool.type"]           = "Quartz.Simpl.SimpleThreadPool, Quartz";
            properties["quartz.threadPool.threadCount"]    = "5";
            properties["quartz.threadPool.threadPriority"] = "Normal";

            // set remoting expoter
            properties["quartz.scheduler.proxy"]         = "true";
            properties["quartz.scheduler.proxy.address"] = "tcp://localhost:555/QuartzScheduler";

            // First we must get a reference to a scheduler
            ISchedulerFactory sf    = new StdSchedulerFactory(properties);
            IScheduler        sched = sf.GetScheduler();

            // define the job and ask it to run
            JobDetail  job = new JobDetail("remotelyAddedJob", "default", typeof(SimpleJob));
            JobDataMap map = new JobDataMap();

            map.Put("msg", "Your remotely added job has executed!");
            job.JobDataMap = map;
            CronTrigger trigger = new CronTrigger("remotelyAddedTrigger", "default", "remotelyAddedJob", "default", DateTime.UtcNow, null, "/5 * * ? * *");

            // schedule the job
            sched.ScheduleJob(job, trigger);

            log.Info("Remote job scheduled.");
        }
Exemple #2
0
        protected override void OnStart(string[] args)
        {
            try
            {
                //0 0 12 * * ?	 每天12点触发
                //0 15 10 ? * *	 每天10点15分触发
                //0 15 10 * * ?	 每天10点15分触发
                //0 15 10 * * ? *	 每天10点15分触发
                //0 15 10 * * ? 2005	 2005年每天10点15分触发
                //0 * 14 * * ?	 每天下午的 2点到2点59分每分触发
                //0 0/5 14 * * ?	 每天下午的 2点到2点59分(整点开始,每隔5分触发)
                //0 0/5 14,18 * * ?	 每天下午的 2点到2点59分(整点开始,每隔5分触发)
                //每天下午的 18点到18点59分(整点开始,每隔5分触发)
                //0 0-5 14 * * ?	 每天下午的 2点到2点05分每分触发
                //0 10,44 14 ? 3 WED	 3月分每周三下午的 2点10分和2点44分触发
                //0 15 10 ? * MON-FRI	 从周一到周五每天上午的10点15分触发
                //0 15 10 15 * ?	 每月15号上午10点15分触发
                //0 15 10 L * ?	 每月最后一天的10点15分触发
                //0 15 10 ? * 6L	 每月最后一周的星期五的10点15分触发
                //0 15 10 ? * 6L 2002-2005	 从2002年到2005年每月最后一周的星期五的10点15分触发
                //0 15 10 ? * 6#3	 每月的第三周的星期五开始触发
                //0 0 12 1/5 * ?	 每月的第一个中午开始每隔5天触发一次
                //0 11 11 11 11 ?	 每年的11月11号 11点11分触发(光棍节)

                //发邮件工作任务
                JobDetail m_TimingMailJobDetail1 = new JobDetail("打印测试文件", Guid.NewGuid().ToString("N"), typeof(RegularMailJob.RegularMail_T2));
                JobDetail m_TimingMailJobDetail2 = new JobDetail("打印测试文件", Guid.NewGuid().ToString("N"), typeof(RegularMailJob.RegularMail_T2));
                JobDetail m_TimingMailJobDetail3 = new JobDetail("打印测试文件", Guid.NewGuid().ToString("N"), typeof(RegularMailJob.RegularMail_T2));
                //Trigger m_TimingMailTrigger = new SimpleTrigger(Guid.NewGuid().ToString("N"), Guid.NewGuid().ToString("N"), m_TimingMailJobDetail.Name, m_TimingMailJobDetail.Group, DateTime.UtcNow, null, 0, TimeSpan.FromDays(7));

                //CronTrigger trigger = new CronTrigger("打印", "group1", "0/30 * * * * ?");


                //从周一到周五每天上午的10点15分触发
                CronTrigger trigger1 = new CronTrigger("打印1", "group1", "0 20 15 ? * MON-FRI");

                CronTrigger trigger2 = new CronTrigger("打印2", "group2", "0 25 15 ? * MON-FRI");

                CronTrigger trigger3 = new CronTrigger("打印3", "group3", "0 15 15 ? * MON-FRI");


                SchedulerManager.GetScheduler().ScheduleJob(m_TimingMailJobDetail1, trigger1);
                log.Info("任务:" + m_TimingMailJobDetail1.FullName + " 已经调度成功!");
                SchedulerManager.GetScheduler().ScheduleJob(m_TimingMailJobDetail2, trigger2);
                log.Info("任务:" + m_TimingMailJobDetail2.FullName + " 已经调度成功!");
                SchedulerManager.GetScheduler().ScheduleJob(m_TimingMailJobDetail3, trigger3);
                log.Info("任务:" + m_TimingMailJobDetail3.FullName + " 已经调度成功!");



                SchedulerManager.GetScheduler().Start();

                log.Info("service started ok");
            }
            catch (Exception ex)
            {
                log.Error("service started fail", ex);
                this.Stop();
            }
        }
Exemple #3
0
        private void InitializeScheduler()
        {
            try
            {
                if (scheduler != null)
                {
                    return;
                }

                Logger.Log.Debug("Initializing Collector scheduler...");
                schedulerFactory = new StdSchedulerFactory();
                scheduler        = schedulerFactory.GetScheduler();

                // BatDongSanJob
                jobDetail = new JobDetail("BatDongSanJob", null, typeof(BatDongSanJob));
                string cronEx = CollectorConfiguration.BatDongSan.BatDongSanCronTriggerExpression;
                cronTrigger = new CronTrigger(
                    "BatDongSanTrigger",
                    null,
                    cronEx
                    );
                cronTrigger.StartTimeUtc = DateTime.UtcNow;
                scheduler.ScheduleJob(jobDetail, cronTrigger);


                Logger.Log.Debug("Initialize Collector scheduler completely.");
            }
            catch (Exception ex)
            {
                Logger.Log.Error(ex);
            }
        }
Exemple #4
0
        public static Trigger Build(JobTrigger jobTrigger)
        {
            switch (jobTrigger.Type)
            {
            case TriggerType.Cron:
                CronTrigger trigger = new CronTrigger();
                trigger.CronExpressionString = TrimDelimiter(jobTrigger.Value);
                return(trigger);

            case TriggerType.Monthly:
                var monthTime = BuildTime(jobTrigger.Value);
                return(TriggerUtils.MakeMonthlyTrigger(monthTime.DayOfMonth, monthTime.Hour, monthTime.Minute));

            case TriggerType.Daily:
                var dailyTime = BuildTime(jobTrigger.Value);
                return(TriggerUtils.MakeDailyTrigger(dailyTime.Hour, dailyTime.Minute));

            case TriggerType.Hourly:
                var hourTime = BuildTime(jobTrigger.Value);
                return(TriggerUtils.MakeHourlyTrigger(hourTime.Interval));

            case TriggerType.Minutely:
                var minuteTime = BuildTime(jobTrigger.Value);
                return(TriggerUtils.MakeMinutelyTrigger(minuteTime.Interval));

            case TriggerType.Secondly:
                var secondTime = BuildTime(jobTrigger.Value);
                return(TriggerUtils.MakeSecondlyTrigger(secondTime.Interval));

            default:
                return(null);
            }
        }
        public void TestAddTriggerTimeZoneForCronTriggerNotNull()
        {
            CronTrigger ct = new CronTrigger("foo", "bar");

            bundle.AddTrigger(ct);
            Assert.IsNotNull(ct.TimeZone);
        }
        public void ShouldSetLocalTimezoneOnCronTriggerWhenCalledScheduleTrigger()
        {
            // Arrange
            var myTrigger = new CronTrigger
            {
                Name           = "TestTrigger",
                Group          = "TestGroup",
                JobName        = "TestJobName",
                JobGroup       = "TestJobGroup",
                CronExpression = "0/30 * * * * ?"
            };
            IJobDetail noOpJob = new JobDetailImpl("TestJobName", "TestJobGroup", typeof(NoOpJob));

            _mockScheduler.Setup(x => x.GetJobDetail(It.IsAny <JobKey>())).Returns(noOpJob);
            _mockScheduler.Setup(x => x.CheckExists(It.IsAny <JobKey>())).Returns(true);

            ISchedulerCore schedulerCore = new SchedulerCore(_mockScheduler.Object, _mockPersistanceStore.Object);

            // Act
            schedulerCore.ScheduleTrigger(myTrigger);

            // Assert
            _mockScheduler.Verify(x => x.ScheduleJob(
                                      It.Is <ICronTrigger>(t => (Equals(t.TimeZone, TimeZoneInfo.Local)))), Times.Once);
        }
Exemple #7
0
        public void TestTriggerFireExclusion()
        {
            sched.Start();
            TestJob.JobHasFired = false;
            JobDetail      myDesc   = new JobDetail("name", "group", typeof(TestJob));
            Trigger        trigger  = new CronTrigger("trigName", "trigGroup", "0/15 * * * * ?");
            AnnualCalendar calendar = new AnnualCalendar();

            calendar.SetDayExcluded(DateTime.Now, true);
            sched.AddCalendar("calendar", calendar, true, true);
            trigger.CalendarName = "calendar";
            sched.ScheduleJob(myDesc, trigger);
            Trigger triggerreplace = new CronTrigger("foo", "trigGroup", "name", "group", "0/15 * * * * ?");

            triggerreplace.CalendarName = "calendar";
            sched.RescheduleJob("trigName", "trigGroup", triggerreplace);
            Thread.Sleep(1000 * 20);
            Assert.IsFalse(TestJob.JobHasFired, "task must not be neglected - it is forbidden by the calendar");

            calendar.SetDayExcluded(DateTime.Now, false);
            sched.AddCalendar("calendar", calendar, true, true);
            Thread.Sleep(1000 * 20);
            Assert.IsTrue(TestJob.JobHasFired, "task must be neglected - it is permitted by the calendar");

            sched.DeleteJob("name", "group");
            sched.DeleteCalendar("calendar");

            sched.Shutdown();
        }
Exemple #8
0
    static testmethod void schedulerTest()
    {
        String CRON_EXP = '0 0 23 ? * *';

        Test.startTest();
        String      jobId = System.schedule('SubContactUpdBatchScheduleTest', CRON_EXP, new SubscriptionContactUpdateBatchSchedule());
        CronTrigger ct    = [SELECT Id, CronExpression, TimesTriggered, NextFireTime FROM CronTrigger WHERE id = : jobId];
Exemple #9
0
        /// <summary>
        /// 启动运行计划
        /// </summary>
        public virtual void Run()
        {
            try
            {
                ISchedulerFactory sf = new StdSchedulerFactory();
                this._Scheduler = sf.GetScheduler();

                //..
                string strCronExpressionString = "";//Cron表达式

                JobDetail   job     = new JobDetail("job1", "group1", typeof(AuthTestingQuartzJob));
                CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1", "group1");
                trigger.CronExpressionString = strCronExpressionString; //"0/20 * * * * ?";
                this._Scheduler.AddJob(job, true);
                DateTime ft = this._Scheduler.ScheduleJob(trigger);

                ////启动计划
                this._Scheduler.Start();
            }
            catch (Exception)
            {
                //停止计划
                this._Scheduler.Shutdown(true);
            }
        }
Exemple #10
0
        public void StartQuartz()
        {
            try
            {
                LogHelper.WriteInfo(typeof(QuartzManaer), "QuartzManaer执行");


                IScheduler        sched;
                ISchedulerFactory sf = new StdSchedulerFactory();
                sched = sf.GetScheduler();

                JobDetail jobEveryDayEpJob      = new JobDetail("job1", "group1", typeof(EveryDayEpJob)); //IndexJob为实现了IJob接口的类
                DateTime  tsEveryDayEpJob       = TriggerUtils.GetNextGivenSecondDate(null, 0);           //7天以后第一次运行
                Trigger   triggertEveryDayEpJob = new CronTrigger("jobUpdateLoginStatus", "group1", "job1", "group1", tsEveryDayEpJob, null,
                                                                  cronTriggerLambda);                     //每天23点执行时间,"秒 分 时 天 月 年"



                sched.AddJob(jobEveryDayEpJob, true);
                sched.ScheduleJob(triggertEveryDayEpJob);
                sched.Start();
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(typeof(QuartzManaer), "QuartzManaer异常", Engineer.ccc, null, ex);
            }
        }
Exemple #11
0
        public Form1()
        {
            InitializeComponent();
            // Instantiate the Quartz.NET scheduler
            StdSchedulerFactory schedulerFactory = new StdSchedulerFactory();
            IScheduler          scheduler        = schedulerFactory.GetScheduler();

            // Instantiate the JobDetail object passing in the type of your
            // custom job class. Your class merely needs to implement a simple
            // interface with a single method called "Execute".
            JobDetail job = new JobDetail("job1", "group1", typeof(MyJobClass));

            DateTime    now     = DateTime.Now.AddMinutes(1);
            DateTime    dt      = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0);
            CronTrigger trigger = new CronTrigger("trigger 1", "group1", "job1", "group1", "5 * * * * ?");

            //CronTrigger ct = new CronTrigger( "trigger 1", "group1", "job1", "group1", "5 * * * * ?" );
            //SimpleTrigger trigger = new SimpleTrigger( "trigger 1", new DateTime( dt.ToFileTimeUtc() ), null, SimpleTrigger.RepeatIndefinitely, new TimeSpan( 0, 0, 0, 15 ) );
            //trigger.JobName = "job1";
            //trigger.Group = "group1";
            //trigger.JobGroup = "group1";
            // Instantiate a trigger using the basic cron syntax.
            // This tells it to run at 1AM every Monday - Friday.
            // Add the job to the scheduler
            scheduler.AddJob(job, true);
            scheduler.ScheduleJob(trigger);
            scheduler.Start();
        }
        private static void SetTrigger(DateTime triggerTime, Types.TradingTimeType timeType, string id)
        {
            DateTime now  = DateTime.Now;
            DateTime time = new DateTime(now.Year, now.Month, now.Day, triggerTime.Hour, triggerTime.Minute,
                                         triggerTime.Second);

            string expFormat = "{0} {1} {2} ? * *";
            string exp       = String.Format(expFormat, time.Second, time.Minute, time.Hour);

            ScheduleEventArgs args = new ScheduleEventArgs
            {
                //BourseTypeID = bourseType.BourseTypeID,
                TimeType = timeType,
                Time     = time
            };

            string newTriggerName = id + "trigger";
            string newGroupName   = id + "Group";

            CronTrigger trigger = new CronTrigger(newTriggerName, newGroupName, exp);

            trigger.JobDataMap.SetScheduleEventArgs(args);

            string    newJobName = id + "job";
            JobDetail job        = new JobDetail(newJobName, null, typeof(ScheduleJob));

            scheduler.ScheduleJob(job, trigger);

            string format = "ScheduleManager.SetTrigger[JobName={0},TiggerName={1},GroupName={2}]";
            string desc   = string.Format(format, newJobName, newTriggerName, newGroupName);

            //LogHelper.WriteDebug(desc + " Args=" + args);
            LogHelper.WriteDebug("ScheduleManager.SetTrigger" + args);
        }
Exemple #13
0
 private void LoadSchedules(LogStatuses status)
 {
     Logger.Log("Loading schedules", status);
     if (!running)
     {
         Logger.Log("Loading schedules aborted. Service is not started.", status);
         return;
     }
     try {
         StdSchedulerFactory schedulerFactory = new StdSchedulerFactory();
         scheduler = schedulerFactory.GetScheduler();
         List <BackupScheduleWrapper> jobs = Configuration.GetSchedules();
         foreach (BackupScheduleWrapper bj in jobs)
         {
             JobDetail job = new JobDetail(bj.ID.ToString(), "group1", typeof(MyJobClass));
             try {
                 CronTrigger trigger = new CronTrigger("trigger {0}".FillBlanks(bj.ID), "group1", bj.ID.ToString(), "group1", bj.CronConfig);
                 scheduler.AddJob(job, true);
                 scheduler.ScheduleJob(trigger);
                 Logger.Log(string.Format("Job {0} ({1}) added to schedule", bj.ID, bj.Name), LogStatuses.Message);
             } catch (Exception ex) {
                 Logger.Log(string.Format("Error adding job {0} ({1}) to schedule: {2}", bj.ID, bj.Name, ex.Message), LogStatuses.Error);
             }
         }
         scheduler.Start();
     } catch (Exception oEx) {
         Logger.Log(string.Format("Error scheduling jobs: {0}", oEx.Message), LogStatuses.Error);
     }
 }
Exemple #14
0
        private void ScheduleCronJob()
        {
            foreach (ISchedulerConfig schedulerConfig in config.Scheduler)
            {
                string jobName = schedulerConfig.TaskId;
                if (string.IsNullOrEmpty(jobName))
                {
                    Log.Warn("No task to run. Skipping.");
                }

                var task = config.Tasks.SingleOrDefault(t => t.TaskId == jobName);

                if (task == null)
                {
                    Log.ErrorFormat("Task '{0}' does not exists. Skipping.", jobName);
                    continue;
                }

                Type   jobType        = task.TaskType;
                string jobGroup       = jobName + "Group";
                string cronExpression = schedulerConfig.CronExpression;

                var trigger = new CronTrigger(jobName, jobGroup, cronExpression)
                {
                    StartTimeUtc       = DateTime.UtcNow,
                    MisfireInstruction = MisfireInstruction.CronTrigger.DoNothing
                };

                var job = new JobDetail(jobName, jobType);
                scheduler.ScheduleJob(job, trigger);

                Log.InfoFormat("{0} scheduled with cron expression {1}", jobName, cronExpression);
            }
        }
Exemple #15
0
        public static Trigger Create(NodeTaskRuntimeInfo nodetask)
        {
            CronTrigger triger = new CronTrigger(nodetask.TaskModel.Id.ToString(), nodetask.TaskModel.CategoryId.ToString());

            triger.CronExpressionString = nodetask.TaskModel.TaskCron;
            return(triger);
        }
Exemple #16
0
        public QueryResponse Post([FromBody] CronTrigger model)
        {
            Logger.DebugFormat("Entered TriggersController.Post(). Name = {0}", model.Name);

            var response = new QueryResponse {
                Valid = true
            };

            try
            {
                _schedulerCore.ScheduleTrigger(model);
            }
            catch (Exception ex)
            {
                string type = "Server";

                if (ex is FormatException)
                {
                    type = "Sender";
                }

                response.Valid  = false;
                response.Errors = new List <Error>
                {
                    new Error
                    {
                        Code    = "ErrorSchedulingTrigger",
                        Type    = type,
                        Message = string.Format("Error scheduling CronTrigger {0}", ex.Message)
                    }
                };
            }

            return(response);
        }
        /// <summary>
        /// 按每天
        /// </summary>
        /// <returns></returns>
        private Trigger GetTriggerEveryDay()
        {
            //TODO:检验规则是否合法

            Trigger trigger = new CronTrigger();

            double dblStartNDay = Convert.ToDouble(nDay.Value);

            if (cbEndDatetime.Checked)
            {
                if (rbtEveryDay.Checked)
                {
                    string cronExpression = string.Format("{0} {1} {2} ? * *", GetTrigSecond(), GetTrigMinute(), GetTrigHour());
                    trigger = new CronTrigger(txtTriggerName.Text, txtTriggerGroup.Text, JobName, JobGroupName, GetStartDateTime(), GetEndDateTime(), cronExpression);
                }
                if (rbtEveryWeekDay.Checked)
                {
                    string cronExpression = string.Format("{0} {1} {2} ? * {3}", GetTrigSecond(), GetTrigMinute(), GetTrigHour(), "MON-FRI");
                    trigger = new CronTrigger(txtTriggerName.Text, txtTriggerGroup.Text, JobName, JobGroupName, GetStartDateTime(), GetEndDateTime(), cronExpression);
                }
                if (rbtEveryWeekend.Checked)
                {
                    string cronExpression = string.Format("{0} {1} {2} ? * {3}", GetTrigSecond(), GetTrigMinute(), GetTrigHour(), "SAT-SUN");
                    trigger = new CronTrigger(txtTriggerName.Text, txtTriggerGroup.Text, JobName, JobGroupName, GetStartDateTime(), GetEndDateTime(), cronExpression);
                }
                if (rbtEveryNDay.Checked)
                {
                    //string cronExpression = string.Format("{0} {1} {2} {3} * ?", GetTrigHour(), GetTrigMinute(), GetTrigSecond(), strStartNDay);
                    //trigger = new CronTrigger(txtTriggerName.Text, txtTriggerGroup.Text, JobName, JobGroupName, GetStartDateTime(), GetEndDateTime(), cronExpression);
                    //SimpleTrigger
                    trigger = new SimpleTrigger(txtTriggerName.Text, txtTriggerGroup.Text, JobName, JobGroupName, GetStartDateTime(), GetEndDateTime(), 0, TimeSpan.FromDays(dblStartNDay));
                }
                return(trigger);
            }
            else
            {
                if (rbtEveryDay.Checked)
                {
                    string cronExpression = string.Format("{0} {1} {2} ? * *", GetTrigSecond(), GetTrigMinute(), GetTrigHour());
                    trigger = new CronTrigger(txtTriggerName.Text, txtTriggerGroup.Text, JobName, JobGroupName, GetStartDateTime(), null, cronExpression);
                }
                if (rbtEveryWeekDay.Checked)
                {
                    string cronExpression = string.Format("{0} {1} {2} ? * {3}", GetTrigSecond(), GetTrigMinute(), GetTrigHour(), "MON-FRI");
                    trigger = new CronTrigger(txtTriggerName.Text, txtTriggerGroup.Text, JobName, JobGroupName, GetStartDateTime(), null, cronExpression);
                }
                if (rbtEveryWeekend.Checked)
                {
                    string cronExpression = string.Format("{0} {1} {2} ? * {3}", GetTrigSecond(), GetTrigMinute(), GetTrigHour(), "SAT-SUN");
                    trigger = new CronTrigger(txtTriggerName.Text, txtTriggerGroup.Text, JobName, JobGroupName, GetStartDateTime(), null, cronExpression);
                }
                if (rbtEveryNDay.Checked)
                {
                    trigger = new SimpleTrigger(txtTriggerName.Text, txtTriggerGroup.Text, JobName, JobGroupName, GetStartDateTime(), null, 0, TimeSpan.FromDays(dblStartNDay));
                }
                return(trigger);
            }
        }
        public void NameReturnsSetName()
        {
            var name    = "testName";
            var trigger = new CronTrigger {
                Name = name
            };

            Assert.AreEqual(name, trigger.Name);
        }
        public void create_cronTrigger()
        {
            var trigger = new CronTrigger
            {
                Sensors        = _ports,
                CronExpression = "* * * 8"
            };

            DbCtx.Triggers.Add(trigger);
            DbCtx.SaveChanges();
        }
        public QuartzService()
        {
            string      cronExpression = ConfigurationSettings.AppSettings["CronExpression"];
            CronTrigger cronTrigger    = new CronTrigger(CRON_TRIGGER_NAME, null, cronExpression);
            JobDetail   jobDetail      = new JobDetail(JOB_DETAIL_NAME, null, typeof(EventLogJob));

            ISchedulerFactory schedulerFactory = new StdSchedulerFactory();

            scheduler = schedulerFactory.GetScheduler();
            scheduler.ScheduleJob(jobDetail, cronTrigger);
        }
Exemple #21
0
        public static void ScheduleHeartbeatJob(string projectId)
        {
            string    jobName = "Heartbeat_" + projectId;
            JobDetail job     = new JobDetail(jobName, jobName, typeof(HeartbeatJob));

            job.JobDataMap["projectId"] = projectId;

            CronTrigger trigger = new CronTrigger(jobName, jobName, jobName, jobName, FIVE_MINUTE_PATTERN);

            engine.AddJob(job, true);
            DateTime ft = engine.ScheduleJob(trigger);
        }
        public void BasicCronTriggerTest()
        {
            CronTrigger trigger = new CronTrigger();

            trigger.Name  = "Quartz-Sample";
            trigger.Group = SchedulerConstants.DefaultGroup;
            trigger.CronExpressionString = "0 0 12 1 1 ? 2099";
            trigger.StartTimeUtc         = new DateTime(2099, 1, 1, 12, 0, 1);
            trigger.EndTimeUtc           = new DateTime(2099, 1, 1, 12, 0, 1);

            Assert.IsNull(trigger.ComputeFirstFireTimeUtc(null));
        }
Exemple #23
0
        public static void ScheduleSqlJob(string projectId)
        {
            string    jobName = "Report_" + projectId;
            JobDetail job     = new JobDetail(jobName, jobName, typeof(SqlJob));

            job.JobDataMap["projectId"] = projectId;
            job.JobDataMap["lastTime"]  = Monitor.Common.ScheduleSetting.GetLastTime(projectId);

            CronTrigger trigger = new CronTrigger(jobName, jobName, jobName, jobName, Monitor.Common.SystemInternalSetting.Frequence);

            engine.AddJob(job, true);
            DateTime ft = engine.ScheduleJob(trigger);
        }
        public static Trigger BuildTrigger(string cronExpression, string triggerName)
        {
            CronTrigger trigger = new CronTrigger();

            trigger.CronExpressionString = cronExpression; //ctrigger.CronExpressionString = "0/2 * * * * ?";
            trigger.Name  = triggerName;
            trigger.Group = Keys.TRIGGERGROUP;

            trigger.JobName  = Keys.JOBNAME;
            trigger.JobGroup = Keys.JOBGROUP;

            return(trigger);
        }
        public void FireReturnsRequestIfMatched()
        {
            var today   = DateTime.Today;
            var trigger = new CronTrigger
            {
                CronExpression = today.ToString("* * d * *")
            };

            trigger.StartDate = DateTime.Today;
            var actual = trigger.Fire();

            Assert.IsNotNull(actual);
        }
Exemple #26
0
        public void ScheduleCronTrigger(CronTrigger trigger)
        {
            var jobDetail = Quartz.JobBuilder.Create(typeof(QuartzJobWrapper))
                .WithIdentity(trigger.Id)
                .UsingJobData("settings", trigger.JobId)
                .Build();

            var qTrigger = Quartz.TriggerBuilder.Create()
                .WithIdentity(trigger.Id)
                .WithSchedule(Quartz.CronScheduleBuilder.CronSchedule(((CronTrigger)trigger).Cron))
                .Build();

            _scheduler.ScheduleJob(jobDetail, qTrigger);
        }
Exemple #27
0
        protected override void OnStart(string[] args)
        {
            ISchedulerFactory schedulerFactory = new StdSchedulerFactory();

            _scheduler = schedulerFactory.GetScheduler();

            IJob      myJob     = new MinistrySchedule();
            JobDetail jobDetail = new JobDetail("MinistryJob", "Group1", myJob.GetType());
            Trigger   trigger   = new CronTrigger("MinistryTrigger", "Group1", /*"0 00 6 * * ? *"*/ "0 0/1 * * * ?");

            _scheduler.ScheduleJob(jobDetail, trigger);

            _scheduler.Start();
        }
Exemple #28
0
        protected override void OnStart(string[] args)
        {
            ISchedulerFactory schedFact = new StdSchedulerFactory();

            scheduler = schedFact.GetScheduler();
            scheduler.Start();

            string dataCollectCronScheduler = ConfigurationManager.AppSettings["dataCollectJobCron"];

            ITrigger   cronTrigger      = CronTrigger.CreateTrigger(dataCollectCronScheduler);
            IJobDetail dataCollectorJob = DataCollectorJob.Create();

            // Schedule Jobs
            scheduler.ScheduleJob(dataCollectorJob, cronTrigger);
        }
        public void IntegrationCompletedDoesNothingIfNotTriggered()
        {
            var trigger = new CronTrigger
            {
                CronExpression = "* * 1 1 *"
            };

            trigger.Fire();

            var nextTime = trigger.NextBuild;

            trigger.StartDate = DateTime.Now.AddHours(2);
            trigger.IntegrationCompleted();
            Assert.AreEqual(nextTime, trigger.NextBuild);
        }
 public void SetUp()
 {
     CronTrigger = new CronTrigger()
     {
         Id      = "one",
         JobType = IntegrationJobStub.FullName,
         CronExpressionString = "* * * * * ?",
     };
     Subject.IntegrationJobTypes = new List <Type>()
     {
         IntegrationJobStub.Type
     };
     MockScheduler     = new Mock <IScheduler>();
     Subject.Scheduler = MockScheduler.Object;
 }
Exemple #31
0
 public static Trigger CreateTigger(NodeTaskRuntimeInfo taskruntimeinfo)
 {
     if (taskruntimeinfo.TaskModel.taskcron.Contains("["))
     {
         var customcorn = CustomCornFactory.GetCustomCorn(taskruntimeinfo.TaskModel.taskcron);
         customcorn.Parse();
         if (customcorn is SimpleCorn || customcorn is RunOnceCorn)
         {
             var simplecorn = customcorn as SimpleCorn;
             // 定义调度触发规则,比如每1秒运行一次,共运行8次
             SimpleTrigger simpleTrigger = new SimpleTrigger(taskruntimeinfo.TaskModel.id.ToString(), taskruntimeinfo.TaskModel.categoryid.ToString());
             if (simplecorn.ConInfo.StartTime != null)
             {
                 simpleTrigger.StartTimeUtc = simplecorn.ConInfo.StartTime.Value.ToUniversalTime();
             }
             //else
             //    simpleTrigger.StartTimeUtc = DateTime.Now.ToUniversalTime();
             if (simplecorn.ConInfo.EndTime != null)
             {
                 simpleTrigger.EndTimeUtc = simplecorn.ConInfo.EndTime.Value.ToUniversalTime();
             }
             if (simplecorn.ConInfo.RepeatInterval != null)
             {
                 simpleTrigger.RepeatInterval = TimeSpan.FromSeconds(simplecorn.ConInfo.RepeatInterval.Value);
             }
             else
             {
                 simpleTrigger.RepeatInterval = TimeSpan.FromSeconds(1);
             }
             if (simplecorn.ConInfo.RepeatCount != null)
             {
                 simpleTrigger.RepeatCount = simplecorn.ConInfo.RepeatCount.Value - 1;//因为任务默认执行一次,所以减一次
             }
             else
             {
                 simpleTrigger.RepeatCount = int.MaxValue;//不填,则默认最大执行次数
             }
             return(simpleTrigger);
         }
         return(null);
     }
     else
     {
         CronTrigger trigger = new CronTrigger(taskruntimeinfo.TaskModel.id.ToString(), taskruntimeinfo.TaskModel.categoryid.ToString()); // 触发器名,触发器组
         trigger.CronExpressionString = taskruntimeinfo.TaskModel.taskcron;                                                               // 触发器时间设定
         return(trigger);
     }
 }
	    private void ProcessJobs(quartz data)
	    {
            if (data.job == null)
            {
                // no jobs to process, file is empty
                return;
            }

	        foreach (jobType jt in data.job)
	        {
	            JobSchedulingBundle jsb = new JobSchedulingBundle();
	            jobdetailType j = jt.jobdetail;
	            Type jobType = Type.GetType(j.jobtype);
                if (jobType == null)
                {
                    throw new SchedulerConfigException("Unknown job type " + j.jobtype);
                }

	            JobDetail jd = new JobDetail(j.name, j.group, jobType, j.@volatile, j.durable, j.recover);
	            jd.Description = j.description;

                if (j.joblistenerref != null && j.joblistenerref.Trim().Length > 0)
                {
                    jd.AddJobListener(j.joblistenerref);
                }
                
                jsb.JobDetail = jd;

                // read job data map
                if (j.jobdatamap != null && j.jobdatamap.entry != null)
                {
                    foreach (entryType entry in j.jobdatamap.entry)
                    {
                        jd.JobDataMap.Put(entry.key, entry.value);
                    }
                }

	            triggerType[] tArr = jt.trigger;
                if (tArr == null)
                {
                    // set to empty
                    tArr = new triggerType[0];
                }
	            foreach (triggerType t in tArr)
	            {
	                Trigger trigger;
	                if (t.Item is cronType)
	                {
	                    cronType c = (cronType) t.Item;

                        DateTime startTime = (c.starttime == DateTime.MinValue ? DateTime.UtcNow : c.starttime);
                        NullableDateTime endTime = (c.endtime == DateTime.MinValue ? null : (NullableDateTime)c.endtime);

	                    string jobName = c.jobname != null ? c.jobname : j.name;
	                    string jobGroup = c.jobgroup != null ? c.jobgroup : j.group;

                        CronTrigger ct = new CronTrigger(
                            c.name,
                            c.group,
                            jobName,
                            jobGroup,
                            startTime,
                            endTime,
                            c.cronexpression);

	                    if (c.timezone != null && c.timezone.Trim().Length > 0)
	                    {
#if NET_35
                            ct.TimeZone = TimeZoneInfo.FindSystemTimeZoneById(c.timezone);
#else
	                        throw new ArgumentException(
	                            "Specifying time zone for cron trigger is only supported in .NET 3.5 builds");
#endif
	                    }
	                    trigger = ct;
	                }
	                else if (t.Item is simpleType)
	                {
	                    simpleType s = (simpleType) t.Item;
	                    
	                    DateTime startTime = (s.starttime == DateTime.MinValue ? DateTime.UtcNow : s.starttime);
                        NullableDateTime endTime = (s.endtime == DateTime.MinValue ? null : (NullableDateTime)s.endtime);

                        string jobName = s.jobname != null ? s.jobname : j.name;
                        string jobGroup = s.jobgroup != null ? s.jobgroup : j.group;

                        SimpleTrigger st = new SimpleTrigger(
                            s.name, 
                            s.group, 
                            jobName, 
                            jobGroup,
                            startTime, 
                            endTime, 
                            ParseSimpleTriggerRepeatCount(s.repeatcount), 
                            TimeSpan.FromMilliseconds(Convert.ToInt64(s.repeatinterval, CultureInfo.InvariantCulture)));

	                    trigger = st;
	                }
	                else
	                {
	                    throw new ArgumentException("Unknown trigger type in XML");
	                }

                    trigger.Description = t.Item.description;
	                trigger.CalendarName = t.Item.calendarname;
                    
                    if (t.Item.misfireinstruction != null)
                    {
                        trigger.MisfireInstruction = ReadMisfireInstructionFromString(t.Item.misfireinstruction);
                    }
                    if (t.Item.jobdatamap != null && t.Item.jobdatamap.entry != null)
                    {
                        foreach (entryType entry in t.Item.jobdatamap.entry)
                        {
                            if (trigger.JobDataMap.Contains(entry.key))
                            {
                                Log.Warn("Overriding key '" + entry.key + "' with another value in same trigger job data map");
                            }
                            trigger.JobDataMap[entry.key] = entry.value;
                        }
                    }
					if (t.Item.triggerlistenerref != null && t.Item.triggerlistenerref.Trim().Length > 0)
					{
						trigger.AddTriggerListener(t.Item.triggerlistenerref);
					}
					
	                jsb.Triggers.Add(trigger);
	            }

	            AddJobToSchedule(jsb);
	        }
	    }
Exemple #33
0
		/// <summary>
		/// Make a trigger that will fire every week at the given day and time.
		/// <p>
		/// The generated trigger will not have its name, group,
		/// or end-time set.  The Start time defaults to 'now'.
		/// </p>
		/// </summary>
		/// <param name="dayOfWeek">(1-7) the day of week upon which to fire</param>
		/// <param name="hour">the hour (0-23) upon which to fire</param>
		/// <param name="minute">the minute (0-59) upon which to fire</param>
		/// <returns>the new trigger</returns>
		public static Trigger MakeWeeklyTrigger(DayOfWeek dayOfWeek, int hour, int minute)
		{
			ValidateHour(hour);
			ValidateMinute(minute);

			CronTrigger trig = new CronTrigger();

			try
			{
				trig.CronExpressionString = string.Format(CultureInfo.InvariantCulture, "0 {0} {1} ? * {2}", minute, hour, ((int) dayOfWeek + 1));
			}
			catch (Exception)
			{
				return null; /* never happens... */
			}

			trig.StartTimeUtc = DateTime.UtcNow;

			return trig;
		}
Exemple #34
0
		/// <summary>
		/// Make a trigger that will fire every month at the given day and time.
		/// <p>
		/// The generated trigger will not have its name, group,
		/// or end-time set.  The Start time defaults to 'now'.
		/// </p>
		/// <p>
		/// If the day of the month specified does not occur in a given month, a
		/// firing will not occur that month. (i.e. if dayOfMonth is specified as
		/// 31, no firing will occur in the months of the year with fewer than 31
		/// days).
		/// </p>
		/// </summary>
		/// <param name="dayOfMonth">(1-31, or -1) the day of week upon which to fire</param>
		/// <param name="hour">the hour (0-23) upon which to fire</param>
		/// <param name="minute">the minute (0-59) upon which to fire</param>
		/// <returns>the newly created trigger</returns>
		public static Trigger MakeMonthlyTrigger(int dayOfMonth, int hour, int minute)
		{
			ValidateDayOfMonth(dayOfMonth);
			ValidateHour(hour);
			ValidateMinute(minute);

			CronTrigger trig = new CronTrigger();

			try
			{
				if (dayOfMonth != LastDayOfMonth)
				{
					trig.CronExpressionString = string.Format(CultureInfo.InvariantCulture, "0 {0} {1} {2} * ?", minute, hour, dayOfMonth);
				}
				else
				{
					trig.CronExpressionString = string.Format(CultureInfo.InvariantCulture, "0 {0} {1} L * ?", minute, hour);
				}
			}
			catch (Exception)
			{
				return null; /* never happens... */
			}

			trig.StartTimeUtc = DateTime.UtcNow;

			return trig;
		}
Exemple #35
0
        /// <summary>
        /// Insert the cron trigger data.
        /// </summary>
        /// <param name="conn">the DB Connection</param>
        /// <param name="trigger">the trigger to insert</param>
        /// <returns>the number of rows inserted</returns>
        public virtual int InsertCronTrigger(ConnectionAndTransactionHolder conn, CronTrigger trigger)
        {
            using (IDbCommand cmd = PrepareCommand(conn, ReplaceTablePrefix(SqlInsertCronTrigger)))
            {
                AddCommandParameter(cmd, 1, "triggerName", trigger.Name);
                AddCommandParameter(cmd, 2, "triggerGroup", trigger.Group);
                AddCommandParameter(cmd, 3, "triggerCronExpression", trigger.CronExpressionString);
#if NET_35
                AddCommandParameter(cmd, 4, "triggerTimeZone", trigger.TimeZone.Id);
#else
                AddCommandParameter(cmd, 4, "triggerTimeZone", trigger.TimeZone.StandardName);
#endif

                return cmd.ExecuteNonQuery();
            }
        }
Exemple #36
0
        /// <summary>
        /// Select a trigger.
        /// </summary>
        /// <param name="conn">the DB Connection</param>
        /// <param name="triggerName">the name of the trigger</param>
        /// <param name="groupName">the group containing the trigger</param>
        /// <returns>The <see cref="Trigger" /> object</returns>
        public virtual Trigger SelectTrigger(ConnectionAndTransactionHolder conn, string triggerName, string groupName)
        {
            Trigger trigger = null;
            string jobName = null;
            string jobGroup = null;
            bool volatility = false;
            string description = null;
            string triggerType = "";
            string calendarName = null;
            int misFireInstr = Int32.MinValue;
            int priority = Int32.MinValue;
            IDictionary map = null;
            NullableDateTime pft = null;
            NullableDateTime endTimeD = null;
            NullableDateTime nft = null;
            DateTime startTimeD = DateTime.MinValue;

            using (IDbCommand cmd = PrepareCommand(conn, ReplaceTablePrefix(SqlSelectTrigger)))
            {
                AddCommandParameter(cmd, 1, "triggerName", triggerName);
                AddCommandParameter(cmd, 2, "triggerGroup", groupName);

                using (IDataReader rs = cmd.ExecuteReader())
                {
                    if (rs.Read())
                    {
                        jobName = GetString(rs[ColumnJobName]);
                        jobGroup = GetString(rs[ColumnJobGroup]);
                        volatility = GetBoolean(rs[ColumnIsVolatile]);
                        description = GetString(rs[ColumnDescription]);
                        long nextFireTime = Convert.ToInt64(rs[ColumnNextFireTime], CultureInfo.InvariantCulture);
                        long prevFireTime = Convert.ToInt64(rs[ColumnPreviousFireTime], CultureInfo.InvariantCulture);
                        triggerType = GetString(rs[ColumnTriggerType]);
                        long startTime = Convert.ToInt64(rs[ColumnStartTime], CultureInfo.InvariantCulture);
                        long endTime = Convert.ToInt64(rs[ColumnEndTime], CultureInfo.InvariantCulture);
                        calendarName = GetString(rs[ColumnCalendarName]);
                        misFireInstr = Convert.ToInt32(rs[ColumnMifireInstruction], CultureInfo.InvariantCulture);
                        priority = Convert.ToInt32(rs[ColumnPriority], CultureInfo.InvariantCulture);

                        if (CanUseProperties)
                        {
                            map = GetMapFromProperties(rs, 15);
                        }
                        else
                        {
                            map = (IDictionary)GetObjectFromBlob(rs, 15);
                        }


                        if (nextFireTime > 0)
                        {
                            nft = new DateTime(nextFireTime);
                        }

                        if (prevFireTime > 0)
                        {
                            pft = new DateTime(prevFireTime);
                        }

                        startTimeD = new DateTime(startTime);

                        if (endTime > 0)
                        {
                            endTimeD = new DateTime(endTime);
                        }

                        // done reading
                        rs.Close();

                        if (triggerType.Equals(TriggerTypeSimple))
                        {
                            using (IDbCommand cmd2 = PrepareCommand(conn, ReplaceTablePrefix(SqlSelectSimpleTrigger)))
                            {
                                AddCommandParameter(cmd2, 1, "triggerName", triggerName);
                                AddCommandParameter(cmd2, 2, "triggerGroup", groupName);
                                using (IDataReader rs2 = cmd2.ExecuteReader())
                                {
                                    if (rs2.Read())
                                    {
                                        int repeatCount = Convert.ToInt32(rs2[ColumnRepeatCount], CultureInfo.InvariantCulture);
                                        long repeatInterval = Convert.ToInt64(rs2[ColumnRepeatInterval], CultureInfo.InvariantCulture);
                                        int timesTriggered = Convert.ToInt32(rs2[ColumnTimesTriggered], CultureInfo.InvariantCulture);

                                        SimpleTrigger st =
                                            new SimpleTrigger(triggerName, groupName, jobName, jobGroup, startTimeD, endTimeD,
                                                              repeatCount,
                                                              TimeSpan.FromMilliseconds(repeatInterval));
                                        st.CalendarName = calendarName;
                                        st.MisfireInstruction = misFireInstr;
                                        st.TimesTriggered = timesTriggered;
                                        st.Volatile = volatility;
                                        st.SetNextFireTime(nft);
                                        st.SetPreviousFireTime(pft);
                                        st.Description = description;
                                        st.Priority = priority;
                                        if (null != map)
                                        {
                                            st.JobDataMap = new JobDataMap(map);
                                        }
                                        trigger = st;
                                    }
                                }
                            }
                        }
                        else if (triggerType.Equals(TriggerTypeCron))
                        {
                            using (IDbCommand cmd2 = PrepareCommand(conn, ReplaceTablePrefix(SqlSelectCronTriggers)))
                            {
                                AddCommandParameter(cmd2, 1, "triggerName", triggerName);
                                AddCommandParameter(cmd2, 2, "triggerGroup", groupName);
                                using (IDataReader rs2 = cmd2.ExecuteReader())
                                {
                                    if (rs2.Read())
                                    {
                                        string cronExpr = GetString(rs2[ColumnCronExpression]);
                                        string timeZoneId = GetString(rs2[ColumnTimeZoneId]);

                                        CronTrigger ct = null;
                                        try
                                        {
                                            TimeZone timeZone = null;
                                            if (timeZoneId != null)
                                            {
#if NET_35
                                                timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
#endif
                                            }
                                            ct = new CronTrigger(triggerName, groupName, jobName, jobGroup, startTimeD, endTimeD, cronExpr, timeZone);
                                        }
                                        catch (Exception ex)
                                        {
                                            logger.Warn("Got error from expression, still continuing", ex);
                                            // expr must be valid, or it never would have
                                            // gotten to the store...
                                        }
                                        if (null != ct)
                                        {
                                            ct.CalendarName = calendarName;
                                            ct.MisfireInstruction = misFireInstr;
                                            ct.Volatile = volatility;
                                            ct.SetNextFireTime(nft);
                                            ct.SetPreviousFireTime(pft);
                                            ct.Description = description;
                                            if (null != map)
                                            {
                                                ct.JobDataMap = new JobDataMap(map);
                                            }
                                            trigger = ct;
                                        }
                                    }
                                }
                            }
                        }
                        else if (triggerType.Equals(TriggerTypeBlob))
                        {
                            using (IDbCommand cmd2 = PrepareCommand(conn, ReplaceTablePrefix(SqlSelectBlobTrigger)))
                            {
                                AddCommandParameter(cmd2, 1, "triggerName", triggerName);
                                AddCommandParameter(cmd2, 2, "triggerGroup", groupName);
                                using (IDataReader rs2 = cmd2.ExecuteReader())
                                {
                                    if (rs2.Read())
                                    {
                                        trigger = (Trigger)GetObjectFromBlob(rs2, 2);
                                    }
                                }
                            }
                        }
                        else
                        {
                            throw new Exception("Class for trigger type '" + triggerType + "' not found.");
                        }

                    }
                }
            }

            return trigger;
        }
Exemple #37
0
        /// <summary>
        /// Update the cron trigger data.
        /// </summary>
        /// <param name="conn">The DB Connection.</param>
        /// <param name="trigger">The trigger to insert.</param>
        /// <returns>The number of rows updated.</returns>
        public virtual int UpdateCronTrigger(ConnectionAndTransactionHolder conn, CronTrigger trigger)
        {
            using (IDbCommand cmd = PrepareCommand(conn, ReplaceTablePrefix(SqlUpdateCronTrigger)))
            {
                AddCommandParameter(cmd, 1, "triggerCronExpression", trigger.CronExpressionString);
                AddCommandParameter(cmd, 2, "triggerName", trigger.Name);
                AddCommandParameter(cmd, 3, "triggerGroup", trigger.Group);

                return cmd.ExecuteNonQuery();
            }
        }
        public void ShouldSetLocalTimezoneOnCronTriggerWhenCalledScheduleTrigger()
        {
            // Arrange
            var myTrigger = new CronTrigger
            {
                Name = "TestTrigger",
                Group = "TestGroup",
                JobName = "TestJobName",
                JobGroup = "TestJobGroup",
                CronExpression = "0/30 * * * * ?"
            };
            IJobDetail noOpJob = new JobDetailImpl("TestJobName", "TestJobGroup", typeof(NoOpJob));
            _mockScheduler.Setup(x => x.GetJobDetail(It.IsAny<JobKey>())).Returns(noOpJob);
            _mockScheduler.Setup(x => x.CheckExists(It.IsAny<JobKey>())).Returns(true);

            ISchedulerCore schedulerCore = new SchedulerCore(_mockScheduler.Object, _mockPersistanceStore.Object);

            // Act 
            schedulerCore.ScheduleTrigger(myTrigger);

            // Assert
            _mockScheduler.Verify(x => x.ScheduleJob(
                It.Is<ICronTrigger>(t => (Equals(t.TimeZone, TimeZoneInfo.Local)))), Times.Once);
        }