Hi everyone,

I am trying to assert to Jess that an object exists when I encounter a new
object in my Java program. Right now I am using a template to mirror that
object (i.e I have slot values for all of the Java objects fields)  but
this seems redundant to me. Is there any way to just bind a Java object to
a Jess variable without creating a new Java object?

A lot of the examples I see online and from JIA are of the form:
(bind ?map (new HashMap))

or

(call Classname method params...)

but these either create  a new object or call static methods. I already
have the Java object and just want to store it.

But I was hoping that there was someway I could do something like this:
public Rete engine = new Rete();

public void unitDiscovered()
{
    Unit unit = <some unit encountered>; //Java object
    engine.executeCommand("(bind ?unit unit)");
    engine.executeCommand("(assert ?unit)");
}

Or would I have to use the store() and fetch() methods for this?

public void unitDiscovered()
{
    Unit unit = <some unit encountered>; //Java object
    engine.store("UNIT", unit);
    engine.executeCommand("(bind ?unit (fetch "UNIT")");
    engine.executeCommand("(assert ?unit)");
}

Basically I want to know the best practice for binding Java objects to Jess
variables so I can assert them to the engine.

Thanks,
Hunter McMillen

Reply via email to