public RuntimeTask Create(IProcessTask task, IStageArgs stageArgs) { //get the user configured Design Time arguments + stage specific arguments var args = new RuntimeArgumentCollection(task.GetAllArguments().ToArray(), stageArgs); //Create an instance of the the appropriate ProcessTaskType switch (task.ProcessTaskType) { case ProcessTaskType.Executable: return(new ExecutableRuntimeTask(task, args)); case ProcessTaskType.SQLFile: return(new ExecuteSqlFileRuntimeTask(task, args)); case ProcessTaskType.Attacher: return(new AttacherRuntimeTask(task, args, _repository.MEF)); case ProcessTaskType.DataProvider: return(new DataProviderRuntimeTask(task, args, _repository.MEF)); case ProcessTaskType.MutilateDataTable: return(new MutilateDataTablesRuntimeTask(task, args, _repository.MEF)); default: throw new Exception("Cannot create runtime task: Unknown process task type '" + task.ProcessTaskType + "'"); } }
/// <summary> /// Transition from the arguments defined in the data source (Catalogue Database) into a runtime state /// </summary> public RuntimeArgumentCollection(IArgument[] args, IStageArgs stageSpecificArgs) { StageSpecificArguments = stageSpecificArgs; Arguments = new HashSet <IArgument>(); if (!args.Any()) { return; } foreach (var processTaskArgument in args) { AddArgument(processTaskArgument); } }