Пример #1
0
        private GeneratorResult GenerateInternal()
        {
            var generatorResults = new GeneratorResult();
            var actions = arguments.TemplateInformation.Actions.ToList();
            var taskCounter = 0;

            foreach (var action in actions)
            {
                var allowContinue = true;
                var actionClass = GetActionFromTypeName(action.ActionType);

                progress((int)((100 / (double)actions.Count) * taskCounter), "Executing action: " + actionClass.ActionName);

                GeneratorActionResult actionResults = null;

                try
                {
                    actionResults = actionClass.ExecuteAction(arguments, arguments.InputValues, action.Parameters);
                }
                catch (Exception ex)
                {
                    allowContinue = false;
                    progress(-1, string.Format("Action '{0}' failed with message: {1}", actionClass.ActionName, ex.Message));
                }

                taskCounter++;

                if (allowContinue && (actionResults == null || actionResults.OperationSuccesfull))
                {
                    if (!continueAllowed.Invoke())
                    {
                        generatorResults.LastAction = actionClass;
                        generatorResults.OperationSuccesfull = false;

                        Rollback(actions, actionClass);
                        return generatorResults;
                    }

                    continue;
                }

                if (actionClass.AllowContinueAfterError)
                    progress(-1, string.Format("Action '{0}' failed, but is allowed to continue.", actionClass.ActionName));
                else
                {
                    generatorResults.LastAction = actionClass;
                    generatorResults.OperationSuccesfull = false;

                    Rollback(actions, actionClass);
                    return generatorResults;
                }
            }

            // Complete report
            progress(100, "");

            generatorResults.OperationSuccesfull = true;
            return generatorResults;
        }
Пример #2
0
        private GeneratorResult GenerateInternal()
        {
            var generatorResults = new GeneratorResult();
            var actions          = arguments.TemplateInformation.Actions.ToList();
            var taskCounter      = 0;

            foreach (var action in actions)
            {
                var allowContinue = true;
                var actionClass   = GetActionFromTypeName(action.ActionType);

                progress((int)((100 / (double)actions.Count) * taskCounter), "Executing action: " + actionClass.ActionName);

                GeneratorActionResult actionResults = null;

                try
                {
                    actionResults = actionClass.ExecuteAction(arguments, arguments.InputValues, action.Parameters);
                }
                catch (Exception ex)
                {
                    allowContinue = false;
                    progress(-1, string.Format("Action '{0}' failed with message: {1}", actionClass.ActionName, ex.Message));
                }

                taskCounter++;

                if (allowContinue && (actionResults == null || actionResults.OperationSuccesfull))
                {
                    if (!continueAllowed.Invoke())
                    {
                        generatorResults.LastAction          = actionClass;
                        generatorResults.OperationSuccesfull = false;

                        Rollback(actions, actionClass);
                        return(generatorResults);
                    }

                    continue;
                }

                if (actionClass.AllowContinueAfterError)
                {
                    progress(-1, string.Format("Action '{0}' failed, but is allowed to continue.", actionClass.ActionName));
                }
                else
                {
                    generatorResults.LastAction          = actionClass;
                    generatorResults.OperationSuccesfull = false;

                    Rollback(actions, actionClass);
                    return(generatorResults);
                }
            }

            // Complete report
            progress(100, "");

            generatorResults.OperationSuccesfull = true;
            return(generatorResults);
        }