>Each individual rule engine has basically two mutexes: one for the
>working memory, and one for the execution engine. One
>execution thread can be firing rules, while other threads are
>adding/removing/modifying data in the working memory. Rules can be
>firing while working memory is being modified, but only one thread can
>be firing rules at a time, and only one thread can be modifying
>working memory at a time.

It seems that the default Java synchronization mechanism has been used to
coordinate which thread will be able to fire rules. If 10 threads come in
simulstaneously and all want to fire a different rule, then 9 of them will
have to wait while the execution engine is serving the request from one
chosen thread.


>In either case, the key to concurrent use is that each client-specific
>item in the working memory has to be identifiable as such -- i.e., if
>there's a ShoppingCart object, it needs to have a Client property, so
>many independent ShoppingCarts can exist simultaneously.

Let's say the Shopping cart is wrapped in a JavaBean, and this JavaBean will
be passed into Jess working memory for processing. In order for each bean to
be independently "identifiable," each must be given a unique label while it
is being passed into the working memory. Is this right?

Also, the "working memory" of Jess is shared between all clients, right?

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