Hi all,

I am a beginner at JESS and have a question about the comparing a global
variable I have, called ?*currentOpenToolbar*, via = and <>.  I can't figure
out why the global variable does not reflect any updates I make to it.
Please have a look at the code below.  It is a simple example where I have 2
rules; 1stTime and SubsequentTime.  1stTime is activated when the global
variable is set to its default value.  SubsequentTime SHOULD be activated at
all other times.  However, 1stTime is always being triggered, even though a
printout shows that my global variable is not set to the default value any
longer.

I'm sure it is something small I am missing.  Any idea what it is?!

Thanks.
---

(reset)
(defglobal ?*currentOpenToolbar* = MasterToolbar)

(deftemplate toDisplayToolbar
    (slot toolbar)
    (slot visible))

(defrule 1stTime
    (test (= ?*currentOpenToolbar* MasterToolbar))   ; <------------- ALWAYS
TRUE.  WHY??
    (toDisplayToolbar (toolbar ?toolbar) (visible ?v&:(eq ?v TRUE)))
    =>
    (printout t "1st Time" crlf)
    (bind ?*currentOpenToolbar* ?toolbar)
    (printout t "?*currentOpenToolbar is now " ?*currentOpenToolbar* crlf))

(defrule SubsequentTime
    (test (<> ?*currentOpenToolbar* MasterToolbar)) ;<--------- NEVER TRUE.
WHY??
    (toDisplayToolbar (toolbar ?toolbar) (visible ?v&:(eq ?v TRUE)))
    =>
    (printout t "Not1stTime" crlf)
    (bind ?*currentOpenToolbar* ?toolbar)
    (printout t "?*currentOpenToolbar is now " ?*currentOpenToolbar* crlf))

(watch facts)

(assert (toDisplayToolbar
        (toolbar PenToolbar)
        (visible FALSE)))

(assert (toDisplayToolbar
        (toolbar ShapeToolbar)
        (visible FALSE)))

(assert (toDisplayToolbar
        (toolbar TextToolbar)
        (visible FALSE)))

(run)

(assert (toDisplayToolbar
        (toolbar PenToolbar)
        (visible TRUE)))
(run)

(assert (toDisplayToolbar
        (toolbar ShapeToolbar)
        (visible TRUE)))
(run)

(assert (toDisplayToolbar
        (toolbar TextToolbar)
        (visible TRUE)))
(run)

Reply via email to