Exemplo n.º 1
0
        private void Detection(WorkflowProcessModule ProcessInfo, CheckResult result)
        {
            if (string.IsNullOrEmpty(ProcessInfo.DomainXml))
            {
                return;
            }
            else if (string.IsNullOrEmpty(ProcessInfo.MainTable))
            {
                return;
            }
            else if (!string.IsNullOrEmpty(ProcessInfo.MainTable) && string.IsNullOrEmpty(ProcessInfo.MainTableXml))
            {
                result.ErrorList.Add("对应业务对象不存在!");
                return;
            }
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(ProcessInfo.DomainXml);
            XmlDocument xmlMain = new XmlDocument();

            xmlMain.LoadXml(ProcessInfo.MainTableXml);

            Verification(xmlDoc, xmlMain, result, "/BusinessType/Item/Domain");
            Verification(xmlDoc, xmlMain, result, "/BusinessType/Item/Group/Item/Domain");
        }
Exemplo n.º 2
0
 /// <summary>
 /// 循环验证input中所有属性与规则是否正确
 /// </summary>
 /// <param name="ProcessInfo"></param>
 /// <param name="xmlDoc"></param>
 /// <param name="inputAttrList"></param>
 /// <param name="obj"></param>
 public void InputAttrList(WorkflowProcessModule info, System.Xml.XmlDocument xmlDoc, List <Dictionary <string, object> > inputAttrList, CheckResult result)
 {
     foreach (Dictionary <string, object> inputAttr in inputAttrList)
     {
         int ItemI      = xmlDoc.SelectNodes("/BusinessType/Item/Domain[@name='" + inputAttr["dm_name_show_temp"].ToString() + "']").Count;
         int GroupItemI = xmlDoc.SelectNodes("/BusinessType/Item/Group/Item/Domain[@name='" + inputAttr["dm_name_show_temp"].ToString() + "']").Count;
         if (ItemI > 1 || GroupItemI > 1)
         {
             result.ErrorList.Add("DomainXml存在重复节点!");
         }
         //判定input中所有的值是否都在业务域中
         if (ItemI == 0 && GroupItemI == 0)
         {
             result.ErrorList.Add("dm_name_show_temp不在业务域中!");
         }
         else
         {
             //判定Input中是否存在规则中必须要存在的值
             Dictionary <string, string> dic = InputAttrRules(inputAttr, inputAttrList);
             if (dic == null || dic.Count == 0)
             {
                 return;
             }
             foreach (var item in dic)
             {
                 result.ErrorList.Add(item.Value);
             }
         }
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// html中内容进行检测
        /// </summary>
        /// <param name="ProcessInfo"></param>
        /// <param name="obj"></param>
        public void RegularExpressionRulesList(WorkflowProcessModule ProcessInfo, CheckResult result)
        {
            string htmlContent = ProcessInfo.htmlContent;

            if (string.IsNullOrEmpty(htmlContent))
            {
                return;
            }

            foreach (rulesitem rulesitem in GetHtmlContentConfig().rulesitems)
            {
                if (System.Text.RegularExpressions.Regex.Matches(htmlContent, rulesitem.rule, System.Text.RegularExpressions.RegexOptions.IgnoreCase).Count > 0)
                {
                    result.ErrorList.Add("html内容异常");
                }
            }
        }
Exemplo n.º 4
0
        public string CheckForm(string processModuleGuid)
        {
            try
            {
                ProcessInfo = ModuleList.Where(model => model.ProcessGUID == processModuleGuid).FirstOrDefault();


                var result = new CheckResult
                {
                    CheckRuleName   = "CheckForm",
                    ErrorList       = new List <string>(),
                    RepairParamList = new List <Dictionary <string, string> >()
                };

                ProcessInfo.htmlContent = new FormCheck.FormCheck().GetHtmlContent(ProcessInfo.DocumentPath);
                if (string.IsNullOrEmpty(ProcessInfo.htmlContent))
                {
                    result.ErrorList.Add("未设置对应HTML展示内容!");
                    return(JsonConvert.SerializeObject(result));
                }
                if (string.IsNullOrEmpty(ProcessInfo.DomainXml))
                {
                    result.ErrorList.Add("DomainXml为空!");
                    return(JsonConvert.SerializeObject(result));
                }

                Detection(ProcessInfo, result);
                RegularExpressionRulesList(ProcessInfo, result);

                HtmlDocument htmlDoc = new HtmlDocument();
                htmlDoc.LoadHtml(ProcessInfo.htmlContent);

                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(ProcessInfo.DomainXml);


                //找到所有的input
                HtmlNodeCollection inputs = htmlDoc.DocumentNode.SelectNodes("//input[@dm_type]");
                if (inputs != null)
                {
                    List <Dictionary <string, object> > domainList = new List <Dictionary <string, object> >();
                    foreach (HtmlNode input in inputs)
                    {
                        domainList.Add(GetInputInfo(input, result));
                    }

                    InputAttrList(ProcessInfo, xmlDoc, domainList, result);
                }

                return(JsonConvert.SerializeObject(result));
            }
            catch (Exception ex)
            {
                var data = new CheckResult
                {
                    CheckRuleName = "CheckForm",
                    ErrorList     = new List <string> {
                        ex.Message
                    },
                    RepairParamList = new List <Dictionary <string, string> >()
                };

                return(JsonConvert.SerializeObject(data));
            }
        }