Je suis nouveau à JESS et je connais un peu de sa fonctionnalité. J'ai un programme qui demande un numéro d'identification d'étudiant et le programme va et reçoit les sujets de l'étudiant. Le fait est qu'à la fin de la procédure, le programme demande à l'utilisateur s'il veut obtenir les sujets d'un autre étudiant.Les règles activent mais ne déclenchent pas dans JESS
Si l'utilisateur veut entrer un autre étudiant, il reviendra à la première règle qui a été déclenchée mais quand j'ai essayé, la règle a seulement activé et n'a pas été déclenchée.
Quel pourrait être le problème? Je me suis assuré qu'il y avait (course) bien sûr.
Voici mon code.
(defrule check-subject
?a <- (phase check-back)
?stud <- (lookupID (id ?id))
(student-information (id-number ?id)
(course ?course)
(subjects-taken $?taken)
(year ?year)
(semester ?sem))
(prospectus-information (curriculum-name ?course)
(1st-year-1st-sem-subjects $?subjects1))
=>
(printout t "Student took: " (intersection$ $?taken $?subjects1) crlf)
(printout t "Student flunked: " (complement$ $?taken $?subjects1) crlf)
(assert (back-subject (complement$ $?taken $?subjects1)))
(retract ?a ?stud)
(ask))
et moi avons la fonction demander
(deffunction ask()
(printout t "Consult another? (y/n) ")
(if (eq (read) y)
then (assert (phase choose-student))))
Et mon defrule lorsque la phase choisissez-étudiant est affirmé
(defrule student-select
(phase choose-student)
=>
(printout t "Input Student ID: ")
(assert (lookupID (id (read)))))
La règle étudiant-select, active mais ne se déclenche. Mon programme s'arrête là.
Le problème est une erreur dans le code Jess. Cela peut être découvert et corrigé par des personnes pouvant regarder le code pertinent. – laune
J'ai modifié mon message. S'il te plaît, aide-moi. Je vous remercie. –
Assurez-vous d'accepter les réponses si elles sont utiles. Il n'est pas nécessaire d'écrire "Merci" - commentaires. – laune