/// <summary> /// Async method to execute the operation /// </summary> /// <param name="sqlTask">Sql Task</param> /// <returns>Task Result</returns> public static async Task <TaskResult> ExecuteTaskAsync(SqlTask sqlTask) { sqlTask.AddMessage(SR.TaskInProgress, SqlTaskStatus.InProgress, true); ITaskOperation taskOperation = sqlTask.TaskMetadata.TaskOperation as ITaskOperation; TaskResult taskResult = null; if (taskOperation != null) { taskOperation.SqlTask = sqlTask; return(await Task.Factory.StartNew(() => { TaskResult result = new TaskResult(); try { if (string.IsNullOrEmpty(taskOperation.ErrorMessage)) { taskOperation.Execute(sqlTask.TaskMetadata.TaskExecutionMode); result.TaskStatus = SqlTaskStatus.Succeeded; } else { result.TaskStatus = SqlTaskStatus.Failed; result.ErrorMessage = taskOperation.ErrorMessage; } } catch (Exception ex) { result.TaskStatus = SqlTaskStatus.Failed; result.ErrorMessage = ex.Message; if (ex.InnerException != null) { result.ErrorMessage += Environment.NewLine + ex.InnerException.Message; } if (taskOperation != null && taskOperation.ErrorMessage != null) { result.ErrorMessage += Environment.NewLine + taskOperation.ErrorMessage; } } return result; })); } else { taskResult = new TaskResult(); taskResult.TaskStatus = SqlTaskStatus.Failed; } return(taskResult); }
/// <summary> /// Async method to cancel the operations /// </summary> public static async Task <TaskResult> CancelTaskAsync(SqlTask sqlTask) { ITaskOperation taskOperation = sqlTask.TaskMetadata.TaskOperation as ITaskOperation; TaskResult taskResult = null; if (taskOperation != null) { return(await Task.Factory.StartNew(() => { try { taskOperation.Cancel(); return new TaskResult { TaskStatus = SqlTaskStatus.Canceled }; } catch (Exception ex) { return new TaskResult { TaskStatus = SqlTaskStatus.Failed, ErrorMessage = ex.Message }; } })); } else { taskResult = new TaskResult(); taskResult.TaskStatus = SqlTaskStatus.Failed; } return(taskResult); }
/// <summary> /// Creates task metadata given the request parameters /// </summary> /// <param name="requestParam">Request parameters</param> /// <param name="taskName">Task name</param> /// <param name="taskOperation">Task operation</param> /// <param name="connectionService">Connection Service</param> /// <returns>Task metadata</returns> public static TaskMetadata Create(IRequestParams requestParam, string taskName, ITaskOperation taskOperation, ConnectionService connectionService, string targetLocation = null) { TaskMetadata taskMetadata = new TaskMetadata(); ConnectionInfo connInfo; connectionService.TryFindConnection( requestParam.OwnerUri, out connInfo); if (connInfo != null) { taskMetadata.ServerName = connInfo.ConnectionDetails.ServerName; } if (connInfo != null) { taskMetadata.DatabaseName = connInfo.ConnectionDetails.DatabaseName; } IScriptableRequestParams scriptableRequestParams = requestParam as IScriptableRequestParams; if (scriptableRequestParams != null && scriptableRequestParams.TaskExecutionMode == TaskExecutionMode.Script) { taskMetadata.Name = string.Format("{0} {1}", taskName, SR.ScriptTaskName); } else { taskMetadata.Name = taskName; } taskMetadata.TaskExecutionMode = scriptableRequestParams.TaskExecutionMode; taskMetadata.TaskOperation = taskOperation; taskMetadata.OwnerUri = requestParam.OwnerUri; taskMetadata.TargetLocation = targetLocation; return(taskMetadata); }
public TaskController(ITaskOperation itskop) { //taskOpObj = new TaskOperation(); taskOpObj = itskop; }