Thank you very much for this answer. It seems like 'forall' will fire the rule
only if all the 'bag-of-items' facts are validated (i.e., if all of them have
'item' facts with the names listed in their 'names' slot). Is that correct?
If yes, then what I am trying to do is slightly different. I do expect to have
some of the 'bag-of-items' facts failing the validation. What I want is to act
upon those who pass (and also, incidentally, on those who do not pass).
Is there a way to keep track of which, among all the 'bag-of-items' facts, are
validated by the 'forall' CE?
ps: 'dynamic' may be a poor choice of words. I meant that the LHS had to
dynamically adapt to the content of a fact's multislot, different from one fact
On Jul 30, 2013, at 8:21 AM, "Friedman-Hill, Ernest [via Jess]"
> Not sure what "dynamic" means in this context. But you can use the "forall"
> conditional element to implement this rule. You could read the LHS here as
> "For all values of ?name in bag-of-items, there's a corresponding item fact."
> (defrule check-bag-valid
> (bag-of-items (names $? ?name $?))
> (item (name ?name)))
> (printout t "The bag is valid" crlf))
> NOTE: Like many complex Jess rules, this one won't fire unless before adding
> your facts you've executed the "(reset)" command to asset (initial-fact).
View this message in context:
Sent from the Jess mailing list archive at Nabble.com.