Esempio n. 1
0
        /// <summary>
        /// 检查模板是否合法
        /// 【检验 并发】
        /// </summary>
        /// <returns>返回操作结果</returns>
        public string TemplateValidate()
        {
            // 用于控制并发,在开始的时候,压入栈,开始的时候压入栈,然后遇到并发结束出栈这出栈。
            // 如果并发结束出栈,而并发开始还没有加入,则记录错。
            var startAcvity = XmlHelper.GetStartActivit(_template);

            if (startAcvity == null)
            {
                return("模板必须有起始节点");
            }
            var model         = new RoutingModel(_template, startAcvity, true);
            var validatePlugs = new Dictionary <ValidateFunEnum, IRoutingValidate>()
            {
                { ValidateFunEnum.ParallelValidate, new ParallelRoutingValidate() },
                { ValidateFunEnum.PropertyValidate, new PropertyRoutingValidate() }
            };

            TransGraph(model, validatePlugs);

            var result = new ResultInfo();

            foreach (var iValidate in validatePlugs)
            {
                var validateResult = iValidate.Value.GetResult();
                if (validateResult.HasError)
                {
                    result.AppendError(validateResult.GetResult(Environment.NewLine));
                }
            }

            return(result.HasError ? result.GetResult(Environment.NewLine) : "并发验证通过");
        }