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: [email protected] [mailto:rules-users- >> [email protected]] 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 >> [email protected] >> 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 > [email protected] 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 > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > > _______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
