Hi Tina,
I don't have the book in front of me, but I need to tell you: you
better be prepared to get your hands dirty! ;)
This example shows you a not() with 2 "and'ed" nested patterns
inside. To resolve that, classic Rete requires the use of a
"subnetwork". That is why your LIAN in step 1 has two outgoing
connections. To understand subnetworks, I suggest you take a look at
Robert Doorenbos' thesis "Production Matching for Large Learning
Systems", chapter 2.8: "Conjunctive Negations". The explanation there
is probably better than any explanation I could give you.
Let me know after you read that if you have any further questions
and we can try to clarify.
Edson
2010/10/26 Tina Vießmann <tviessmann(a)stud.hs-bremen.de>:
Hi,
I'm working through the explanations about Rete Trees in chapter 12 of
"Drools JBoss Rules 5.0 Developers Guide" on page 264-265. I have a
problem in understanding the input of the NotNode.
The rule says:
when
$address : Address ( addressLine == "Rossa Avenue" )
not (
$account : Account ( balance < 100 ) and
Customer ( accounts contains $account )
)
then
...
The related figure shows:
1. The Address object being processed and a tuple will be created by a
LeftInputAdapterNode.
2. The tuple of 1. will be joined with the Account fact with no
constraints (so that there's a tuple of size two?).
3. The tuple of 2. will be joined with the Customer fact with the
restriction 'accounts contains $account'. (That results in a tuple with
size 3!?)
4. The tuple of 3. will then be processed by a RightInputAdapterNode.
5. The tuple/fact from 3. will be processed using a NotNode together
with the Address-tuple from 1.
I don't understand while the tuple from 1. will in step 2 be joined with
the Account fact. I would have expected something like:
1. // same
2. The Account fact will be processed and a tuple will be created by a
LeftInputAdapterNode.
3. The Customer fact will be joined with the Account tuple with the
constraint 'accounts contains $address'. Resulting in a tuple.
4. // somehow the tuple from step 3 will be negated and joined with the
tuple from step 1.
Could anybody explain to me why it's done the way its drawn in the book?
Thank you! :)
Tina
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @
www.jboss.com