Example #1
0
        public void WaitForTask(
            [Parameter("The task id to wait for")]
            int taskId,
            IOutput output)
        {
            TaskInfo task = GetTasks(ETaskType.All, ETaskStatus.Running, null, null, false).
                            FirstOrDefault(t => t.TaskId == taskId);

            if (task != null)
            {
                var pm = new ProgressMonitor(output);
                pm.MonitorProgress((bool cancel, out bool isRunning) => {
                    int progress;

                    progress  = GetTaskProgress(task);
                    isRunning = task.TaskStatus == ETaskStatus.Running;
                    if (cancel && isRunning)
                    {
                        CancelRunningTask(task.TaskId);
                    }

                    return(progress);
                });
                output.IterationComplete();
            }
            else
            {
                _log.InfoFormat("No running task was found with task id {0}", taskId);
            }
        }
Example #2
0
        /// Monitors the progress of an EA extract
        private void MonitorEAExtract(IOutput output)
        {
            int    errorCode      = 0;
            bool   isRunning      = false;
            double numComplete    = 0;
            double numRecords     = 0;
            var    status         = EA_TASK_STATUS_FLAGS.EA_TASK_STATUS_INITIALIZING;
            var    taskStatus     = EEATaskStatus.Initializing;
            var    lastTaskStatus = EEATaskStatus.Initializing;

            output.InitProgress(taskStatus.ToString());
            var pm = new ProgressMonitor(output);

            pm.MonitorProgress((bool cancel, out bool running) => {
                HFM.Try("Retrieving task status",
                        () => HsvStarSchemaACM.GetAsynchronousTaskStatus(out status, out numRecords,
                                                                         out numComplete, out isRunning, out errorCode));
                taskStatus = (EEATaskStatus)status;
                running    = isRunning;

                if (cancel && running)
                {
                    HFM.Try("Cancelling task", () => HsvStarSchemaACM.QuitAsynchronousTask());
                }
                else if (taskStatus != lastTaskStatus)
                {
                    switch (taskStatus)
                    {
                    case EEATaskStatus.Complete:
                    case EEATaskStatus.CompleteWithErrors:
                    case EEATaskStatus.Cancelled:
                        break;

                    default:
                        _log.InfoFormat("Extract Status: {0} complete", lastTaskStatus);
                        output.Operation = taskStatus.ToString();
                        break;
                    }
                    lastTaskStatus = taskStatus;
                }
                return((int)(numComplete / numRecords * 100));
            });
            output.EndProgress();

            switch (taskStatus)
            {
            case EEATaskStatus.Complete:
                _log.Info("Star schema extract completed successfully");
                break;

            case EEATaskStatus.CompleteWithErrors:
                _log.Error("Star schema extract completed with errors");
                throw new HFMException(errorCode);

            case EEATaskStatus.Cancelled:
                _log.Warn("Star schema extract was cancelled");
                break;
            }
        }