示例#1
0
 public virtual void resolveTemplates(Rete.Rete engine)
 {
     ICondition[] cnds = Conditions;
     for (int idx = 0; idx < cnds.Length; idx++)
     {
         ICondition cnd = cnds[idx];
         if (cnd is ObjectCondition)
         {
             ObjectCondition oc  = (ObjectCondition)cnd;
             Deftemplate     dft = (Deftemplate)engine.findTemplate(oc.TemplateName);
             if (dft != null)
             {
                 oc.Deftemplate = dft;
             }
         }
         else if (cnd is ExistCondition)
         {
             ExistCondition exc = (ExistCondition)cnd;
             Deftemplate    dft = (Deftemplate)engine.findTemplate(exc.TemplateName);
             if (dft != null)
             {
                 exc.Deftemplate = dft;
             }
         }
         else if (cnd is TemporalCondition)
         {
             TemporalCondition tempc = (TemporalCondition)cnd;
             Deftemplate       dft   = (Deftemplate)engine.findTemplate(tempc.TemplateName);
             if (dft != null)
             {
                 tempc.Deftemplate = dft;
             }
         }
     }
 }
示例#2
0
        public static IList <Object> generateFacts(IRule rule, Rete.Rete engine)
        {
            List <Object> facts = new List <Object>();

            if (rule != null)
            {
                ICondition[] conditions = rule.Conditions;
                for (int idx = 0; idx < conditions.Length; idx++)
                {
                    ICondition c = conditions[idx];
                    if (c is ObjectCondition)
                    {
                        ObjectCondition oc  = (ObjectCondition)c;
                        Deftemplate     tpl = (Deftemplate)engine.findTemplate(oc.TemplateName);
                        if (tpl.ClassName != null)
                        {
                            Object data = generateJavaFacts(oc, tpl, engine);
                            facts.Add(data);
                        }
                        else
                        {
                            IFact data = generateDeffact(oc, tpl, engine);
                            facts.Add(data);
                        }
                    }
                    else if (c is TestCondition)
                    {
                    }
                }
            }
            return(facts);
        }