aspose file tools*
The moose likes Other Java Products and Servers and the fly likes Embedding Jess in Java Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Products » Other Java Products and Servers
Bookmark "Embedding Jess in Java" Watch "Embedding Jess in Java" New topic
Author

Embedding Jess in Java

Felicity Parker
Greenhorn

Joined: May 28, 2005
Posts: 2
I am developping a prototype to help evaluate social projects within specific criteria.
I would like to have here a specific simple example on how to take a value from a text field in a Jframe from java and to pass it to Jess and the opposite way.
The examples i found are not complete and did not get the whole story about I/O routers ....
I need help plz.
Felicity
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24183
    
  34

Hi Felicity,

Welcome to JavaRanch!

I/O routers are really not the best way to connect a GUI to Jess. They're good for sending printed output to a JTextArea, and connecting a text component to a read-eval loop like the Jess> prompt. But for general programming, it's better to use another mechanism like fetch() and store(), as documented here.

The important thing to remember when you're integrating Jess and Java is that they're not two independent things, running in parallel, waiting for messages from eachother. If main() is written in Java, then no Jess code runs unless you invoke Jess somehow; so sending data to Jess means calling store() to put the information into Jess, and then invoking some Jess code to fetch the value and do something with it. Likewise, from Jess, you use (store) to save some data, and then either invoke a Java method to deal with it, or perhaps simply return from Jess to give control back to Java.

The book "Jess in Action" (see my signature below) spends three chapters on a Swing example, so that's a good resource too.


[Jess in Action][AskingGoodQuestions]
Felicity Parker
Greenhorn

Joined: May 28, 2005
Posts: 2
Okay! thx a lot!
But then again, if I want to put what i retrieved from Jess into a jFrame in a java based GUI, how to do it?
Is it possible to have more than only one TextField to read from and more than a TextArea to write in?
What i would like to do is to have severals frames with in each one several textfields who contavins future facts for my jess programme...
How to design all that?
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24183
    
  34

The same way as if this were any other Java Swing program: the event handlers for the various components would manipulate Jess in some way.

For example, the actionPerformed() method of a JButton's ActionListener might read the values of several JTextFields, construct an object based on those values, call Rete.definstance() to add that object to Jess's working memory, then call Rete.run() to let Jess fire some rules (although this last would best be done in a separately-spawned Thread.) The rules, in turn, could compute some value and use (store) to store the value for later retrieval. Your Java code could then use Rete.fetch() to get the stored value and store that result in a JTextArea.

This is just one scenario out of an infinite range of possibilities. If you want a detailed example with lots of annotated code and explanation, then you'll find one in my book.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Embedding Jess in Java