;(batch "modifyToEquality.clp") (clear) (reset) (watch all) (defclass Cheese org.drools.Cheese) (defclass CheeseEqual org.drools.CheeseEqual) (defrule r (logical (a) ) => (printout t "a -> Cheese" crlf) (definstance Cheese (new org.drools.Cheese "x" 1)) (definstance CheeseEqual (new org.drools.CheeseEqual "y" 2)) ) (defrule r1 (logical (b) ) => (printout t "b -> Cheese" crlf) (definstance Cheese (new org.drools.Cheese "x" 3)) (definstance CheeseEqual (new org.drools.CheeseEqual "y" 4)) ) (defrule r3 (c) ?f <- (Cheese (type "x") (price ?price&:(< ?price 3)) (OBJECT ?o)) => (printout t "c -> modify Cheese" crlf) (modify ?f (price (+ ?price 2))) ) (defrule r4 (c) ?f <- (CheeseEqual (type "y") (price ?price&:(< ?price 3)) (OBJECT ?o)) => (printout t "c -> modify Cheese" crlf) (modify ?f (price (+ ?price 5))) ) (definstance CheeseEqual (new org.drools.CheeseEqual "a" 2)) (defglobal ?*f* = (definstance CheeseEqual (new org.drools.CheeseEqual "b" 2))) (defrule r5 (d) => (modify ?*f* (type "a")) ) (reset) (run) (assert (a)) (run) (assert (b)) (run) (facts) ;(assert (c)) ;(run) ;(assert (d)) ;(run)