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