On Mon, Dec 14, 2009 at 8:31 PM, Matias <matias.ordonez(a)globant.com> wrote:
Hi, this is my first time with Drools and I would really appreciate if
someone can give me some advice on the following:
Welcome, and see below.
Scenario:
* There is a list of objects 'A' which is updated periodically (initially
every 1 min.)
* In the meantime I would like to run a set of 40 rules on 'A' to modify a
second list 'B'.
* 'A' may contain more than a thousand objects (its size might grow up to a
few thousands or shrink on every update – i.e. its size is not constant on
each update).
Is it essential for the conditions of your rules that A's elements are in a
List<?>
or Map<?,?> or whatever? I guess not, so having a Collection<?> as one fat
fact and write your conditions against it is usually not recommended.
If your conditions deal with properties of A's elements, then insert
individual
elements and modify and retract them on the rules' RHS.
If you do need collections A and B for some purpose, you might make them
available as
additional facts or as globals and operate on them in addition to whatever
needs to be done for the elements. For instance, if a RHS would need to
remove an
element, you would have
rule KillBill
when
$e : ElemA( name == "Bill" )
$a : ListA()
then
retract( $e );
$a.remove( $e );
end
My question to the list is: “What is the best approach I should
follow to
insert facts into Drools, i.e. To populate and update the ksession data ?”
Please see my questions in more detail below as Q1, Q2 and Q3.
In other words, which one of the two following approaches is recommended ?
1) Insert every single item from 'A' and 'B' into the ksession.
Q1: For the objects that changed inside, Do I need to notify Drools ? If
I do, I guess I'll need a fact-handler for each item on the list.
What do you mean by "fact-handler"? Using modify takes care of notifying the
Engine.
2) Insert the lists 'A' and 'B' in the session
Q2: 'A' is actually a TreeMap<String, Object>. Would it be more
convenient to insert it as a list ?
Q3) In terms of performance, which of the 2 approaches above is the best –
or shall I definitely avoid one ?
This is not an issue of performance. I simply cannot imagine a reasonable
set of 40 rules that operate on a List<?> rather than its elements - but, of
course, one never knows ;-)
-W
Thanks,
Matias
--
View this message in context:
http://n3.nabble.com/Best-approach-for-inserting-facts-into-Drools-tp9047...
Sent from the Drools - User mailing list archive at
Nabble.com.
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users