Beispiel #1
0
 /// <summary>
 ///  Signals the JobExecution to stop. Iterates through the associated
 /// StepExecutions, calling StepExecution#SetTerminateOnly().
 /// </summary>
 public void Stop()
 {
     foreach (StepExecution stepExecution in _stepExecutions)
     {
         stepExecution.SetTerminateOnly();
     }
     _status = BatchStatus.Stopping;
 }
Beispiel #2
0
 /// <summary>
 ///       Method used to move status values through their logical progression, and
 /// override less severe failures with more severe ones. This value is
 /// compared with the parameter and the one that has higher priority is
 /// returned. If both are STARTED or less than the value returned is the
 /// largest in the sequence STARTING, STARTED, COMPLETED. Otherwise the value
 /// returned is the maximum of the two.
 /// </summary>
 /// <param name="other"> other another status to compare to </param>
 /// <returns> either this or the other status depending on their priority </returns>
 public BatchStatus UpgradeTo(BatchStatus other)
 {
     if (IsGreaterThan(Started) || other.IsGreaterThan(Started))
     {
         return(Max(this, other));
     }
     // Both less than or equal to STARTED
     if (this == Completed || other == Completed)
     {
         return(Completed);
     }
     return(Max(this, other));
 }
Beispiel #3
0
 /// <summary>
 /// Custom constructor using JobExecution.
 /// </summary>
 /// <param name="original"></param>
 public JobExecution(JobExecution original)
 {
     JobParameters         = original.JobParameters;
     JobInstance           = original.JobInstance;
     _stepExecutions       = original._stepExecutions;
     _status               = original.Status;
     StartTime             = original.StartTime;
     CreateTime            = original.CreateTime;
     EndTime               = original.EndTime;
     LastUpdated           = original.LastUpdated;
     _exitStatus           = original.ExitStatus;
     _executionContext     = original.ExecutionContext;
     _failureExceptions    = original.FailureExceptions;
     _jobConfigurationName = original.JobConfigurationName;
     Id      = original.Id;
     Version = original.Version;
 }
Beispiel #4
0
        /// <summary>
        /// Retrieves all job executions for a given minimal status
        /// </summary>
        /// <param name="jobIdentifier"></param>
        /// <param name="minStatus"></param>
        /// <param name="jobExplorer"></param>
        /// <returns></returns>
        private static List <JobExecution> GetJobExecutionsWithStatusGreaterThan(string jobIdentifier,
                                                                                 BatchStatus minStatus, IJobExplorer jobExplorer)
        {
            long?executionId = GetLongIdentifier(jobIdentifier);

            if (executionId != null)
            {
                JobExecution jobExecution = jobExplorer.GetJobExecution(executionId.Value);
                if (jobExecution.Status.IsGreaterThan(minStatus))
                {
                    return(new List <JobExecution> {
                        jobExecution
                    });
                }

                //empmty list
                return(new List <JobExecution>());
            }

            int start = 0;
            int count = 100;
            List <JobExecution> executions    = new List <JobExecution>();
            IList <JobInstance> lastInstances = jobExplorer.GetJobInstances(jobIdentifier, start, count);

            while (lastInstances.Any())
            {
                foreach (JobInstance jobInstance in lastInstances)
                {
                    IList <JobExecution> jobExecutions = jobExplorer.GetJobExecutions(jobInstance);
                    if (jobExecutions == null || !jobExecutions.Any())
                    {
                        continue;
                    }

                    executions.AddRange(
                        jobExecutions.Where(jobExecution => jobExecution.Status.IsGreaterThan(minStatus)));
                }

                start        += count;
                lastInstances = jobExplorer.GetJobInstances(jobIdentifier, start, count);
            }

            return(executions);
        }
Beispiel #5
0
        /// <summary>
        /// given string, returns corresponding status (if it makes sense)
        /// </summary>
        /// <param name="status"></param>
        /// <returns></returns>
        public static BatchStatus ValueOf(string status)
        {
            BatchStatus result = null;

            if (string.Equals(Completed._label, status, StringComparison.OrdinalIgnoreCase))
            {
                result = Completed;
            }
            if (string.Equals(Starting._label, status, StringComparison.OrdinalIgnoreCase))
            {
                result = Starting;
            }
            if (string.Equals(Started._label, status, StringComparison.OrdinalIgnoreCase))
            {
                result = Started;
            }
            if (string.Equals(Stopping._label, status, StringComparison.OrdinalIgnoreCase))
            {
                result = Stopping;
            }
            if (string.Equals(Stopped._label, status, StringComparison.OrdinalIgnoreCase))
            {
                result = Stopped;
            }
            if (string.Equals(Failed._label, status, StringComparison.OrdinalIgnoreCase))
            {
                result = Failed;
            }
            if (string.Equals(Abandoned._label, status, StringComparison.OrdinalIgnoreCase))
            {
                result = Abandoned;
            }
            if (string.Equals(Unknown._label, status, StringComparison.OrdinalIgnoreCase))
            {
                result = Unknown;
            }
            if (result != null)
            {
                return(result);
            }//else
            throw new ArgumentException(string.Format("Unkown status: {0}", status));
        }
 /// <summary>
 /// Custom constructor used for serialize/deserialize
 /// </summary>
 /// <param name="original"></param>
 /// <param name="stepExecutions"></param>
 public JobExecution(JobExecution original, ICollection <StepExecution> stepExecutions)
 {
     JobParameters         = original.JobParameters;
     JobInstance           = original.JobInstance;
     _status               = original.Status;
     StartTime             = original.StartTime;
     CreateTime            = original.CreateTime;
     EndTime               = original.EndTime;
     LastUpdated           = original.LastUpdated;
     _exitStatus           = original.ExitStatus;
     _executionContext     = original.ExecutionContext;
     _failureExceptions    = original.FailureExceptions;
     _jobConfigurationName = original.JobConfigurationName;
     Id              = original.Id;
     Version         = original.Version;
     _stepExecutions = new ConcurrentBag <StepExecution>();
     if (stepExecutions != null)
     {
         foreach (StepExecution item in stepExecutions)
         {
             _stepExecutions.TryAdd(item);
         }
     }
 }
Beispiel #7
0
 /// <summary>
 /// Custom constructor using JobExecution.
 /// </summary>
 /// <param name="original"></param>
 public JobExecution(JobExecution original)
 {
     JobParameters = original.JobParameters;
     JobInstance = original.JobInstance;
     _stepExecutions = original._stepExecutions;
     _status = original.Status;
     StartTime = original.StartTime;
     CreateTime = original.CreateTime;
     EndTime = original.EndTime;
     LastUpdated = original.LastUpdated;
     _exitStatus = original.ExitStatus;
     _executionContext = original.ExecutionContext;
     _failureExceptions = original.FailureExceptions;
     _jobConfigurationName = original.JobConfigurationName;
     Id = original.Id;
     Version = original.Version;
 }
Beispiel #8
0
 /// <summary>
 /// return max BatchStatus from 2
 /// </summary>
 /// <param name="status1"></param>
 /// <param name="status2"></param>
 /// <returns></returns>
 public static BatchStatus Max(BatchStatus status1, BatchStatus status2)
 {
     return status1.IsGreaterThan(status2) ? status1 : status2;
 }
Beispiel #9
0
 /// <summary>
 ///Upgrade the status field if the provided value is greater than the
 /// existing one. Clients using this method to set the status can be sure
 /// that they don't overwrite a failed status with an successful one.
 /// </summary>
 /// <param name="status"></param>
 public void UpgradeStatus(BatchStatus status)
 {
     _status = _status.UpgradeTo(status);
 }
Beispiel #10
0
 /// <summary>
 /// 	  Method used to move status values through their logical progression, and
 /// override less severe failures with more severe ones. This value is
 /// compared with the parameter and the one that has higher priority is
 /// returned. If both are STARTED or less than the value returned is the
 /// largest in the sequence STARTING, STARTED, COMPLETED. Otherwise the value
 /// returned is the maximum of the two.
 /// </summary>
 /// <param name="other"> other another status to compare to </param>
 /// <returns> either this or the other status depending on their priority </returns>
 public BatchStatus UpgradeTo(BatchStatus other)
 {
     if (IsGreaterThan(Started) || other.IsGreaterThan(Started))
     {
         return Max(this, other);
     }
     // Both less than or equal to STARTED
     if (this == Completed || other == Completed)
     {
         return Completed;
     }
     return Max(this, other);
 }
Beispiel #11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="other">other a status value to compare</param>
 /// <returns>true if this is less or equal than other</returns>
 public bool IsLessThanOrEqualTo(BatchStatus other)
 {
     return(_rank <= other._rank);
 }
Beispiel #12
0
 /// <summary>
 /// </summary>
 /// <param name="other">other a status value to compare</param>
 /// <returns>true if this is less than other</returns>
 public bool IsLessThan(BatchStatus other)
 {
     return(_rank < other._rank);
 }
Beispiel #13
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="other"> other value to compare</param>
 /// <returns> true if this is greater than other</returns>
 public bool IsGreaterThan(BatchStatus other)
 {
     return(_rank > other._rank);
 }
Beispiel #14
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="other"> other value to compare</param>
 /// <returns> true if this is greater than other</returns>
 public bool IsGreaterThan(BatchStatus other)
 {
     return _rank > other._rank;
 }
 /// <summary>
 /// Custom constructor with message and Status.
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="status"></param>
 public JobInterruptedException(String msg, BatchStatus status)
     : base(msg)
 {
     _batchStatus = status;
 }
Beispiel #16
0
 /// <summary>
 ///Upgrade the status field if the provided value is greater than the
 /// existing one. Clients using this method to set the status can be sure
 /// that they don't overwrite a failed status with an successful one. 
 /// </summary>
 /// <param name="status"></param>
 public void UpgradeStatus(BatchStatus status)
 {
     _status = _status.UpgradeTo(status);
 }
Beispiel #17
0
        /// <summary>
        /// Retrieves all job executions for a given minimal status 
        /// </summary>
        /// <param name="jobIdentifier"></param>
        /// <param name="minStatus"></param>
        /// <param name="jobExplorer"></param>
        /// <returns></returns>
        private static List<JobExecution> GetJobExecutionsWithStatusGreaterThan(string jobIdentifier, BatchStatus minStatus, IJobExplorer jobExplorer)
        {

            long? executionId = GetLongIdentifier(jobIdentifier);
            if (executionId != null)
            {
                JobExecution jobExecution = jobExplorer.GetJobExecution(executionId.Value);
                if (jobExecution.Status.IsGreaterThan(minStatus))
                {
                    return new List<JobExecution> { jobExecution };
                }
                //empmty list
                return new List<JobExecution>();
            }

            int start = 0;
            int count = 100;
            List<JobExecution> executions = new List<JobExecution>();
            IList<JobInstance> lastInstances = jobExplorer.GetJobInstances(jobIdentifier, start, count);

            while (lastInstances.Any())
            {

                foreach (JobInstance jobInstance in lastInstances)
                {
                    IList<JobExecution> jobExecutions = jobExplorer.GetJobExecutions(jobInstance);
                    if (jobExecutions == null || !jobExecutions.Any())
                    {
                        continue;
                    }
                    executions.AddRange(jobExecutions.Where(jobExecution => jobExecution.Status.IsGreaterThan(minStatus)));
                }

                start += count;
                lastInstances = jobExplorer.GetJobInstances(jobIdentifier, start, count);

            }

            return executions;

        }
 /// <summary>
 /// Custom constructor with message and Status.
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="status"></param>
 public JobInterruptedException(String msg, BatchStatus status)
     : base(msg)
 {
    _batchStatus = status;
 }
Beispiel #19
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="other">other a status value to compare</param>
 /// <returns>true if this is less or equal than other</returns>
 public bool IsLessThanOrEqualTo(BatchStatus other)
 {
     return _rank <= other._rank;
 }
Beispiel #20
0
 /// <summary>
 /// </summary>
 /// <param name="other">other a status value to compare</param>
 /// <returns>true if this is less than other</returns>        
 public bool IsLessThan(BatchStatus other)
 {
     return _rank < other._rank;
 }
Beispiel #21
0
 /// <summary>
 ///  Signals the JobExecution to stop. Iterates through the associated
 /// StepExecutions, calling StepExecution#SetTerminateOnly().
 /// </summary>
 public void Stop()
 {
     foreach (StepExecution stepExecution in _stepExecutions)
     {
         stepExecution.SetTerminateOnly();
     }
     _status = BatchStatus.Stopping;
 }
Beispiel #22
0
 /// <summary>
 /// return max BatchStatus from 2
 /// </summary>
 /// <param name="status1"></param>
 /// <param name="status2"></param>
 /// <returns></returns>
 public static BatchStatus Max(BatchStatus status1, BatchStatus status2)
 {
     return(status1.IsGreaterThan(status2) ? status1 : status2);
 }