Beispiel #1
0
        public bool IsAFact(Fact fact)
        {
            if (this.facts.Contains(fact))
            {
                return(true);
            }

            NameVerbValueFact namefact = (NameVerbValueFact)fact;

            return(namefact.IsSatisfiedByContext(this.context));
        }
Beispiel #2
0
        private void ProcessRetractedFact(NameVerbValueFact fact)
        {
            IList <Rule> newretracted = new List <Rule>();

            foreach (var rule in this.fired)
            {
                if (rule.Conditions.Any(c => c is NameVerbValueFact && ((NameVerbValueFact)c).Name == fact.Name))
                {
                    if (rule.RetractIfNotReady(this))
                    {
                        newretracted.Add(rule);
                    }
                }
            }

            foreach (var rule in newretracted)
            {
                this.fired.Remove(rule);
                this.notfired.Add(rule);
            }
        }