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.
<br><br>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:<br><br> Car( <br> Engine( <br> boolean : running
<br> ) : engine, <br> color, <br> Door( <br> boolean : open <br> )[]:doors <br> )[] : cars<br><br>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.
<br><br>Is there a way to do this correctly? i could use a real messy predicate or something like this:<br><br>$car : Car()<br>eval( isCarRunning( $car ) )<br><br>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?
<br><br>Thanks for the help,<br><br>....<br>Kabe<br><br><br>