Nope, you're not missing anything. What you need is a control object of some sort
thst's inserted after all of the "real" data is inserted. (See attached
project for an example.) Rules will look like this, if the control object is called
BatchLatch and data objects A:
rule "CountAs"
dialect "java"
salience -1
when
l : Latch()
a : A( latch == l )
then
retract(a);
l.incACount();
System.out.println("Found an A in " + bl);
end
Note that the A object being processed is tied back to the latch. This is so multiple
latches can be processed simultaneously and their processing won't be intermingled.
This is necessary because there's no guarantee that two Latch objects aren't in
working memory at once. (Though you could create a rule that enforces this.)
GreG
--- On Sat, 10/2/10, Norman C <rent_my_time(a)yahoo.com> wrote:
From: Norman C <rent_my_time(a)yahoo.com>
Subject: [rules-users] fireUntilHalt and timing of rule activations
To: rules-users(a)lists.jboss.org
Date: Saturday, October 2, 2010, 10:22 AM
Hi All,
In my app, I have a separate thread calling fireUntilHalt()
continuously. I
have quite a few rules, and I am using salience extensively
to control the order
in which rules are executed. What I have seen (by adding
an event listener) is
that as a new fact is inserted, various rules are
activated. Often, the
fireUntilHalt will start executing fireNextItem in
DefaultAgenda before all of
the activations are complete. So if the rule with the
highest salience
value hasn't been activated at this point, then the first
rule to be fired isn't
the correct one.
This can be worked around by waiting for insert to return
and then calling
fireAllRules(). But it seems like the session should
block fireUntilHalt from
trying to execute activated rules until all activations are
complete. Or am I
missing something here?
thanks,
Norman
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users