Exemple #1
0
 private void Save(JobInstanceDetail detail)
 {
     Job      = Jobs.Save(Job);
     Instance = Jobs.Save(Instance);
     Jobs.Save(Instance.GetWithDailyPartition());
     Jobs.Save(detail);
 }
Exemple #2
0
        /// <summary>
        /// Inserts a specified job instance details
        /// </summary>
        public JobInstanceDetail Save(JobInstanceDetail job)
        {
            var insertOperation = TableOperation.Insert(job);
            var result          = JobInstanceDetailsTable.Execute(insertOperation);

            return(result.Result as JobInstanceDetail);
        }
Exemple #3
0
        /// <summary>
        /// Inserts a specified job instance details
        /// </summary>
        public async Task <JobInstanceDetail> SaveAsync(JobInstanceDetail job)
        {
            var insertOperation = TableOperation.Insert(job);
            var result          = await JobInstanceDetailsTable.ExecuteAsync(insertOperation);

            return(result.Result as JobInstanceDetail);
        }
Exemple #4
0
        private async Task SaveAsync(JobInstanceDetail detail)
        {
            Job = await Jobs.SaveAsync(Job);

            Instance = await Jobs.SaveAsync(Instance);

            await Jobs.SaveAsync(Instance.GetWithDailyPartition());

            await Jobs.SaveAsync(detail);
        }
Exemple #5
0
        private JobInstanceDetail Abort(string message)
        {
            if (Instance == null)
            {
                throw new ArgumentNullException("No instance to abort");
            }

            var now = DateTime.UtcNow;

            Instance.TotalDetails++;

            JobInstanceDetail detail;

            if (Instance.CompletedOn.HasValue)
            {
                detail = new JobInstanceDetail(Instance.JobId, Instance.InstanceId)
                {
                    Date    = DateTime.UtcNow,
                    Type    = JobDetailType.Info,
                    Details = "Instance already completed, abort request ignored"
                };
            }
            else
            {
                Instance.CompletedOn          = now;
                Instance.HasError             = true;
                Instance.LastOn               = now;
                Instance.LastType             = JobDetailType.Aborted;
                Instance.RunningTimeInSeconds = Math.Round(Instance.CompletedOn.Value.Subtract(Instance.StartedOn).TotalSeconds, 2);

                if (Job.LastInstanceId == Instance.InstanceId)
                {
                    Job.IsRunning                        = false;
                    Job.LastInstanceStatusOn             = now;
                    Job.LastInstanceStatus               = JobDetailType.Aborted;
                    Job.LastInstanceRunningTimeInSeconds = Instance.RunningTimeInSeconds;
                }

                detail = new JobInstanceDetail(Instance.JobId, Instance.InstanceId)
                {
                    Date    = DateTime.UtcNow,
                    Type    = JobDetailType.Aborted,
                    Details = message
                };
            }

            return(detail);
        }
Exemple #6
0
        JobInstanceDetail Generate(JobLogLevel type, string details)
        {
            var detail = new JobInstanceDetail(Instance.JobId, Instance.InstanceId)
            {
                Date    = DateTime.UtcNow,
                Type    = type.ToString(),
                Details = details
            };

            if (type == JobLogLevel.Warning)
            {
                Instance.HasWarning = true;
            }
            if (type == JobLogLevel.Exception)
            {
                Instance.HasException = true;
            }
            if (type == JobLogLevel.Error)
            {
                Instance.HasError = true;
            }

            Instance.TotalDetails++;
            Instance.LastOn               = detail.Date;
            Instance.LastType             = detail.Type;
            Instance.RunningTimeInSeconds = Math.Round(DateTime.UtcNow.Subtract(Instance.StartedOn).TotalSeconds, 2);

            Job.LastInstanceStatus               = detail.Type;
            Job.LastInstanceStatusOn             = detail.Date;
            Job.LastInstanceId                   = Instance.InstanceId;
            Job.LastInstanceRunningTimeInSeconds = Instance.RunningTimeInSeconds;
            Job.HasWarning   = Instance.HasWarning;
            Job.HasException = Instance.HasException;
            Job.HasError     = Instance.HasError;

            return(detail);
        }
Exemple #7
0
        private JobInstanceDetail Complete(string message)
        {
            var detail = new JobInstanceDetail(Instance.JobId, Instance.InstanceId)
            {
                Date    = DateTime.UtcNow,
                Type    = JobDetailType.Complete,
                Details = message
            };

            Job.LastInstanceStatus   = detail.Type;
            Job.LastInstanceStatusOn = detail.Date;
            Job.LastInstanceId       = Instance.InstanceId;
            Job.IsRunning            = false;

            Instance.TotalDetails++;
            Instance.LastOn      = detail.Date;
            Instance.LastType    = detail.Type;
            Instance.CompletedOn = detail.Date;

            Instance.RunningTimeInSeconds        = Math.Round(Instance.CompletedOn.Value.Subtract(Instance.StartedOn).TotalSeconds, 2);
            Job.LastInstanceRunningTimeInSeconds = Instance.RunningTimeInSeconds;

            return(detail);
        }
Exemple #8
0
        private JobInstanceDetail FinalStart(string message, Guid?instanceId = null)
        {
            Instance = new JobInstance(Job.Id, instanceId.GetValueOrDefault(Guid.NewGuid()), Job.Version);

            var detail = new JobInstanceDetail(Instance.JobId, Instance.InstanceId)
            {
                Date    = DateTime.UtcNow,
                Type    = JobDetailType.Started,
                Details = message
            };

            Instance.TotalDetails = 1;
            Instance.LastOn       = detail.Date;
            Instance.LastType     = detail.Type;
            Instance.StartedOn    = Instance.LastOn;

            Job.LastInstanceStatusOn = detail.Date;
            Job.LastInstanceStatus   = detail.Type.ToString();
            Job.TotalInstances++;
            Job.LastInstanceId = Instance.InstanceId;
            Job.IsRunning      = true;

            return(detail);
        }
Exemple #9
0
 /// <summary>
 /// Deletes the specified job
 /// </summary>
 public async Task Delete(JobInstanceDetail job)
 {
     var deleteOperation = TableOperation.Delete(job);
     //TODO??? do weed to return something var result = await JobsTable.ExecuteAsync(deleteOperation);
     await JobInstanceDetailsTable.ExecuteAsync(deleteOperation);
 }