public void PrepareForExecution() { FailedExperimentalUnits = new List <ExperimentalUnit>(); // tasks, inputs and outputs foreach (ExperimentalUnit experiment in ExperimentalUnits) { HerdTask task = new HerdTask(); // We are assuming the same exe file is used in all the experiments!!! // IMPORTANT //Because the experiment file might well be outside the RLSimion folder structure //we need make all paths to experiment files relative and let the herd agent //know that they must be renamed task.Name = experiment.Name; task.Exe = experiment.SelectedVersion.ExeFile; task.Arguments = experiment.RelativeExperimentFileName + " -pipe=" + experiment.Name; task.Pipe = experiment.Name; task.AuthenticationToken = "";// HerdAgent.AuthenticationCode; //TODO: Add Settings? Tasks.Add(task); //////App Version requirements //Exe file AddInputFile(task.Exe); //Rename rules AddRenameRules(experiment.SelectedVersion.Requirements.RenameRules); //Input files AddInputFiles(experiment.SelectedVersion.Requirements.InputFiles); AddInputFile(experiment.ExperimentFileName); //No output files come from the app version requirements in principle //////Run-time requirements //Input files AddInputFiles(experiment.RunTimeReqs.InputFiles); AddOutputFiles(experiment.RunTimeReqs.OutputFiles); /////Fix relative paths outside RLSimion's folder structure //we add rename rules: // -for the experiment file itself if (experiment.ExperimentFileName != experiment.RelativeExperimentFileName && !RenameRules.Keys.Contains(experiment.ExperimentFileName)) { RenameRules.Add(experiment.ExperimentFileName, experiment.RelativeExperimentFileName); } // -for the output files foreach (string outputFile in OutputFiles) { string renamedFile = Folders.experimentRelativeDir + "/" + Herd.Utils.RemoveDirectories(outputFile, 2); if (outputFile != renamedFile && !RenameRules.Keys.Contains(outputFile)) { RenameRules.Add(outputFile, renamedFile); } } } }
/// <summary> /// 数据库字段重新命名 /// </summary> /// <param name="name"></param> /// <returns></returns> public string CleanName(string name) { string rename; if (RenameRules.TryGetValue(name, out rename)) { return(rename); } if (CleanExpressions.Count == 0) { return(name); } foreach (var regex in CleanExpressions.Where(r => !string.IsNullOrEmpty(r))) { if (Regex.IsMatch(name, regex)) { return(Regex.Replace(name, regex, "")); } } return(name); }