Also, remember to follow the bean spec when firing your property change
events.

See for more details.

http://www.mail-archive.com/[email protected]/msg01977.html

and

http://www.mail-archive.com/[email protected]/msg01745.html


alan


> -----Original Message-----
> From: Thomas Barnekow [mailto:[EMAIL PROTECTED]]
> Sent: Saturday, October 14, 2000 4:07 AM
> To: JESS
> Subject: RE: JESS: Another bean question
> 
> 
> Hi!
> 
> (1) Did you define a dynamic or static Bean instance? 
> (2) Does your Bean's setName(String) method fire a 
> PropertyChange event?
> 
> In order to have your shadow facts' slot values modified you 
> need to (1) define dynamic instances using
> 
>       (definstance mybean (new MyBean ...)) or
>       (definstance mybean (new MyBean ...) dynamic) 
> 
> and to (2) fire PropertyChange events in your setter methods. 
> This is due to the way the Definstance and Modify 
> Userfunctions (i.e., the classes implementing (definstance 
> ...) and (modify ...)) are working. Definstance creates a 
> shadow fact and registers itself as a PropertyChangeListener, 
> if the Bean is dynamic. Modify doesn't change the shadow 
> fact's slot values directly. Instead, it uses the Set 
> Userfunction in order to modify the Bean's properties via its 
> setter methods (using Reflection). The shadow fact's slot 
> value, which is printed by the (facts) statement, is changed 
> by the Definstance Userfunction only upon reception of a 
> PropertyChangeEvent sent by the Bean's setter method.
> 
> Thomas
> 
> > I am using (modify) to alter the value of a slot in a definstance 
> > fact which is mapped onto
> > an instance of a bean.
> > 
> > (defrule startup => (modify 1 (name "Emmeline")))
> > 
> > The I try to print the value of the bean property inside the Java 
> > program and it displays
> > fine. The funny thing is that before and after I print out the 
> > property, the use of (facts) shows
> > the following output. The slot in the definstance fact is not 
> > changed! Why is this so?
> > 
> > r.reset();
> > r.executeCommand("(batch JessBean.clp)");
> > r.run();
> > r.executeCommand("(facts)");
> > System.out.println(bean.getName());
> > r.executeCommand("(facts)");
> > 
> > Output:
> > 
> > f-0   (initial-fact)
> > f-1   (mybean (class <External-Address:java.lang.Class>) (name 
> > "Mimi") (OBJECT <
> > External-Address:MyBean>))
> > For a total of 2 facts.
> > Emmeline
> > f-0   (initial-fact)
> > f-1   (mybean (class <External-Address:java.lang.Class>) (name 
> > "Mimi") (OBJECT <
> > External-Address:MyBean>))
> > For a total of 2 facts.
> ---------------------------------------------------------------------
> To unsubscribe, send the words 'unsubscribe jess-users 
> [EMAIL PROTECTED]'
> in the BODY of a message to [EMAIL PROTECTED], NOT to the
> list (use your own address!) List problems? Notify 
> [EMAIL PROTECTED]
> ---------------------------------------------------------------------
> 
---------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the
list (use your own address!) List problems? Notify [EMAIL PROTECTED]
---------------------------------------------------------------------

Reply via email to