private int CanApply(Rule r) { int maxlevel = -1; // On vérifie si chaque prémises est vraie foreach (IFact f in r.Premises) { IFact foundFact = fDB.Search(f.Name()); if (foundFact == null) { // Ce fait n'existe pas dans la base actuellement if (f.Question() != null) { // On le demande à l'utilisateur // et on l'ajoute en base foundFact = FactFactory.Fact(f, this); maxlevel = Math.Max(maxlevel, 0); } else { // On sait que la régle ne s'applique pas return(-1); } } // On a un fait en base, on vérfie sa valeur if (!foundFact.Value().Equals(f.Value())) { // Elle ne correspond pas return(-1); } else { // Elle correspond maxlevel = Math.Max(maxlevel, foundFact.Level()); } } return(maxlevel); }
private int CanApply(Rule r) { int maxLevel = -1; // Se comprueba si se cumple cada premisa foreach (IFact f in r.Premises) { IFact foundFact = fDB.Search(f.Name()); if (foundFact == null) { // Este hecho no existe en la base actualmente if (f.Question() != null) { // Se le consulta al usuario // y se agrega a la base foundFact = FactFactory.Fact(f, this); fDB.AddFact(foundFact); maxLevel = Math.Max(maxLevel, 0); } else { // Se sabe que la regla no se aplica return(-1); } } // Tenemos un hecho en la base, verificamos su valor if (!foundFact.Value().Equals(f.Value())) { // No se corresponde return(-1); } else { // Se corresponde maxLevel = Math.Max(maxLevel, foundFact.Level()); } } return(maxLevel); }