[rules-users] Why is a flat object recommended?

Libor Nenadál libor.nenadal at gmail.com
Fri Aug 14 03:02:25 EDT 2009


Mark thank you for your reply! What you are saying is that the example Car (
engine.cylinderCount == 4 ) is wrong and correct is:
  $e: Engine ( cylinderCount == 4 )
  Car ( engine == $e )
which is representation of real relations? I thought about the example I
wrote here overnight and I realized that the solution without 'from' in fact
can be optimal as it can easily eliminate non-matching facts without going
through the object structure.

Cheers,
Libor


Mark Proctor wrote:
> 
> Java pojo's nested fields is just a weak way to represent relations 
> between objects. If you want to exploit those properly in a rule engine, 
> best to use real relations.
> 
> Mark
> Libor Nenadál wrote:
>> Mark Proctor wrote:
>>   
>>> We can exploit cartesian products and indexing for == constraints. If 
>>> its a nested model we have to iterate over all possible instances. The 
>>> other problem is if the nested model changes the engine has no idea this 
>>> has happened, which if you are not careful can lead to data integrity 
>>> issues.
>>>
>>>     
>> I think that plain flat model is too limited for real life. In fact in
>> most
>> situations you just cannot avoid nesting.
>> For example when I try to search for cars with 4 cylinder engine the best
>> approach I found is:
>>
>> rule "get 4 cylinder cars"
>>   when
>>     Car ( $e: engine != null ) // car without engine? where are we? :)
>>     Engine ( cylinderCount == 4 ) from $e
>>   then
>>     System.out.println("Found 4 cylinder car.");
>> end
>>
>> This should be quite effective. I doubt that the following solution with
>> cartesian product has the same complexity:
>>
>> rule "get 4 cylinder cars"
>>   when
>>     $e: Engine ( cylinderCount == 4 )
>>     Car ( engine == $e )
>>   then
>>     System.out.println("Found 4 cylinder car.");
>> end
>>
>> Using approach Car ( engine.cylinderCount == 4 ) tends to raise
>> NullPointerException and I had problems with assigning the cylinderCount
>> to
>> variable so this was not a way to go for me.
>>
>> But this is not much a problem for me as I am a programmer and I can
>> understand the rule language and data structures. But when business users
>> are to edit rules (using Guvnor as the tool of choice) we come to
>> troubles.
>> I think that guided editor for rules does not allow "from". More
>> importantly
>> - can you create such a structure for a test scenario? I failed. :(
>>   
> 
> 
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 
> 

-- 
View this message in context: http://www.nabble.com/Why-is-a-flat--object-recommended--tp15567690p24967167.html
Sent from the drools - user mailing list archive at Nabble.com.





More information about the rules-users mailing list