Hi, i've been attempting to use Drools/JBossRules (3.0.5) in a project i'm
working on and i've run into a few issues that i could use some help with.
For the most part i'm struggling with design patterns on how to structure my
facts and my programs object model.
I'm struggling a bit with how to properly introduce my object model into the
working memory. For example, lets say i have an object model such as:
Car(
Engine(
boolean : running
) : engine,
color,
Door(
boolean : open
)[]:doors
)[] : cars
This would model a list of cars and some fields such as engine, color, and
doors. Now how would i create a rule that would return every car with a
running engine? I can't seem to figure out how to correctly reference a
field of a field of a fact. i would want to do something like Car(
engine.running == true ) or Car( Engine( running == true ) ) but that
doesn't work. I can't make the Engine itself a fact because it has to be a
field of the Car, and i can't give the car a field that holds the state of
the engine because then that breaks encapsulation and makes the Car class
very bloated with the state of all of its many components.
Is there a way to do this correctly? i could use a real messy predicate or
something like this:
$car : Car()
eval( isCarRunning( $car ) )
But then what is the point of using Rete? doesn't that just equate down to
about the same amount of work if i just put this in some standard java
if/else code?
Thanks for the help,
....
Kabe