Ejemplo n.º 1
0
        /// <summary>
        ///     Runs all steps and user interaction that is required during the conversion
        /// </summary>
        public WorkflowResult RunWorkflow(Job job)
        {
            try
            {
                _stopwatch = new Stopwatch();
                _stopwatch.Start();
                JobEventsManager.RaiseJobStarted(job, Thread.CurrentThread.ManagedThreadId.ToString());

                PrepareAndRun(job);
            }
            catch (AbortWorkflowException ex)
            {
                // we need to clean up the job when it was cancelled
                _logger.Warn(ex.Message + " No output will be created.");
                WorkflowResult = WorkflowResult.AbortedByUser;

                SendJobEvents(job);
            }
            catch (WorkflowException ex)
            {
                _logger.Error(ex.Message);
                WorkflowResult = WorkflowResult.Error;

                SendJobEvents(job);
            }
            catch (ProcessingException ex)
            {
                var errorMessage = ex.ErrorCode + " / " + ex.Message;
                if (ex.InnerException != null)
                {
                    errorMessage += Environment.NewLine + ex.InnerException;
                }
                _logger.Error(errorMessage);

                LastError = ex.ErrorCode;

                HandleError(ex.ErrorCode);
                WorkflowResult = WorkflowResult.Error;

                SendJobEvents(job);
            }
            catch (ManagePrintJobsException)
            {
                throw;
            }
            catch (InterruptWorkflowException)
            {
                throw;
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
                WorkflowResult = WorkflowResult.Error;
                SendJobEvents(job);

                throw;
            }

            return(WorkflowResult);
        }
Ejemplo n.º 2
0
        private void SendJobEvents(Job job)
        {
            _stopwatch.Stop();
            var elapsedTime = TimeSpan.FromTicks(_stopwatch.ElapsedMilliseconds);

            switch (WorkflowResult)
            {
            case WorkflowResult.AbortedByUser:
                JobEventsManager.RaiseJobFailed(job, elapsedTime, FailureReason.AbortedByUser);
                break;

            case WorkflowResult.Error:
                JobEventsManager.RaiseJobFailed(job, elapsedTime, FailureReason.Error);
                break;

            case WorkflowResult.Finished:
                JobEventsManager.RaiseJobCompleted(job, elapsedTime);
                break;
            }
        }