Пример #1
0
        private static IJobDetail CreateJob(UserConnection userConnection, IAppSchedulerWraper appSchedulerWrapper,
                                            int maintenanceFrequency, string jobName, string jobGroup)
        {
            var parameters = new Dictionary <string, object> {
                { _initialFrequencyParameterName, maintenanceFrequency }
            };

            return(appSchedulerWrapper.CreateClassJob <ProcessMaintenanceJob>(jobName,
                                                                              jobGroup, userConnection, parameters, true));
        }
Пример #2
0
        /// <summary>
        /// Registers <see cref="ProcessMaintenanceJob"/> in scheduler.
        /// </summary>
        /// <param name="userConnection">User connection.</param>
        /// <param name="appSchedulerWrapper">Scheduler.</param>
        public static void Register(UserConnection userConnection, IAppSchedulerWraper appSchedulerWrapper)
        {
            const string oldJobGroup = "ProcessLogArchivingJobGroup";
            const string oldJobName  = "Terrasoft.Configuration.ProcessLogArchivingJob";

            if (appSchedulerWrapper.DoesJobExist(oldJobName, oldJobGroup))
            {
                appSchedulerWrapper.RemoveJob(oldJobName, oldJobGroup);
            }
            int maintenanceFrequency = GetMaintenanceFrequencySysSetting(userConnection);

            Register(userConnection, appSchedulerWrapper, maintenanceFrequency);
        }
Пример #3
0
        public BulkDeduplicationManager(UserConnection userConnection,
                                        IAppSchedulerWraper appSchedulerWraper) : base(userConnection)
        {
            if (string.IsNullOrEmpty(DeduplicationWebApiUrl))
            {
                Log.Error("DeduplicationWebApiUrl is empty.");
            }
            var userConnectionConstructorArgument = new ConstructorArgument("userConnection", userConnection);

            _startDeduplicationRequestFactory = ClassFactory.Get <IStartDeduplicationRequestFactory>(
                userConnectionConstructorArgument);
            _bulkDeduplicationTaskClient = ClassFactory.Get <IBulkDeduplicationTaskClient>(
                userConnectionConstructorArgument);
            _appSchedulerWraper = appSchedulerWraper;
        }
Пример #4
0
        /// <summary>
        /// Processes mailbox status from exchange listener service.
        /// </summary>
        /// <param name="mailboxState"><see cref="MailboxState"/> instance.</param>
        public void ProcessMailboxState(MailboxState mailboxState)
        {
            _log.Info($"ProcessConnectionStatus for {mailboxState.SenderEmailAddress} started.");
            var parameters = new Dictionary <string, object> {
                { "SenderEmailAddress", mailboxState.SenderEmailAddress },
                { "Avaliable", mailboxState.Avaliable },
                { "ExceptionClassName", mailboxState.ExceptionClassName },
                { "ExceptionMessage", mailboxState.ExceptionMessage },
                { "Context", mailboxState.Context }
            };
            IAppSchedulerWraper schedulerWraper = ClassFactory.Get <IAppSchedulerWraper>();

            schedulerWraper.ScheduleImmediateJob <MailboxStateEventExecutor>(
                $"ExchangeListerProcessConnectionStatus_{mailboxState.SenderEmailAddress}_{Guid.NewGuid().ToString()}",
                mailboxState.BpmUserWorkspace, mailboxState.BpmUserName, parameters, true);
            _log.Info($"ProcessConnectionStatus for {mailboxState.SenderEmailAddress} ended.");
        }
Пример #5
0
        private static void Register(UserConnection userConnection, IAppSchedulerWraper appSchedulerWrapper,
                                     int maintenanceFrequency)
        {
            string jobName  = typeof(ProcessMaintenanceJob).FullName;
            var    jobGroup = "ProcessMaintenanceGroup";

            if (appSchedulerWrapper.DoesJobExist(jobName, jobGroup))
            {
                appSchedulerWrapper.RemoveJob(jobName, jobGroup);
                _log.Info($"ProcessMaintenanceJob removed.");
            }
            if (maintenanceFrequency <= 0)
            {
                return;
            }
            IJobDetail job = CreateJob(userConnection, appSchedulerWrapper, maintenanceFrequency, jobName, jobGroup);

            appSchedulerWrapper.Instance.ScheduleJob(job, GetJobTrigger(maintenanceFrequency));
            _log.Info($"ProcessMaintenanceJob scheduled with {maintenanceFrequency} minutes frequency.");
        }
        /// <summary>
        /// Schedules the next run of the given job. Deletes existing instances before planning new one.
        /// </summary>
        /// <param name="userConnection">The user connection.</param>
        /// <param name="jobName">Name of the job.</param>
        /// <param name="jobExecutor">The job executor.</param>
        /// <param name="executionPeriod">Periodicity of the given job's trigger (minutes).</param>
        public static void ScheduleNextRun(UserConnection userConnection, string jobName, IJobExecutor jobExecutor,
                                           int executionPeriod)
        {
            if (executionPeriod < 0)
            {
                return;
            }
            IAppSchedulerWraper schedulerWrapper = SchedulerWraper;
            IScheduler          scheduler        = schedulerWrapper.Instance;
            SysUserInfo         currentUser      = userConnection.CurrentUser;
            string     className = jobExecutor.GetType().AssemblyQualifiedName;
            IJobDetail job       = schedulerWrapper.CreateClassJob(className, jobName, userConnection.Workspace.Name,
                                                                   currentUser.Name, null, true);
            ITrigger trigger = TriggerBuilder.Create()
                               .WithIdentity(className + "Trigger")
                               .StartAt(DateTimeOffset.Now.AddMinutes(executionPeriod))
                               .Build();

            scheduler.ScheduleJob(job, new Quartz.Collection.HashSet <ITrigger> {
                trigger
            }, true);
        }
Пример #7
0
 public ProcessMaintenanceJob(IProcessLogMaintainer processLogMaintainer,
                              IAppSchedulerWraper appSchedulerWrapper)
 {
     _processLogMaintainer = processLogMaintainer;
     _appSchedulerWrapper  = appSchedulerWrapper;
 }
 public CampaignJobDispatcher(UserConnection userConnection, IAppSchedulerWraper schedulerWraper)
     : this(userConnection) {
     _appSchedulerWraper = schedulerWraper;
 }