You only have to add one additional rule (the one that retracts unmatched Lines) but each
of your existing rules will have to modify each Line matched to set "processed =
true"
--- On Fri, 10/17/08, hare ram <hare.bond(a)gmail.com> wrote:
From: hare ram <hare.bond(a)gmail.com>
Subject: Re: [rules-dev] Performance Question
To: greg_barton(a)yahoo.com, "Rules Dev List" <rules-dev(a)lists.jboss.org>
Date: Friday, October 17, 2008, 2:28 PM
There is more to it ,but just to give an idea.
I thought about the idea you have given me, but just did
not get an idea of
how to implement
Say in the below rules itself
rule "IP Route File rule"
salience 2000
when
Line ( line matches
"^.*\s+show\s+ip\s+route\s*$" )
Line ( line matches
"^.*\s+dest\s+address\s*$ )
file : FileFinder()
then
file.setFileType("ip route file");
drools.halt();
end
When I encounter a line "show ip route" in a
file , I know that match
occured. But how do I implement it
Did you mean I should have written a separate rule like
when
Line ( line matches
"^.*\s+show\s+ip\s+route\s*$" )
then
update (the above line with proceed==true )
In that case will not explode the number of rules (50 * say
3 matches)
Thanks
Shiva
On Fri, Oct 17, 2008 at 3:20 PM, Greg Barton
<greg_barton(a)yahoo.com> wrote:
> Are you sure you want to use rules for this? If
you're not going to do
> analysis more complex than what you've described
I'd say straight java is a
> better option.
>
> That being said, this is one thing to try:
>
> 1) Add a "processed" property of type
boolean to Line, default value false.
> 2) Set processed = true on Lines that are matched
> 3) Have a low salience rule (lower than all other
rules that match a Line)
> that matches a Line with processed == false and
retracts it. It must be low
> enough priority so it fires after any other rules that
could match the Line.
>
> --- On Fri, 10/17/08, hare ram
<hare.bond(a)gmail.com> wrote:
>
> > From: hare ram <hare.bond(a)gmail.com>
> > Subject: [rules-dev] Performance Question
> > To: rules-dev(a)lists.jboss.org
> > Date: Friday, October 17, 2008, 1:56 PM
> > Hello all,
> >
> > This is the set of rules i have
> >
> > rule "IP Route File rule"
> > salience 2000
> > when
> > Line ( line matches
> >
"^.*\s+show\s+ip\s+route\s*$" )
> > Line ( line matches
> > "^.*\s+dest\s+address\s*$ )
> > file : FileFinder()
> >
> > then
> > file.setFileType("ip route
file");
> > drools.halt();
> > end
> >
> >
> >
> > All I am doing in rules is, I read each line from
the given
> > file, convert
> > them into Line Objects and see if any of my
> > rules matches. There are about 50 such rules,
that will
> > help me
> > differentiate what kind of file is present in my
input
> > directory.
> >
> > The question I have , is there a way I can know
if Line
> > Object matched any
> > of the rules ? If a Line Object is not matched by
> > any of rules, I can just retract that object from
the
> > memory and prevent Out
> > of Memory Exception if the file size is huge
> >
> > Thanks
> > Shiva
> > _______________________________________________
> > rules-dev mailing list
> > rules-dev(a)lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/rules-dev
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam
protection around
>
http://mail.yahoo.com
> _______________________________________________
> rules-dev mailing list
> rules-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-dev
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around