Exemplo n.º 1
0
        /// <summary>
        /// Call to listeners that might add some post execution behaviour.
        /// </summary>
        /// <param name="execution"></param>
        private void HandlePostExecution(JobExecution execution)
        {
            try
            {
                if (execution.Status.IsLessThanOrEqualTo(BatchStatus.Stopped) &&
                    !execution.StepExecutions.Any())
                {
                    ExitStatus exitStatus    = execution.ExitStatus;
                    ExitStatus newExitStatus =
                        ExitStatus.Noop.AddExitDescription("All steps already completed or no steps configured for this job.");
                    execution.ExitStatus = exitStatus.And(newExitStatus);
                }
                execution.EndTime = DateTime.Now;

                try
                {
                    _listener.AfterJob(execution);
                }
                catch (Exception e)
                {
                    Logger.Error(e, "Exception encountered in afterStep callback");
                }

                JobRepository.Update(execution);
                Logger.Debug("Current job execution: {0}", execution);
            }
            finally
            {
                JobSynchronizationManager.Release();
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Executes job.
 /// </summary>
 /// <param name="execution"></param>
 public void Execute(JobExecution execution)
 {
     Logger.Debug("Job execution starting: {0}", execution.JobInstance.JobName);
     JobSynchronizationManager.Register(execution);
     try
     {
         JobParametersValidator.Validate(execution.JobParameters);
         if (execution.Status != BatchStatus.Stopping)
         {
             HandleExecution(execution);
         }
         else
         {
             execution.Status     = BatchStatus.Stopped;
             execution.ExitStatus = ExitStatus.Completed;
             Logger.Debug("Job execution was stopped: {0}", execution.JobInstance.JobName);
         }
     }
     catch (JobInterruptedException e)
     {
         HandleJobInterruptedException(execution, e);
     }
     catch (Exception t)
     {
         HandleException(execution, t);
     }
     finally
     {
         HandlePostExecution(execution);
     }
 }
Exemplo n.º 3
0
 // Retrieves the job context.
 private ExecutionContext GetJobContext()
 {
     if (_jobContext == null)
     {
         _jobContext = JobSynchronizationManager.GetContext().JobExecution.ExecutionContext;
     }
     return(_jobContext);
 }