/// <summary> /// Recursively execute a list of scripts; will set section.Success /// </summary> /// <param name="scripts">The section.Scripts</param> /// <param name="section">The section itself, used to set section.Success</param> void RecurseScripts(List <Script> scripts, Section section, IConnectionSettings cs) { foreach (Script s in scripts) { OnStepProgress("RecurseScripts", string.Format("Starting Script:{0}", s.Path)); IScriptProcessor p = ScriptProcessorUtil.GetProcessorInstance(_wfp.DatabaseType); p.PathHelper = _ph; p.WorkflowParameters = _wfp; p.StepProgress += p_StepProgress; p.Start(s, cs, _wfp.AuditProcedures, _variables); OnStepProgress("RecurseScripts", string.Format("Finished Script:{0}, Success:{1}", s.Path, s.Success)); if (s.Success) { RecurseScripts(s.SuccessScripts, section, cs); } else { if (s.FailBranchOnError) { if (s.FailSectionOnError) { section.Success = false; } break; } else { RecurseScripts(s.FailScripts, section, cs); } } } }