[rules-users] Identity, equality, hashing and indexing

Bruno Freudensprung bruno.freudensprung at temis.com
Wed Dec 8 10:02:02 EST 2010


Hi Thomas,

Thanks for your answer! You actually describe the behavior what I was 
hoping for :-).

Bruno.

Swindells, Thomas a écrit :
> Drools only cares about facts, not the fields within it - when you tell Drools you have updated a fact object then it re-evaluates all the rules that uses the fact, you don't tell it which fields have actually changed. Therefore you can have inter-related fields without any problems.
>
> I don't know for sure but I think that when you use update to tell drools the object has been updated it will update the hashcode to the new value and so maintain the checking of equality.
>
> Thomas
>
>   
>> -----Original Message-----
>> From: rules-users-bounces at lists.jboss.org [mailto:rules-users-
>> bounces at lists.jboss.org] On Behalf Of Bruno Freudensprung
>> Sent: 08 December 2010 14:00
>> To: Rules Users List
>> Subject: [rules-users] Identity, equality, hashing and indexing
>>
>> Hi,
>>
>> I have some existential questions about Drools Expert's magic :-).
>>
>> When reading the documentation it is clear that, by default, facts are
>> stored in an IdentityHashMap. If I understand things correctly it means
>> that the objects I put in the working memory don't have to implement the
>> hashCode() and equals() method. They should implement them only if I
>> tell Drools to use the "equality mode".
>>
>> So here is my first question: in equality mode, if a fact field is used
>> by the hashCode method, and if that field is modified by a rule action,
>> should I expect a weird behavior since facts are stored in a HashMap?
>>
>> When digging into rules-users' archives I also found posts of Mark
>> Proctor, talking about field indexing and alpha node hashing, that lead
>> to my second question: should I expect a weird behavior if 2 fields are
>> related to each other?
>> For instance (not a good example but it gives an idea): a Person type
>> has a getFirstName() method, a getLastName() method and a getName()
>> method that return the concatenation of getFirstName() and getLastName().
>> Is it problematic if one rule has a "Person(name == "John Doe")" fact in
>> its LHS and if another rule modifies the "firstName" of that Person fact
>> (John -> Jane)?
>> Does it depend on the equality vs. identity mode (I don't think so...
>> unless the field itself is a also a fact)?
>>
>> Many thanks in advance for your answers,
>> Best regards,
>>
>> Bruno.
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>     
>
>
> **************************************************************************************
> This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postmaster at nds.com and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary.
>
> NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00
> **************************************************************************************
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>   




More information about the rules-users mailing list