I have the following class structure
 
IInterface1  
        getName()
    IInterface2 extends IInterface1
        getValue()
 
AbstractClassA implements IInterface2
        ClassB extends AbstractClassA, 
        ClassC extends AbstractClassA
 
ClassD implements IInterface2
 
All 3 concrete classes implement IInterface2 and expose "getName".
 
I'd like to write a Rule that matches a fact of any of the 3 concrete
classes (B, C, and D).  I use the defclass construct for the various
types and interfaces and add 3 facts, one of each of the 3 concrete
classes.
 
Two issues arise:
 
First, when I try the following rule:
        ?x <- (IInterface2 (name ?name)) => (printout t \"Found an
IInterface2 called \" ?name crlf)
"Message: No such slot name in template MAIN::Interface2 at token
'name'."  I only get this error on IInterface2.

If I write comparable rules for all of the types and run them, only the
rules matching the concrete classes match.  E.g. 
?x <- (AbstractClassA (name ?x_name) (OBJECT ?x_obj)) does not match but
?x <- (ClassB (name ?x_name) (OBJECT ?x_obj)) does (only the one
instance of course).

What's the best way handle this type of situation? I can send a zip with
sample code if that helps. Thanks.

-Russ

 

 
 
 


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