Jess is very flexible, perhaps too much so, because there are always lots of ways to do things.

In the program you've written here, first you want to instantiate a jess.Rete object and store it in a member variable. When you instantiate it, use either Rete.batch() (if your version has this method) or just Rete.executeCommand("(batch filename.clp)") to read in your Jess code.

Then in your event handler, assert the fact by calling the appropriate method on your Rete member object. There are many ways to do it: you could use executeCommand() again, or assertString(), or even build a jess.Fact object and call assertFact(). Then your handler can call Rete.run(). You might want it to call Rete.reset() before asserting the fact.

Then when your rule fires, you want it to communicate back to your Java program. One easy way to do this would be with the store/fetch mechanism, which is described in the manual and also in the book on pages 308-309. Have the right-hand-side of the relevant rule store the result. The rule could also make changes directly to the GUI if you like, or do many other things: as I said, there are lots of different ways to do it.


On Mar 17, 2007, at 11:02 PM, ricktee wrote:


Hi,

I am using a java frame as a menu to let user enter some inputs. The java
program will then construct a assert string and send it to JESS to be
processed and get back a JESS object.

I read the "JESS in action" book but I'm still confused, how do I run the JESS and pass the assert string to it. How can I get the output of the JESS
program?

I have attached a scaled down version of my program, at "send to jess"
button click it will send a string to JESS, and JESS is suppose to return a
user-shoes fact to java, recommending soccer-boots.

http://www.geocities.com/t_web_design/TestFrame.java
http://www.geocities.com/t_web_design/shoes.txt (yahoo won't let me upload
it as shoes.clp)

I'm justing java 1.509 (and IDE JCreator) and Jess61p4. Can you please point
me to a similar example or please help me with the codes?

thanks a bunch and rgds
rick

Below is the code of the above 2 files

********************************************************************** ******

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.text.*;

public class TestFrame extends JFrame implements ActionListener{

//declare JTextFields for input
private JTextField inputField, outputField;

//declare JLabel for labelling
private JLabel inputLabel, outputLabel;;

//declare buttons
private JButton exitButton, computeButton;

//frame method
public TestFrame(){
        
        //frame's settings
        setTitle("version 1.0");           //set title of frame
        setBounds(50,50,650,200);       //set window                            
                                                                

//PANEL:input, to put the input & output fields
        JPanel inputPanel = new JPanel();
        inputPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
        
        inputLabel = new JLabel("String to pass to Jess: ");
        inputField = new JTextField(40);
        
        outputLabel = new JLabel("Jess to return something: ");
        outputField = new JTextField(40);
        
        //add the Label & Field into the panel
        inputPanel.add(inputLabel);
        inputPanel.add(inputField);
        inputPanel.add(outputLabel);
        inputPanel.add(outputField);

        inputField.setText("(assert (user (age 27) (weight 120) (height 509)
(ex-program soccer) )) ");

//PANEL:button, store 3 buttons, contentPane=SOUTH
        JPanel buttonPanel = new JPanel();
//create Panel for 'button'
buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); // set flow
layout
        
        computeButton = new JButton("Sent to Jess");       //create 'compute'
button
exitButton = new JButton("Exit"); // create 'exit'
button

buttonPanel.add(computeButton); //add 'compute' button into
Panel
buttonPanel.add(exitButton); //add 'exit' button into
Panel

computeButton.addActionListener(this); //add listener to 'compute'
button  
exitButton.addActionListener(this); //add listener to 'exit'
button
        
        Container contentPane = getContentPane();                       
contentPane.add(buttonPanel, BorderLayout.SOUTH); //add buttonPanel to
SOUTH   
contentPane.add(inputPanel, BorderLayout.CENTER); //add inputPanel to
CENTER
} //close GymTrainerFrame()

//detect mouse click
public void actionPerformed(ActionEvent e){
        Object source = e.getSource();                                          
//get source of click
        
        if (source == exitButton)                                               
    //check if exit button is clicked
        {       System.exit(0); }                                               
        //exit prog
        
        if (source == computeButton)    //if clear button is clicked
        { //send to JESS        
        }

} //close actionPerformed()

//MAIN: make the frame show up
public static void main(String[] args)
{
        JFrame frame = new TestFrame(); //create the frame
        frame.show();                           //show the frame
} //close main

}


********************************************************************** ****

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;user object
(deftemplate user
        (slot age)
        (slot weight)
        (slot height)           
        (slot ex-program)       );;close

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;user footwear object
(deftemplate user-footwear
        (slot ident)            );;close

;;;;;;;;;;;;;;;;;;;;;;;;;;;; check if user is playing soccer, if so
recommend soccer boots
(defrule print-user (user (ex-program soccer))  
=> (assert (user-footwear (ident soccer-boots)))     );;close

(reset)
(focus)
(run)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;code to create user fact with user
playing soccer
;;;(assert (user (age 27) (weight 120) (height 509) (ex-program soccer) ))


--
View this message in context: http://www.nabble.com/How-to-use-java- interface-to-pass--get-facts-from-JESS-tf3421248.html#a9535635
Sent from the Jess mailing list archive at Nabble.com.

--------------------------------------------------------------------
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 owner-jess- [EMAIL PROTECTED]
--------------------------------------------------------------------

---------------------------------------------------------
Ernest Friedman-Hill
Advanced Software Research          Phone: (925) 294-2154
Sandia National Labs                FAX:   (925) 294-2234
PO Box 969, MS 9012                 [EMAIL PROTECTED]
Livermore, CA 94550                 http://www.jessrules.com

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