On Thursday, October 9, 2003, at 06:33 PM, [EMAIL PROTECTED] wrote:
If you can split rule-2 into two rules, you can say something like
(defrule rule-2a (MyObj (id ?id) (OBJECT ?obj) ) (id ?id) (not (first-id ?id)) => (assert (first-id ?id)) )
(defrule rule-2b (MyObj (id ?id) (OBJECT ?obj) ) (exists (first-id ?id)) => (myfunction ?obj) )
I *think* this is equivalent to what you're trying to do.
I think David Korz wrote:I want to have a rule that fires for a definstance when it is created and other rules from when it is subsequently updated. The update rules should not fire when the definstance is created, only when it is updated. I can get a rule to first just once for a definstance but the only way I could get a rule to fire only on updates was to use a defquery on the RHS. Is there a better way to do this?
MyObj is the definstance for a bean with id as a property.
; Rule that runs once for a definstance. ; Assert a fact so we never do it twice. (defrule rule-1 (MyObj (id ?id) (OBJECT ?obj) ) (not (id ?id)) => (assert (id ?id)) (myfunction1 ?obj) )
; Rule for updates. (defrule rule-2 (MyObj (id ?id) (OBJECT ?obj) ) (id ?id) => (bind ?i (count-query-results find-first-id ?id)) (if (> ?i 0) then (myfunction2 ?obj) else (assert (first-id ?id)) ) )
(defquery find-first-id "Look for first-id fact for id" (declare (variables ?id)) (first-id ?id) )
--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------
--------------------------------------------------------- Ernest Friedman-Hill Distributed Systems Research Phone: (925) 294-2154 Sandia National Labs FAX: (925) 294-2234 PO Box 969, MS 9012 [EMAIL PROTECTED] Livermore, CA 94550 http://herzberg.ca.sandia.gov
--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------
-------------------------------------------------------------------- To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]' in the BODY of a message to [EMAIL PROTECTED], NOT to the list (use your own address!) List problems? Notify [EMAIL PROTECTED] --------------------------------------------------------------------
