I think James Owen wrote:
> ... But, back to the original supposition (Same
> data, same rules, same engine) if you don't get the same result then you
> have a real problem.

Only if "time" is part of the data. In a multithreaded environment
(a.k.a. a real-world environment) this isn't true. As long as data is
arriving asynchronously from rule execution, the ordering of arrival
of facts can change the outcome. Only if a rule engine is running in a
single, self-contained thread can this be considered to be
true. Otherwise, any rule like "if X and not Y" will fire differently
depending on the order in which X and Y arrive, because if X gets
there first, then at one point, X is true, but not Y. This is how the
real world works.

Remember the TV commercials in which the hapless diner eats something
nasty and then whacks herself on the forehead in realization and
exclaims, "I could have had a V8!" If the V8 cart had arrived before the
hot-dog cart, the outcome would have been different; but in the real
world, either outcome is equally likely.

There's also the old puzzle about the man with two girlfriends who
live at opposite ends of town, and he takes the first train that
arrives randomly to visit either girlfriend. But he sees one 9 times
more often than the other. Why? Because the trains run ten minutes
apart, one on the nines, the other on the tens. He's only got a
one-minute window in which he'll get on the tens train. In a static
production-system world, he'd visit both equally often. In the real
world, not so much.

Now, this single, self-contained thread model is actually very common
in the rule-engine biz; most commercial rule engines assume that
you'll stuff in some objects, run the engine, and then extract the
results. You can use Jess this way, but you can also have the data
arrive continuously and asynchronously while processing
continues. This isn't the classical model of a production system
anymore, but it's a much more useful model in real software.


---------------------------------------------------------
Ernest Friedman-Hill  
Distributed Systems 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