I have understood Will's problem to be within a single Rete object. Basically, the Rete.add() method returns a reference to the created jess.Fact. As a shadow fact in good standing it'll have a slot OBJECT containing a reference to the original Java object. "Therefore, the original object is always easily available." (The Jess Manual, 5.3.2)

Hal Hildebrand wrote:

Wouldn't the fact id be (potentially) different in different instances of the rules engine? I believe these are assigned in declaration order, so unless every instance is defining instances in precisely the same order, then you'd end up with the same logical fact having different ids in different VMs.

FWIW, there's a good paper by someone who did something remarkably similar: www.waset.org/pwaset/v4/v4-18.pdf

Myself, I've taken another route, which is using shadow facts for everything I want distributed. The facts all have generated UUIDs, so there's no issues with locally generated ids in a distributed system. Then it's a fairly simple matter to translate to the local facts when the shadow changes and vice versa.

On Dec 10, 2007, at 1:07 PM, Will Edwards wrote:

We're attempting to integrate a JavaSpaces implementation with Jess.

When an object changes in the JavaSpace we receive a notification that the object has changed and a copy of the changed object which we want to add or
modify as a Jess shadow fact in the rules engine.

Our problem is that in this environment we do not get a reference to the original object but a new (by value) copy of the object. So, we want to
modify the existing Jess fact with the new copy. Assuming we have the
FactIDValue (from the original rete.add) is there a reasonably simple way to
do this?

Currently we are using a FactFilter to get the existing object, call
rete.remove() to remove the old copy and then rete.add() with the new copy.
This is of course prone to potential race conditions, etc.

What we would like to do is use modify() or updateObject() but both of these
seem to require that the original object reference be maintained.

Thanks in advance.

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


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


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