Example #1
0
 public Engine()
 {
     notifier        = GetNotifier();
     executer        = GetExecuter();
     javaScript      = GetJavaScript();
     nodeJS          = GetNodeJS();
     webService      = GetWebService();
     step            = GetStep();
     document        = GetDocument();
     approvalProcess = GetApprovalProcess();
     xmlDocument     = GetXmlDocument();
     validator       = GetValidator();
     parser          = GetLogicalParser();
 }
Example #2
0
        public void Validate(object controller, Dictionary <string, Parameter> parameters, View view, Dictionary <string, object> values, DataRow prevRow, LogicalParser parser, string pk, int currentUserId, string currentUserRole)
        {
            //string message = string.Empty;
            //string prefix = string.Empty;
            //string postfix = string.Empty;
            //List<string> expressions = parameters.Keys.ToList();
            //Dictionary<string, string> displayNames = new Dictionary<string,string>();

            //foreach (string fieldName in values.Keys)
            //{
            //    if (view.Fields.ContainsKey(fieldName))
            //    {
            //        displayNames.Add(fieldName, view.Fields[fieldName].DisplayName);
            //    }
            //}

            //bool hasErrors = false;

            //if (parameters.ContainsKey("prefix"))
            //{
            //    prefix = parameters["prefix"];
            //    expressions.Remove("prefix");
            //}

            //if (parameters.ContainsKey("postfix"))
            //{
            //    postfix = parameters["postfix"];
            //    expressions.Remove("postfix");
            //}


            //foreach (string expression in expressions)
            //{
            //    if (!parser.Check(expression.Replace(values)))
            //    {
            //        hasErrors = true;
            //        message += parameters[expression].Replace(displayNames) + "<br>";
            //    }
            //}

            //message = prefix + "<br>" + message + "<br>" + postfix;

            bool   hasErrors = false;
            string message   = GetMessage(controller, parameters, view, values, prevRow, parser, out hasErrors, pk, currentUserId, currentUserRole);

            if (hasErrors)
            {
                throw new WorkflowEngineException(message);
            }
        }
Example #3
0
        public string GetMessage(object controller, Dictionary <string, Parameter> parameters, View view, Dictionary <string, object> values, DataRow prevRow, LogicalParser parser, out bool hasErrors, string pk, int currentUserId, string currentUserRole)
        {
            string        message     = string.Empty;
            string        prefix      = string.Empty;
            string        postfix     = string.Empty;
            List <string> expressions = parameters.Keys.ToList();
            Dictionary <string, string> displayNames = new Dictionary <string, string>();

            if (values != null)
            {
                foreach (Field field in view.Fields.Values)
                {
                    displayNames.Add(field.Name, field.DisplayName);
                }
            }

            if (parameters.ContainsKey("prefix"))
            {
                prefix = parameters["prefix"].Value;
                expressions.Remove("prefix");
            }

            if (parameters.ContainsKey("postfix"))
            {
                postfix = parameters["postfix"].Value;
                expressions.Remove("postfix");
            }

            hasErrors = false;

            if (controller is Durados.Workflow.INotifier)
            {
                foreach (string expression in expressions)
                {
                    string template = expression.ReplaceAllTokens(view, values, pk, currentUserId.ToString(), view.Database.GetCurrentUsername(), currentUserRole, prevRow);
                    template = template.Replace(Engine.AsToken(values), ((Durados.Workflow.INotifier)controller).GetTableViewer(), view);
                    if (!parser.Check(template.ReplaceWithoutPrefix(view, values, prevRow)))
                    {
                        hasErrors = true;
                        message  += parameters[expression].Value.Replace(displayNames);
                    }
                }
            }

            message = prefix + message + postfix;

            return(message);
        }