[rules-users] Removing many facts have invalid timestamp

Benjamin Bennett benbennett at gmail.com
Fri Feb 24 15:10:30 EST 2012


Trying to figure out if it can be done in a rule almost some sort of pre
rule before other rules are triggered.

The current rule I have is

rule "RemoveInvalidEndTimestamps"
salience 100

when

$factN : Fact()
$factsToRemove : ArrayList(size>=5)
                 from collect( Fact(endTime==$factN.endTime))
then
List newFactsToRemove = new ArrayList();
newFactsToRemove.addAll($factsToRemove);
for(Fact n : newFactsToRemove ){
 retract(n);
}
end

I am using a cloud based process . I could sort the facts and stream them
in.
Just in a few test cases there are many facts with invalid times , which
kills the speed .
>From the log I think that each collection of size>=5 , is triggered which
means triggered for 5,6,7, etc.

Just wondering if there is way to say before doing any other rules collect
up all these invalid times and remove them.

I was just going to write up a some java code and filter before feeding
facts into drools but I find the rule syntax is much easier to read for the
non software developers in my group.


-- 
Thanks,

Benjamin Bennett

<benbennett at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20120224/cff94bac/attachment.html 


More information about the rules-users mailing list