public AlphaBuilderContext <TFact> Build(IRuntimeBuilder builder, AlphaBuilderContext <TFact> context)
        {
            foreach (var condition in _conditions)
            {
                context = builder.BuildSelectionNode(context, condition.ConditionExpression);
            }

            return(context);
        }
Пример #2
0
        public void Apply(IRuntimeBuilder builder)
        {
            var context = builder.CreateContext();

            context.AddParameter(_ruleFact.Parameter);

            builder.BuildTypeNode <T>(context);

            builder.BuildSelectionNode(context, _conditionExpression);



//            protected override void VisitPattern(ReteBuilderContext context, PatternElement element)
//        {
//            if (element.Source == null)
//            {
//                context.CurrentAlphaNode = _root;
//                context.RegisterDeclaration(element.Declaration);
//
//                BuildTypeNode(context, element.ValueType);
//                List<ConditionElement> alphaConditions = element.Conditions.Where(x => x.References.Count() == 1).ToList();
//                foreach (var alphaCondition in alphaConditions)
//                    BuildSelectionNode(context, alphaCondition);
//                BuildAlphaMemoryNode(context);
//
//                List<ConditionElement> betaConditions = element.Conditions.Where(x => x.References.Count() > 1).ToList();
//                if (betaConditions.Count > 0)
//                    BuildJoinNode(context, betaConditions);
//            }
//            else
//            {
//                if (element.Conditions.Any())
//                {
//                    BuildSubnet(context, element.Source);
//                    context.RegisterDeclaration(element.Declaration);
//
//                    BuildJoinNode(context, element.Conditions);
//                }
//                else
//                {
//                    Visit(context, element.Source);
//                    context.RegisterDeclaration(element.Declaration);
//                }
//            }
//        }
        }