It would be helpful, I think, if you told us what you wanted to do in terms of business logic, rather than as "how do I do X in Jess", because the questions you really need answered are about the proper way to use Jess itself.

In this case, note that if you used Rete.assertString() instead of executeCommand() to assert the fact, then that method returns the jess.Fact object itself. You can then get the individual slot values from that Fact object using its getSlotValue() method. But it's a mystery to me why you want to do this -- you've just asserted the fact, so why would you want to look at it?

The proper way to find facts that are created as a result of running some rules is to use a defquery, as detailed in the "TekMart" section of the book.


On Mar 20, 2007, at 4:34 AM, ricktee wrote:


Good day,

Im using java to load the "cardio.clp" file then java ex-commend a string to
create ththe following fact in jess.

(program-cardio
(ident cardio-low)
         (cond-inte 40)   (cond-dura  6)
         (impr-inte 70)    (impr-dura 20)
         (main-inte 70)   (main-dura  1)))

I read in the "Jess in action" book (p311) there is a "findFactByFact()" method, but I dont know how to use it. Can you please help me? How do I get the (program-cardio) fact out of Jess? Is ValueVector the correct format to
store the fact? Or should I use vectors?

And is there a way to auto format the retrieved fact in a array for easy
using? Or something similar? Like-

String [] [] cardio_program = {
("ident", "cardio-low"),
("cond-inte", "40"),    ("cond-dura", "6"),
("impr-inte",  "70"),    ("impr-dura", "20"),
("main-inte", "70"),   ("main-dura",  "1")  }

The "cond-inte 40" stands for "conditioning intensity at 40%" which Im
suppose to use it for some java caculation.

Thank you very much for your help
rick


Below is the scale down program
http://www.geocities.com/t_web_design/TestFrame.java
http://www.geocities.com/t_web_design/cardio.txt

********************************************************************** ******
//TestFrame.java

import jess.*;
import java.util.*;

public class TestFrame{
private static Rete engine;

public static void main(String[] args)
{
String assert_fact = "(assert (program-cardio (ident cardio-low) (cond-inte 40) (cond-dura 6)(impr-inte 70) (impr-dura 20)(main-inte 70) (main-dura
1))     )";

        try
        {       
                engine = new Rete();
                engine.reset();
                engine.batch("cardio.clp");
                engine.reset();
                
                engine.executeCommand(assert_fact);
                engine.run();
                
                ValueVector get_fact = engine.findFactByFact("program-cardio");
                Vector temp                  = 
get_fact.factValue(engine.getGlobalContext());
        }
                
        catch (JessException ex)
        {       System.err.println("ERROR");  }

} //close main
}

********************************************************************** *********
;; cardio.clp

;;;; template for a cardio exercise program ;;;;

(deftemplate program-cardio
(slot ident)
(slot cond-inte)
(slot cond-dura)
        (slot impr-inte)
        (slot impr-dura)
                (slot main-inte)
                (slot main-dura)        
(slot explanation)              );;close


;;;; rule , to say the fact has been created by Java ;;;;;;;;
(defrule access-by-java
(program-cardio (ident cardio-low))
=>
(printout t "The jess file has been accessed by Java, (program- cardio) fact
created" crlf ) );;close


--
View this message in context: http://www.nabble.com/Retrieve-Fact- from-Java-tf3432213.html#a9567941
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