Only (definstance <template> <instance>) should or will work.


I think Mikael Rundqvist (ERA) wrote:
[Charset iso-8859-1 unsupported, filtering to ASCII...]
> Hi again,
> out of curiosity what syntax did you use when trying to assert the ordered fact?
> The one below?
> (assert <instance of bean>)
> or
> (definstance <templateExtendedFromBean> <instance of bean> dynamic)
> 
> /best regards Mikael
> 
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, September 27, 2001 7:55 PM
> To: Mikael Rundqvist (ERA)
> Cc: '[EMAIL PROTECTED]'
> Subject: Re: JESS: Inheritance and initialization from java-bean to
> ordered fact
> 
> 
> Hi,
> 
> I definitely intended for this to be possible, but actually, it looks
> as though it doesn't work.  It -almost- works if you do it backwards:
> have the defclass extend the regular deftemplate. Unfortunately, Jess
> still throws an exception while constructing the shadow fact. I think
> the fix for this would be easy -- look for this to work properly in
> Jess 6.0 final. Thanks for the report.
> 
> 
> I think Mikael Rundqvist (ERA) wrote:
> [Charset iso-8859-1 unsupported, filtering to ASCII...]
> > Hi,
> > is it possible to do the following:
> > 1 Make a deftemplate and inheriting from a dynamic java-bean and in the process 
>adding some slots. 
> > (This works fine thru what is described in section 2.7.2 (deftemplate 
><deftemplate-name> [extends <classname>] [<doc-comment>] [(slot <slot-name> [(default 
>| default-dynamic <value>)] [(type <typespec>))]*) 
> > 2. ASSERT an ordered fact which is an instance of the deftemplate in 1 but which 
>has all slots, but the ones created in the deftemplate, initialized using an instance 
>of the java-bean.
> > 
> > Example:
> > 
> > package SE.ericsson.epk.NAM.DataTranscriptGeneratorPackage;
> > import java.awt.*;
> > 
> > 
> > /**
> >  * Java-bean style class to map between a table name and the corresponding 
> >  * prefix when setting upp the table in MML.
> >  */
> > public class MMLPrefixBean extends java.lang.Object implements Cloneable
> > {
> > 
> >     /**
> >      * Default constructor necessary for a bean.
> >      */
> >     public MMLPrefixBean()
> >     {
> >     }
> > 
> >     /**
> >      * Setter method for the prefix attribute.
> >      * 
> >      * @param prefix a three character wide string specifying the prefix to use 
>when
> >      * configuring the table.
> >      * If a wider string is used as input the prefix will be shortened through cut.
> >      */
> >     public void setPrefix(String prefix)throws MMLSyntaxException {
> >         String oldValue=getPrefix();
> >         String newValue=null;
> >         if (prefix!=null) {
> >             newValue=new String(prefix.substring(0, 3));
> >         }   
> >             if (prefix.length()==3) {
> >                 if (oldValue!=newValue) {
> >                         this.prefix=newValue;
> >                         changes.firePropertyChange("prefix", oldValue, newValue);
> >                 }
> >             } else {
> >                 MMLSyntaxException MMLExc=new MMLSyntaxException();
> >                 this.prefix=newValue;
> >                 changes.firePropertyChange("prefix", oldValue, newValue);
> >                 throw MMLExc;
> >             }
> >     }
> >             
> >            
> >     public java.lang.String getPrefix()
> >     {
> >             return this.prefix;
> >     }
> > 
> >     public void setDescription(java.lang.String description)
> >     {
> >         String oldValue=this.getDescription();
> >         String newValue=description;
> >                     if (oldValue!=newValue) {
> >                         this.description=newValue;
> >                         changes.firePropertyChange("description", oldValue, 
>newValue);
> >                     }
> >     }
> > 
> >     public java.lang.String getDescription()
> >     {
> >             return this.description;
> >     }
> > 
> >     public void setTable(java.lang.String table)
> >     {
> >         String oldValue=this.getTable();
> >         String newValue=table;
> >             if (oldValue!=newValue) {
> >                     this.table=newValue;
> >                     changes.firePropertyChange("table", oldValue, newValue);
> >             }       
> >     }
> > 
> >     public java.lang.String getTable()
> >     {
> >             return this.table;
> >     }
> > 
> >     public String toString() {
> >         return( this.getPrefix() + " : " + this.getTable() + " : " + 
>this.getDescription());
> >     }
> > 
> >     public Object clone() {
> >         MMLPrefixBean copy=null;
> >         try {
> >             copy=new MMLPrefixBean();
> >             copy.setDescription(this.getDescription());
> >             copy.setPrefix(this.getPrefix());
> >             copy.setTable(this.getTable());
> >         }
> >         catch(MMLSyntaxException e) {
> >             System.out.println("Exception in MMLPrefixBean.clone(): ");
> >         }
> >         return copy;
> >     }
> >     
> >     public boolean equals (Object object){
> >         MMLPrefixBean otherBean=null;
> >         if (this.getClass()==object.getClass()) {
> >             otherBean=(MMLPrefixBean)object;
> >             return this.getPrefix().equals(otherBean.getPrefix()) && 
> >                     this.getDescription().equals(otherBean.getDescription()) &&
> >                     this.getTable().equals(otherBean.getTable());
> >         } else {
> >             return false;
> >         }
> >     }
> >             
> >     public void addPropertyChangeListener(java.beans.PropertyChangeListener pcl)
> >     {
> >             changes.addPropertyChangeListener(pcl);
> >     }
> >     
> >     public void removePropertyChangeListener(java.beans.PropertyChangeListener pcl)
> >     {
> >                     changes.removePropertyChangeListener(pcl);
> >     }
> >     
> >     protected java.lang.String prefix = "";
> >     protected java.lang.String table = "";
> >     protected java.lang.String description = "";
> >     private symantec.itools.beans.PropertyChangeSupport changes = new 
>symantec.itools.beans.PropertyChangeSupport(this);
> > 
> >     public static void main(String[] args) {
> >         MMLPrefixBean anMMLPrefixBean=null;
> >         MMLPrefixBean anotherMMLPrefixBean=null;
> >         try {
> >             anMMLPrefixBean=new MMLPrefixBean();
> >             anMMLPrefixBean.setPrefix("PNB");
> >             anMMLPrefixBean.setDescription("Prefix for PRE-ANALYSIS OF NUMBER 
>INFORMATION FOR B-NUMBER ");
> >             anMMLPrefixBean.setTable("B-number Pre-analysis");
> >             System.out.println(anMMLPrefixBean);
> >             anMMLPrefixBean=new MMLPrefixBean();
> >             anMMLPrefixBean.setPrefix("ANB");
> >             anMMLPrefixBean.setDescription("Prefix for ANALYSIS OF B-NUMBER ");
> >             anMMLPrefixBean.setTable("B-number analysis");
> >             System.out.println(anMMLPrefixBean);
> >             anotherMMLPrefixBean=(MMLPrefixBean)anMMLPrefixBean.clone();
> >             if (anMMLPrefixBean.equals(anotherMMLPrefixBean)) {
> >                 System.out.println("Clone and equal works!");
> >             }
> >             anMMLPrefixBean=new MMLPrefixBean();
> >             anMMLPrefixBean.setDescription("Prefix which is wrong ");
> >             anMMLPrefixBean.setTable("Z-nummer analysis");
> >             anMMLPrefixBean.setPrefix("ANBQ");
> >             System.out.println(anMMLPrefixBean);
> >             
> >         }
> >         catch (MMLSyntaxException MMLExc) {
> >             System.out.println("Fick ett MML Exception");
> >             System.out.println(anMMLPrefixBean);
> >         }
> >     }
> > }
> > 
> > 
> > (defclass MMLPrefixBean 
>SE.ericsson.epk.NAM.DataTranscriptGeneratorPackage.MMLPrefixBean) 
> > (deftemplate myprefixtemplate extends MMLPrefixBean
> > (slot foo)
> > 
> > (bind ?anMMLPrefixBean (call 
>SE.ericsson.epk.NAM.DataTranscriptGeneratorPackage.Control.getDefaultMMLPrefixBean)) 
>;retrieves a prefix-bean with all attributes set to default values. 
> > 
> > (definstance MyExtendedPrefixBean ?anMMLPrefixBean dynamic) ;this leads to the 
>following error
> > Jess reported an error in routine DefinstanceList.definstance
> >     while executing (definstance MyExtendedPrefixBean ?anMMLPrefixBean dynamic).
> >   Message: Unknown object class MyExtendedPrefixBean.
> >   Program text: ( definstance MyExtendedPrefixBean ?anMMLPrefixBean dynamic )  at 
>line 23.
> > 
> > (assert ?anMMLPrefixBean)  ;this leads to the following error 
> > Jess reported an error in routine Value.factValue
> >     while executing Jess reported an error in routine Variable.resolveValue.
> >   Message: Null context for anMMLPrefixBean..
> >   Message: Not a fact: 
>"<External-Address:SE.ericsson.epk.NAM.DataTranscriptGeneratorPackage.MMLPrefixBean>" 
>(type = EXTERNAL_ADDRESS).
> > 
> > I think I understand what I do wrong in both cases but is there a simple 
>possiblility to assert a fact and have all the field initialized from the bean.
> > /Mikael Rundqvist
> > 
> > ---------------------------------------------------------------------
> > 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]
> > ---------------------------------------------------------------------
> > 
> 
> 
> 
> ---------------------------------------------------------
> Ernest Friedman-Hill  
> Distributed Systems Research        Phone: (925) 294-2154
> Sandia National Labs                FAX:   (925) 294-2234
> Org. 8920, MS 9012                  [EMAIL PROTECTED]
> PO Box 969                  http://herzberg.ca.sandia.gov
> Livermore, CA 94550
> 
> ---------------------------------------------------------------------
> 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]
> ---------------------------------------------------------------------
> 



---------------------------------------------------------
Ernest Friedman-Hill  
Distributed Systems Research        Phone: (925) 294-2154
Sandia National Labs                FAX:   (925) 294-2234
Org. 8920, MS 9012                  [EMAIL PROTECTED]
PO Box 969                  http://herzberg.ca.sandia.gov
Livermore, CA 94550

---------------------------------------------------------------------
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