This is useful and near the direction of my approach.

Thanks Saban!

On Wed, 3 Dec 2008, Saban Ozsariyildiz - CITG wrote:

> Log time ago with version 5-6 I was doing it as below... It may help...
> you can improve further...
>
>
> Somewhere in java I first introduce the classes to jess...
>
> Class aClass = null;
> aClass = Class.forName(classPath + s);
> try {
>    String shortClassName =
> aClass.getName().substring(aClass.getName().lastIndexOf(".")+1,
> aClass.getName().length());
>    rete.executeCommand("( defclass " + shortClassName + " " +
> aClass.getName() + " )");
>
>    } catch (Exception ke) {
>           System.out.println("Error: Defclass in Rete");
> }
>
> Somewhere I store my instances as hash or vector or something else below
> is for old hashtable ... if I create new instance I add to jess as
> well...
>
> // define in jess and add to hashtable
>       public synchronized void put(Object str, Object simp) {
>
>               synchronized(this) {
>                       groupData.put(str, simp);
>                       try{
>                               Funcall f = null;
>                               Object obj = simp;
>
>                                       f = new Funcall( "definstance",
> jessList[i] );
>                                       f.add(new Value(
> simp.getClass().getName(), RU.ATOM ) );
>                                       f.add(new Value( simp ) );
>                                       f.add(new Value( "dynamic",
> RU.ATOM ) );
>                                       f.execute(
> jess.getGlobalContext( ) );
>
>                       }catch(Exception ex){
>                               System.err.println("Error : in hashtable
> put to KEngine ! "+ ex);
>                       }
>               }
>       }
> // define in jess and remove from hashtable
>       public synchronized void remove(Object str) {
>
>               try {
>                       synchronized (this) {
>                               Object obj = groupData.get(str);
>                               groupData.remove(str);
>                               Funcall f = null; Value v = null;
>
> v = new Value( obj );
>                                       f = new Funcall(
> "undefinstance", jess );
>                                       f.add( v );
>                                       f.execute(
> jess.getGlobalContext( ) );
>
>                       }
>               }catch(Exception ex){
>                       System.err.println("Error : in Project hashtable
> put to KEngine ! "+ ex);
>               }
>       }
>
>
>
> Then it's simple to write rules in jess
>
> (defrule R1 "for 50-90 mw configuration"
>   (Door (name ?name) (otherProperyIfNeededToMatch ?p) (OBJECT ?o))
>   (test (eq ?name "A1")) // this can be any test condition with new
> version I think....
>   =>
>   (set ?o state "open" )
> )
>
>
>
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> On Behalf Of John Chrysakis
> Sent: Wednesday, December 03, 2008 12:38 PM
> To: Wolfgang Laun
> Cc: [email protected]
> Subject: Re: JESS: Updating Specific Shadow Fact
>
>
> I found getObjects easier since I use jess java api,
> so in one class I request some Objects, in another
> class I need to get/update only a specific one,
> so perhaps the assignment to facts  and the
> calling of modify could not be donw in my opinion on
> general way.
>
> Anyway, thanks again!
>
> -John-
> > You could write a defquery and run this.
> >
> > Better still, you define a template
> >    (deftemplate DoorNameState (slot name)(slot state))
> > and a rule
> >    (defrule UpdateDoorState
> >      ?dns <- (DoorNameState (name ?n)(state ?s))
> >      ?d  <- (Door (name ?n))
> >  =>
> >     (modify ?d (state ?s))
> >    (retract ?dns)
> > )
> >
> > To update, just assert a DoorNameState fact.
> >
> > -W
> >
>
>
>
> --------------------------------------------------------------------
> 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]
> --------------------------------------------------------------------
>
>
>


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