It seems that this is more of a technical problem on the Java side: how to register the fact that a certain property of an element has changed. You'll need somthing like a "clone" method.

The old version of Person need and should not remain in Working Memory, but a simple wrapper fact referencing to the cloned Person object (not a fact!) would be required. Then you might do

   Person( $adress: adress )
   Wrapper( $person: person, eval( $adress != $person.getAddress() ) )

-W






On 9 November 2011 09:57, kapokfly <ivan.jiang.ww@foxmail.com> wrote:
Thanks, when I am saying person address is changed, our app only concerns
about its initial value and its final value, any change in the middle, we
don't care.

Examples:
  person.address.address1 starts with 'my addr1'

  later a couple of changes were made, say its final value is 'my addr1',
we treat it as no change and no middle rules should be fired.

Even for the 2 objects approach, how I can write the rules to get the old
and new object matched correctly?

They are both Person instances without any identity to tell which one is the
old which one is the new one, unless I enable some kinds of map/or list in
the rule and one structure to host only new objects and the other one hosts
only the old values?



--
View this message in context: http://drools.46999.n3.nabble.com/How-to-write-Drools-rule-basing-on-a-changed-property-tp3492926p3492979.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users