Exemplo n.º 1
0
        protected IJobDetail CreateJobDetail(SitecronJob job)
        {
            var jobDetail = JobBuilder.Create(job.JobType).Build();
            var jobParams = string.IsNullOrEmpty(job.Parameters) ? job.Parameters + "&" : string.Empty;

            jobParams += $"{SitecronConstants.ParamNames.zSiteCronItemID}={job.ItemId}";
            jobDetail.JobDataMap.Add(SitecronConstants.FieldNames.Parameters, jobParams);

            if (!string.IsNullOrEmpty(job.Items))
            {
                jobDetail.JobDataMap.Add(SitecronConstants.FieldNames.Items, job.Items);
            }

            jobDetail.JobDataMap.Add(SitecronConstants.FieldNames.ArchiveAfterExecution,
                                     job.ArchiveAfterExecution ? "1" : "0");
            jobDetail.JobDataMap.Add(SitecronConstants.FieldNames.ItemID, job.ItemId);
            jobDetail.JobDataMap.Add(SitecronConstants.ParamNames.Name, job.Name);
            jobDetail.JobDataMap.Add(SitecronConstants.ParamNames.SitecronJob, job);
            jobDetail.JobDataMap.Add(SitecronConstants.ParamNames.SitecronJobLogData, ""); //Parameter used to log execution reports
            return(jobDetail);
        }
Exemplo n.º 2
0
        public void ScheduleJob(SitecronJob job)
        {
            var jobDetail = CreateJobDetail(job);

            if (!string.IsNullOrEmpty(job.CronExpression))
            {
                if (CronExpression.IsValidExpression(job.CronExpression))
                {
                    Log.Info($"SiteCron - Job Loaded - Job Source: {job.JobSource} - {job.Name} - Type: {job.JobTypeSignature} USING Cron Expression: {job.CronExpression} Parameters: {job.Parameters} - Job ItemId:{job.ItemId}", this);
                    //IScheduleBuilder scheduleBuilder = CronScheduleBuilder.CronSchedule(job.CronExpression).InTimeZone(TimeZoneInfo.Utc);
                    var trigger = TriggerBuilder.Create()
                                  .WithIdentity(job.ItemId)
                                  .WithCronSchedule(job.CronExpression)
                                  .ForJob(jobDetail)
                                  .Build();
                    Scheduler.ScheduleJob(jobDetail, trigger);
                }
                else
                {
                    Log.Info($"SiteCron - Job NOT Loaded - Invalid CRON Expression - Job Source: {job.JobSource} - {job.Name} Type: {job.JobTypeSignature} USING Cron Expression: {job.CronExpression} Parameters: {job.Parameters} - Job ItemId:{job.ItemId}", this);
                }
            }

            if (job.ExecuteExactlyAtDateTime.Value != DateTime.MinValue)
            {
                Log.Info(
                    $"Sitecron - Job Loaded - Job Source: {job.JobSource} - {job.Name} - Type: {job.JobTypeSignature} USING ExecuteExactlyAtDateTime ServerTime: {DateUtil.ToServerTime(job.ExecuteExactlyAtDateTime.Value)} UTC: {job.ExecuteExactlyAtDateTime.Value.ToUniversalTime()} ServerTimeZone:{Settings.GetSetting(SitecronConstants.SettingsNames.ServerTimeZone, "master")} Parameters: {job.Parameters} - Job ItemId:{job.ItemId}", this);
                var startDateTime =
                    new DateTimeOffset(job.ExecuteExactlyAtDateTime.Value.ToUniversalTime());
                var trigger = TriggerBuilder.Create()
                              .WithIdentity(job.ItemId)
                              .StartAt(startDateTime)
                              .ForJob(jobDetail)
                              .Build();
                Scheduler.ScheduleJob(jobDetail, trigger);
            }
        }