Ejemplo n.º 1
0
 public RatingEngineCompiler(IRulesEngineCodeProvider codeProvider, RuleEngineCodeModel rulesEngineCodeModel)
 {
     RuleEngineCodeModel = rulesEngineCodeModel;
     CodeProvider = codeProvider;
     if (codeProvider == null)
         throw new Exception("Code Provider cannot be null");
 }
Ejemplo n.º 2
0
        public string GetCode(RuleEngineCodeModel model)
        {
            //var ruleBooks = decorator.GetRuleBooks().Select(
            //    p => new RuleBookTemplateModel(
            //             p.Name, decorator.GetRuleBookRules(Convert.ToInt32((string) p.Id), null).ToArray(),null
            //             )
            //    ).ToArray();

            //var model = new RuleEngineCodeModel()
            //                {
            //                    RuleBooks = ruleBooks,
            //                    BaseLookupTables =
            //                        decorator.DecorateTables(false,
            //                                                 ruleBooks.SelectMany(p=>p.Lookups).ToArray()).ToArray()
            //                };

            var codeGenerator = new RulesEngineCode()
                                    {
                                        Model = model,
                                        Context = new RulesEngineCodeContext("TESTRATER")
                                    };
            var result = codeGenerator.TransformText();
            return result;
        }
Ejemplo n.º 3
0
 public RatingEngineCompiler(RuleEngineCodeModel rulesEngineCodeModel)
     : this(new RulesEngineCodeProvider(), rulesEngineCodeModel)
 {
 }
Ejemplo n.º 4
0
        /// <summary>
        /// A simple method to data from both lookup repository and engine repository to provide a combined model for compiling.
        /// </summary>
        /// <param name="nameSpace"></param>
        /// <param name="effectiveDate"></param>
        /// <param name="ruleBookIds"></param>
        /// <returns></returns>
        public static RuleEngineCodeModel GetRuleEngineCodeModel(string nameSpace, DateTime effectiveDate, string[] ruleBookIds = null)
        {
            var lookupRepository = GetLookupRepository(effectiveDate);
            var engineRepository = GetEngineRepository(effectiveDate);
            var rbs = engineRepository.GetAllRuleBooks().ToArray();
            RuleBookTemplateModel[] ruleBooks = null;

            if (ruleBookIds != null)
            {
                ruleBooks = rbs.Where(p => ruleBookIds.Contains(p.Id)).Select(
                           p => new RuleBookTemplateModel(
                                        p.Name, "CommonRuleBook",
                                        RuleHelper.SortRules(engineRepository.GetRuleBookRules(Convert.ToInt32((string)p.Id), null).ToArray()).ToArray(),
                                        null
                                    )
                        ).ToArray();
            }
            else
            {
                ruleBooks = rbs.Select(
                           p => new RuleBookTemplateModel(
                                        p.Name, "CommonRuleBook",
                                        RuleHelper.SortRules(engineRepository.GetRuleBookRules(Convert.ToInt32((string)p.Id), null).ToArray()).ToArray(),
                                        null
                                    )
                        ).ToArray();
            }

            var model = new RuleEngineCodeModel()
                            {
                                EffectiveDate = effectiveDate,
                                Namespace = nameSpace,
                                RuleBooks = ruleBooks,
                                BaseLookupTables = lookupRepository.GetRatingTables().
                                    Select(p => lookupRepository.GetLookupTable(p.ChangeId)).ToArray()
                            };
            return model;
        }