Пример #1
0
        /// <summary>
        /// 添加决策表
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public JsonResult AddDecisionMatrix(BizRuleDecisionMatrixViewModel model)
        {
            return(ExecuteFunctionRun(() => {
                ActionResult result = new ActionResult(false, "");

                BizRuleTable Rule = Engine.BizBus.GetBizRule(model.RuleCode);//业务规则

                if (string.IsNullOrEmpty(model.Code))
                {
                    result.Message = "msgGlobalString.InvalidCode";
                    return Json(result);
                }

                if (Rule.GetDecisionMatrix(model.Code) != null)
                {
                    result.Message = "msgGlobalString.CodeExisted";
                    return Json(result);
                }

                //决策表必须以字母开始,不让创建到数据库表字段时报错
                System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("^[a-zA-Z\\u4e00-\\u9fa5][0-9a-zA-Z\\u4e00-\\u9fa5_]*$");
                if (!regex.Match(model.Code).Success)
                {
                    result.Success = false;
                    result.Message = "EditBizObjectSchemaProperty.Msg4";
                    return Json(result);
                }

                //决策表名称不能含有特殊字符
                if (!regex.Match(model.DisplayName).Success)
                {
                    result.Success = false;
                    result.Message = "msgGlobalString.NameInValid";
                    return Json(result);
                }

                OThinker.H3.BizBus.BizRule.BizRuleDecisionMatrix matrix = OThinker.H3.BizBus.BizRule.DecisionMatrixFactory.Create(
                    (DecisionMatrixType)Enum.Parse(typeof(DecisionMatrixType),
                                                   model.DecisionMatrixType),
                    model.Code);
                matrix.DisplayName = model.DisplayName;
                matrix.Description = model.Description;
                matrix.DecisionMatrixScope = (DecisionMatrixScope)Enum.Parse(typeof(DecisionMatrixScope), model.Scope);
                if (!Rule.AddDecisionMatrix(matrix))
                {
                    result.Message = "msgGlobalString.SaveFailed";
                    return Json(result);
                }
                if (!this.Engine.BizBus.UpdateBizRule(Rule))
                {
                    result.Message = "msgGlobalString.SaveFailed";
                    return Json(result);
                }
                result.Success = true;
                result.Message = "msgGlobalString.SaveSucced";
                return Json(result);
            }));
        }
Пример #2
0
        /// <summary>
        /// 加载决策表信息
        /// </summary>
        /// <param name="ruleCode"></param>
        /// <param name="matrixCode"></param>
        /// <returns></returns>
        public JsonResult LoadDecisionMatrixInfo(string ruleCode, string matrixCode)
        {
            return(ExecuteFunctionRun(() =>
            {
                BizRuleTable Rule = Engine.BizBus.GetBizRule(ruleCode);
                BizRuleDecisionMatrix DecisionMatrix = Rule.GetDecisionMatrix(matrixCode);
                if (DecisionMatrix == null)
                {
                    return null;
                }

                BizRuleDecisionMatrixViewModel model = new BizRuleDecisionMatrixViewModel();
                model.ObjectID = DecisionMatrix.GetHashCode().ToString();//判断是否新增使用,可随便赋值
                model.Code = DecisionMatrix.Code;
                model.RuleCode = ruleCode;
                model.RowExecutionType = DecisionMatrix.RowExecutionType.ToString();
                model.ColumnExecutionType = DecisionMatrix.ColumnExecutionType.ToString();
                model.DisplayName = DecisionMatrix.DisplayName;
                model.Description = DecisionMatrix.Description;
                model.DecisionMatrixType = DecisionMatrix.MatrixType.ToString();
                model.Scope = DecisionMatrix.DecisionMatrixScope.ToString();
                switch (DecisionMatrix.MatrixType)
                {
                case DecisionMatrixType.Script:
                    model.ResultField = "";
                    break;

                case DecisionMatrixType.SelectiveArray:

                    model.ResultField = ((SelectiveArrayDecisionMatrix)DecisionMatrix).ResultElementData;
                    break;

                case DecisionMatrixType.SortedArray:

                    model.ResultField = ((SortedArrayDecisionMatrix)DecisionMatrix).ResultElementData;
                    break;

                default:
                    throw new NotImplementedException();
                }

                return Json(model, JsonRequestBehavior.AllowGet);
            }));
        }
Пример #3
0
        /// <summary>
        /// 更新决策表
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public JsonResult EditDecisionMatrix(BizRuleDecisionMatrixViewModel model)
        {
            return(ExecuteFunctionRun(() =>
            {
                ActionResult result = new ActionResult(false, "");

                BizRuleTable Rule = Engine.BizBus.GetBizRule(model.RuleCode);//业务规则


                if (string.IsNullOrEmpty(model.Code))
                {
                    result.Message = "msgGlobalString.InvalidCode";
                    return Json(result);
                }

                BizRuleDecisionMatrix matrix = Rule.GetDecisionMatrix(model.Code);//决策表

                //决策表名称不能含有特殊字符
                System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("^[a-zA-Z\\u4e00-\\u9fa5][0-9a-zA-Z\\u4e00-\\u9fa5_]*$");
                if (!regex.Match(model.DisplayName).Success)
                {
                    result.Success = false;
                    result.Message = "msgGlobalString.NameInValid";
                    return Json(result);
                }

                matrix.DisplayName = model.DisplayName;
                matrix.Description = model.Description;
                //matrix.MatrixType = (DecisionMatrixType)Enum.Parse(typeof(DecisionMatrixType), model.DecisionMatrixType);

                matrix.RowExecutionType = (ExecutionType)Enum.Parse(typeof(ExecutionType), model.RowExecutionType);
                matrix.ColumnExecutionType = (ExecutionType)Enum.Parse(typeof(ExecutionType), model.ColumnExecutionType);
                matrix.DecisionMatrixScope = (DecisionMatrixScope)Enum.Parse(typeof(DecisionMatrixScope), model.Scope);
                // 保存结果的字段
                switch (matrix.MatrixType)
                {
                case DecisionMatrixType.Script:
                    break;

                case DecisionMatrixType.SelectiveArray:
                    ((SelectiveArrayDecisionMatrix)matrix).ResultElementData = model.ResultField;
                    break;

                case DecisionMatrixType.SortedArray:
                    ((SortedArrayDecisionMatrix)matrix).ResultElementData = model.ResultField;
                    break;

                default:
                    throw new NotImplementedException();
                }

                bool flag = this.Engine.BizBus.UpdateBizRule(Rule);
                if (flag)
                {
                    result.Success = true;
                    result.Message = "msgGlobalString.SaveSucced";
                }
                else
                {
                    result.Success = false;
                    result.Message = "msgGlobalString.SaveFailed";
                }
                return Json(result);
            }));
        }