Yes. the nodeshare example shows it. But It is still low effective and can
be improved more.

For example, we design a air price rule system, there should be more than
10K price rules, and for a given fact(a flight), there should be only some
rules matches(eg, 10 rules). if the rules engine need to evaluate each
condition, then the cost maybe very expensive.



2005/12/13, Michael Neale <[EMAIL PROTECTED]>:
>
> there is already some condition sharing in drools now, based on analysing
> the condition text. It has some limitations but it defaintely works.
>
> On 12/13/05, 王在祥 <[EMAIL PROTECTED]> wrote:
> >
> > I have think of this issue later, and think the optimization can be done
> > on
> > some module such as the groovy-drools. Here is some ideas:
> >
> >
> >
> > 1. For a RuleBase, we can collect all the rule's condition together
> >
> > 2. We can merge f.name or f.getName() expression together, so once 1
> expr
> > called f.getName(), it can be reused in another expression.
> >
> > 3. calculate some expression-expression relationship, such as if (f.a ==
> > "a") then f.a != "b", or if(f.a >3) then !(f.a < 2).
> >
> >
> >
> > It looks to do such optimization, it is possible but still require a lot
> > of
> > work, maybe somebody have the time can do it.
> >
> >
> >
> >
> > 2005/12/13, Michael Neale <[EMAIL PROTECTED]>:
> > >
> > > in that particular example, in the one rule it is moot as only one
> > > condition
> > > has to be false.
> > >
> > > But that is an interesting optimisation - for normal declarative rules
> -
> > > we
> > > would have to tell the engine that one condition implies the other. I
> am
> > > not
> > > sure if there are any existing optimisations that provide this without
> > > asking for more information from the rule author (which would be a bit
> > > error
> > > prone).
> > >
> > > Go ahead and do a Proof of concept if you think it would help prove or
> > > disprove.
> > >
> > > Michael.
> > >
> > >
> > >
> > >
> > > On 12/6/05, 王在祥 <[EMAIL PROTECTED]> wrote:
> > > >
> > > > I am a newer to drools, and i find that drools dont optimize the
> > > following
> > > > case:
> > > >
> > > > <rule1>
> > > >    <condition>f.a == "this"</condition>
> > > > </rule>
> > > >
> > > > <rule2>
> > > >    <condition>f.a == "that"</condition>
> > > > </rule>
> > > >
> > > > in my understand, if rule1.condition f.a == "this" is true, then
> > > > rule2.condition will be false and without a evaluation.
> > > >
> > > > Maybe we should add some support to the org.drools.spi.Condition two
> > > > methods:
> > > > 1. boolean implies(Condition other)  return true if this condition
> > > implies
> > > > other condition, so when this condition eval to true, then the other
> > > will
> > > > be
> > > > true
> > > > 2. boolean impliesNot(Condition other) return true if this condition
> > > > implies
> > > > not the other condition, so when this condition eval to true, the
> > other
> > > > will
> > > > be false.
> > > >
> > > > also optimize the rateoo engine to avoid evaluate conditional based
> on
> > > > these
> > > > methods.
> > > >
> > > > Do you think so?
> > > >
> > > >
> > >
> > >
> >
>
>

Reply via email to