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); } }
/// 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; } }