I think Roger Studner wrote:
> 
> Why do I have to do engine.run() *again* to get my rules to fire?

Rules fire only during a call to run(). WHen there are no rules to
fire, run() returns. Jess doesn't create any Threads of its own;
things happen synchronously, during calls to Jess methods.

>  I mean, does this mean I have to have a loop 'constantly' calling
> engine.run() over and over?

Nope, that's what runUntilHalt() does -- it never returns until you
explicitly stop it by calling halt(). It doesn't just call run() in a
loop, though -- it uses wait() and notify() so that it uses 0 CPU
cycles until there are actually rules to fire.

Note that if you want the engine to run forever, then that will tie
up a Java thread -- the thread that calls runUntilHalt() won't be
available to run any more of your code, since runUntilHalt() won't
return. So generally, you create a dedicated thread to call this
method, or you call it as the last method of a script, having arranged
for something to happen asynchronously in some other threads.



---------------------------------------------------------
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://herzberg.ca.sandia.gov

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