Ejemplo n.º 1
0
 public static bool IsOKForDelete(AutoBookStatuses status)
 {
     return(Array.IndexOf(
                new AutoBookStatuses[] {
         AutoBookStatuses.Idle,
         AutoBookStatuses.Fatal_Error
     }, status) != -1);
 }
Ejemplo n.º 2
0
 public static bool IsFreeStatus(AutoBookStatuses status)
 {
     return(Array.IndexOf(
                new AutoBookStatuses[] {
         AutoBookStatuses.Task_Completed,
         AutoBookStatuses.Task_Error,
         AutoBookStatuses.Idle
     }, status) != -1);
 }
Ejemplo n.º 3
0
 public static bool IsWorkingStatus(AutoBookStatuses status)
 {
     return(Array.IndexOf(
                new AutoBookStatuses[] {
         AutoBookStatuses.Idle,
         AutoBookStatuses.In_Progress,
         AutoBookStatuses.Task_Completed,
         AutoBookStatuses.Task_Error
     }, status) != -1);
 }
        public TaskResult Execute(TaskInstance taskInstance)
        {
            var    taskResult = new TaskResult();
            Guid   runId      = Guid.Empty;
            Guid   scenarioId = Guid.Empty;
            string autoBookId = String.Empty;

            try
            {
                StartActiveNotifier(taskInstance.Id);

                TaskUtilities.UpdateTaskInstanceStatus(taskInstance.Id, _repositoryFactory, TaskInstanceStatues.InProgress, null);

                // Read parameters
                runId      = new Guid(taskInstance.Parameters["RunId"]);
                scenarioId = new Guid(taskInstance.Parameters["ScenarioId"]);
                autoBookId = taskInstance.Parameters["AutoBookId"];
                AutoBookStatuses autoBookStatus = (AutoBookStatuses)Enum.Parse(typeof(AutoBookStatuses), taskInstance.Parameters["AutoBookStatus"], true);

                using var scope = _repositoryFactory.BeginRepositoryScope();
                // Get AutoBook instance
                var autoBookRepository = scope.CreateRepository <IAutoBookRepository>();
                var autoBook           = autoBookRepository.Get(autoBookId);

                RunInstance runInstance = _runInstanceCreator.Create(runId, scenarioId);

                // Check AutoBook status
                switch (autoBookStatus)
                {
                case AutoBookStatuses.Task_Completed:
                    runInstance.HandleCompletedSuccess();
                    break;

                case AutoBookStatuses.Task_Error:
                    runInstance.HandleCompletedTaskError();
                    break;

                case AutoBookStatuses.Fatal_Error:
                    runInstance.HandleCompletedFatalError(autoBook);
                    break;
                }

                TaskUtilities.UpdateTaskInstanceStatus(taskInstance.Id, _repositoryFactory,
                                                       TaskInstanceStatues.CompletedSuccess, DateTime.UtcNow);
                taskResult.Status = TaskInstanceStatues.CompletedSuccess;
            }
            catch (Exception exception)
            {
                _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForException(0, 0, string.Format("Error executing task for scenario completed (TaskInstanceID={0}, RunID={1}, ScenarioID={2}, AutoBookID={3})", taskInstance.Id, runId, scenarioId, autoBookId), exception));

                TaskUtilities.UpdateTaskInstanceStatus(taskInstance.Id, _repositoryFactory, TaskInstanceStatues.CompletedError, DateTime.UtcNow);
                taskResult.Status    = TaskInstanceStatues.CompletedError;
                taskResult.Exception = exception;
            }
            finally
            {
                StopActiveNotifier();
            }

            return(taskResult);
        }
Ejemplo n.º 5
0
        public static TaskInstance CreateScenarioCompletedTaskInstance(int tenantId, Guid runId, Guid scenarioId, string autoBookId, AutoBookStatuses autoBookStatus)
        {
            TaskInstance taskInstance = new TaskInstance()
            {
                Id          = Guid.NewGuid(),
                TaskId      = TaskIds.ScenarioCompleted,
                TimeCreated = DateTime.UtcNow,
                TenantId    = tenantId
            };

            taskInstance.Parameters.Add("RunId", runId.ToString());
            taskInstance.Parameters.Add("ScenarioId", scenarioId.ToString());
            taskInstance.Parameters.Add("AutoBookId", autoBookId);
            taskInstance.Parameters.Add("AutoBookStatus", autoBookStatus.ToString());
            return(taskInstance);
        }
Ejemplo n.º 6
0
        public void ChangeStatus(string autoBookId, AutoBookStatuses newStatus)
        {
            var autoBook = InternalGet(autoBookId);

            autoBook.Status = newStatus;
        }