コード例 #1
0
        /// <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);
                    }
                }
            }
        }