Re: JESS: Combining JESS.clp and normal Java GUI

Flogger <[email protected]> Sat, 19 Mar 2011 11:08:53 +0100
Newsgroups gmane.comp.java.jess
Message-ID <[email protected]>
Hello Jason,

Thanks for your quick response.
Maybe handle was the wrong word to use :-).
Your approach seems to be good, but my problem is: do i need a single
deftemplate for every variable or is it one deftemplate for all
variables ok? And in which way do I need to rephrase my formulas so I
can access the facts I asserted in my deftemplate
In my last post I attached my gui. Maybe you can take a quick look.
What I want to do:
I want to write my variables in the different jtextfields catch their
values and assert them as facts. Then I click on "Start" what will start
my jess-code and in the PopUp I can see the different conclusions.
What do you think would it be easier: to connect my gui (newjframe.java)
to jess (bachelorarbeit.clp),
                                                                    to
rewrite the gui in jess ( I think it is a terrible work, because my gui
has more then 800lines)
                                                                    or
integrate my jess code in java.
Thanks again for your help. Maybe someone else has a good hint as well.
Greetings Florian

My Am 18.03.2011 17:44, schrieb Jason Morris:
> Hi Florian,
>
> Rules "handle" input by activating and firing in response to the
> assertion of facts that match their LHS patterns.  If you want a rule
> to "handle" some input data, simply write a rule that matches a fact
> containing that data.
>
> Just have the event handler code for your "OK" button (or whatever GUI
> control starts your processing) assert all of your variables wrapped
> as Jess facts.  Then, when your rules "see" those facts containing
> your data, their RHS code can process it.
>
> An example fact template would be:
>
>   (deftemplate datum
>   "A linear regression variable"
>     (slot variable)
>     (slot value) )
>
> Using the Jess language, you can then assert facts like so...
>
> (assert (datum (variable beta_sz)(value 52.5)))
>
> From Java proper, this would be something like:
>   Rete engine = new Rete();
>
>
>   engine.eval("(deftemplate datum \"A linear regression variable\" (slot variable) (slot value))");
>
>   Fact datum = new Fact("datum", engine);
>
>
>   datum.setSlotValue("variable", new Value("beta_sz", RU.SYMBOL));
>   datum.setSlotValue("value", new Value(52.5, RU.FLOAT));
>   engine.assertFact(f);
>
>
>   ...
>
>     * If you are really ambitious, use a grid control on a form to act
>       as the input/output control to a backend spreadsheet. For
>       example, you could write an I/O widget that extends
>       javax.swing.JTable and is databound to an Excel file via Apache
>       Poi.  You will have to rig all the plumbing, but it can be
>       done.  Better to use an existing widget. For a Swing app,
>       something like QuickTable <http://quicktable.org/> looks
>       promising.  If you go the webapp/AJAX route, there are all sorts
>       of databound grid widgets (e.g. Smart GWT
>       <http://code.google.com/p/smartgwt/>, showcase
>       <http://www.smartclient.com/smartgwt/showcase/#main>)
>
>     * By the way: Have you looked at integrating R with Jess?  R is a
>       very powerful statistics package, and the JRI
>       <http://www.rforge.net/JRI/>API let's you integrate it with Java.
>
> Hope this helps!
>
> Cheers,
> Jason
> ------------------------------------------------------
> Morris Technical Solutions LLC
> [email protected]
> <mailto:[email protected]>
> (517) 304-5883
>
>
> On Fri, Mar 18, 2011 at 8:35 AM, Flogger <[email protected]
> <mailto:[email protected]>> wrote:
>
>     Hi Community,
>
>     not long ago I asked you how to store rules in an excel sheet. Me
>     and my
>     tutor are totally ok with the apache api for accessing our rules.
>     I programmed a small GUI were all the input can be made.
>     My question right now is:
>     Is it possible to link my input fields to my seperated jess-file
>     called
>     Bachelorarbeit.clp?
>     And my other question is:
>     How do I have to write the rules in Bachelorarbeit.clp so they can
>     handle input?
>     I tried working with the examples from "Jess in Action" but so far
>     I was not successful.
>     At the moment my "program" looks like this:
>
>     (bind ?beta_sz 52.5)
>     (bind ?b_sz 2.5)
>     (bind ?l_sz 3)
>     (bind ?r_sz_2 0.6)
>     (bind ?r_sz_3 0.3)
>
>
>     (progn (bind ?TEPS_linear (+     (* ?b_sz -0.216)
>                                     (* ?l_sz 0.685)
>                                     (* ?r_sz_2 0.392)
>                                      0.867 ))
>         (printout t "TEPS_linear ist " ?TEPS_linear crlf))
>
>
>     (progn (bind ?TEPS_poly (+    (* +0.000 (** ?beta_sz 4))
>                                    (* +0.035 (** ?b_sz 1))
>                                 (* -0.103 (** ?l_sz 3))
>                                 (* -0.163 (** ?r_sz_2 5))
>                                 (* -0.002 (** ?r_sz_3 5))
>                                 -0.126)
>             )
>         (printout t "TEPS_polynomial ist " ?TEPS_poly crlf)
>      )
>
>     I declared my variables to check if i can handle the formulas. What i
>     want to do now is to write a piece of code to catch the variables from
>     the GUI (?beta_sz to ?r_sz_3). When this is done I finally want to
>     outsource the rule part to excel and only have the GUI and the catcher
>     for my variables in the code.
>     Thank you in advance guys.
>     I am happy for every little piece of help.
>     Greetings from good old cloudy cold Germany
>     Florian
>
>
>
>
>     --------------------------------------------------------------------
>     To unsubscribe, send the words 'unsubscribe jess-users
>     [email protected] <mailto:[email protected]>'
>     in the BODY of a message to [email protected]
>     <mailto:[email protected]>, NOT to the list
>     (use your own address!) List problems? Notify
>     [email protected] <mailto:[email protected]>.
>     --------------------------------------------------------------------
>
>
>
>
>