Example #1
0
 /// <summary>
 /// Create job information from the job
 /// </summary>
 public JobInfo(IJobState job, IEnumerable <IJobSchedule> schedule)
 {
     if (job is IAmiIdentified ident)
     {
         this.Key        = ident.Key;
         this.Tag        = ident.Tag;
         this.ModifiedOn = ident.ModifiedOn;
     }
     else
     {
         this.Key        = job.Job.Id.ToString();
         this.Tag        = job.GetType().Assembly.GetName().Version.ToString();
         this.ModifiedOn = ApplicationServiceContext.Current.StartTime;
     }
     this.Name        = job.Job.Name;
     this.CanCancel   = job.Job.CanCancel;
     this.State       = job.CurrentState;
     this.Description = job.Job.Description;
     this.Parameters  = job.Job.Parameters?.Select(o => new JobParameter()
     {
         Key = o.Key, Type = o.Value.Name
     }).ToList();
     this.LastStart  = job.LastStartTime;
     this.LastFinish = job.LastStopTime;
     this.JobType    = job.GetType().AssemblyQualifiedName;
     this.Schedule   = schedule?.Select(o => new JobScheduleInfo(o)).ToList();
     this.Progress   = job.Progress;
     this.StatusText = job.StatusText;
 }
        public DateTime? NextExecution(IJobState state, ISchedulerContext context)
        {
            if (state.Status != JobStatus.Pending)
            {
                return null; // Have no clue
            }

            return context.GetCurrentTime().Date.Add(_dayTime);
        }
        protected internal virtual void InitHistoricJobLogEvent(HistoricJobLogEventEntity evt, IJob job, HistoryEventTypes eventType)
        {
            evt.TimeStamp = ClockUtil.CurrentTime;

            JobEntity jobEntity = (JobEntity)job;

            evt.JobId       = jobEntity.Id;
            evt.JobDueDate  = jobEntity.Duedate;
            evt.JobRetries  = jobEntity.Retries;
            evt.JobPriority = jobEntity.Priority;

            IJobDefinition jobDefinition = jobEntity.JobDefinition;

            if (jobDefinition != null)
            {
                evt.JobDefinitionId            = jobDefinition.Id;
                evt.JobDefinitionType          = jobDefinition.JobType;
                evt.JobDefinitionConfiguration = jobDefinition.JobConfiguration;
            }
            else
            {
                // in case of async signal there does not exist a job definition
                // but we use the jobHandlerType as jobDefinitionType
                evt.JobDefinitionType = jobEntity.JobHandlerType;
            }

            evt.ActivityId           = jobEntity.ActivityId;
            evt.ExecutionId          = jobEntity.ExecutionId;
            evt.ProcessInstanceId    = jobEntity.ProcessInstanceId;
            evt.ProcessDefinitionId  = jobEntity.ProcessDefinitionId;
            evt.ProcessDefinitionKey = jobEntity.ProcessDefinitionKey;
            evt.DeploymentId         = jobEntity.DeploymentId;
            evt.TenantId             = jobEntity.TenantId;

            // initialize sequence counter
            InitSequenceCounter(jobEntity, evt);

            IJobState state = null;

            if (HistoryEventTypes.JobCreate.Equals(eventType))
            {
                state = JobStateFields.Created;
            }
            else if (HistoryEventTypes.JobFail.Equals(eventType))
            {
                state = JobStateFields.Failed;
            }
            else if (HistoryEventTypes.JobSuccess.Equals(eventType))
            {
                state = JobStateFields.Successful;
            }
            else if (HistoryEventTypes.JobDelete.Equals(eventType))
            {
                state = JobStateFields.Deleted;
            }
            evt.State = state.StateCode;
        }
Example #4
0
        public static void AddOrUpdateJobState(IJobState jobState, string jobName)
        {
            var job = GetJobByName(jobName);

            if (job != null)
            {
                StateBag[jobName.ToLowerInvariant().Trim()] = jobState;
            }
            else
            {
                StateBag.Add(jobName.ToLowerInvariant().Trim(), jobState);
            }
        }
Example #5
0
        public DateTime?NextExecution(IJobState state, ISchedulerContext context)
        {
            if (state.Status != JobStatus.Pending)
            {
                return(null); // Have no clue
            }

            if (state.LastComplete != null)
            {
                return(state.LastComplete.Value.Date.AddDays(1).Add(_dayTime));
            }

            return(context.GetCurrentTime().Date.Add(_dayTime));
        }
        public DateTime? NextExecution(IJobState state, ISchedulerContext context)
        {
            if (state.Status != JobStatus.Pending)
            {
                return null; // Have no clue
            }

            if (state.LastComplete != null)
            {
                return state.LastComplete.Value.Date.AddDays(1).Add(_dayTime);
            }

            return context.GetCurrentTime().Date.Add(_dayTime);
        }
Example #7
0
 public TUIRoutine(ILogger <TUIRoutine> log, IConfiguration config, IDataSetNameValidator dataSetNameValidator, IConfigurationState configurationState,
                   IDirectoryValidator directoryValidator, IFileValidator fileValidator, IRuleChecker ruleChecker, /*IFileLineCounter fileLineCounter,*/ IJobState jobState,
                   ILineProducerConsumerOrechestrator lineProducerConsumerOrechestrator, /*IOutputDatasetFactory outputDatasetFactory,*/ IInputDatasetFactory inputDatasetFactory)
 {
     _log    = log;
     _config = config;
     _dataSetNameValidator = dataSetNameValidator;
     _configurationState   = configurationState;
     _directoryValidator   = directoryValidator;
     _fileValidator        = fileValidator;
     _ruleChecker          = ruleChecker;
     //_fileLineCounter = fileLineCounter;
     _jobState = jobState;
     _lineProducerConsumerOrechestrator = lineProducerConsumerOrechestrator;
     //_outputDatasetFactory = outputDatasetFactory;
     _inputDatasetFactory = inputDatasetFactory;
 }
Example #8
0
        public DateTime?NextExecution(IJobState state, ISchedulerContext context)
        {
            if (state.Status != JobStatus.Pending)
            {
                return(null); // Have no clue
            }

            if (state.LastComplete != null)
            {
                return(state.LastComplete + _interval);
            }
            else
            {
                var shift = context.GetNextRandom(200, (int)_interval.TotalMilliseconds / 3);
                return(state.Created.AddMilliseconds(shift));
            }
        }
Example #9
0
 public LineProducerConsumerOrechestrator(IJobState jobState)
 {
     _jobState = jobState;
 }
Example #10
0
 /// <summary>
 /// Determine if the <see cref="IJobState"/> is running
 /// </summary>
 /// <param name="me">The job state structure</param>
 /// <returns>True if the status of the job state implies the job is running</returns>
 public static bool IsRunning(this IJobState me) => me.CurrentState == JobStateType.Running || me.CurrentState == JobStateType.Starting;