Okay, as mentioned previously, drools is 100% New Code, still.

Instead of starting with Natural Language functionality, though,
I'm opting for the simpler java syntax, interpreted at run-time.

Instead of using BeanShell or some other black-box expression
interpreter, I'm of course, rolling my own.  

org.drools.exprtree.* now contains the expression tree for
java expressions.  (Well, most of them, so far, aside from
logic && and ||, and bitwsie stuff, at this point).  Any
parser can build them, and then the engine can muck with
them as it likes.

Building my own trees gives me better access for decomposing
complex expressions into an effecient RETE network.

ie, this expression:

        Person person;

        person.getName().equals( person.getFather().getName() );

I can break that down into nodes that represent the following:

        person -> name
        person -> father

So, knowing everyone's name, and everyone's parent, it's
quick'n'easy to join across to find folks who's name is the
same as their dad's.

That expression turns into basically 2 tables, since rete
goes relational on us:

Table A has columns 'person' and 'name', while Table B
has columns 'person' and 'father'.

Join A to B to A, and select across where 

        A.person==B.person
        B.father=A2.person
        A.name==A2.name

And viola.

Of course, won't perform the entire join every time a new
fact is added.  Only need to perform the portion of the
permutations that include that fact row.

Signing off.

        -bob


_______________________________________________
drools-interest mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/drools-interest

Reply via email to