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