Best bet is to jump on #drools on irc.codehaus.org when you get a chance, we
can talk you though the design of drools 3 (and what is different with
drools 2 in that regard).

On 3/9/06, Mitch Christensen <[EMAIL PROTECTED]> wrote:
>
> My question is not really about java, but the implementation of the Rete
> network.
>
> Rete implementations typically have a pattern network and a join network.
> The pattern network is responsible for matching constants and
> 'intra-condition' variable references.  The join network is responsible
> for
> variable references across conditions.  Typically processing within the
> pattern network is much more efficient than the join network.
>
> Back to my original example, by testing each object property separately I
> create two conditions, hence two nodes in the pattern network.  By
> creating
> a single comparison function, I reduce this to one condition/pattern node.
> This may seem like '6 of one, half dozen of the other', but what if my
> test
> object has 10 properties?  Would it be better to have 10 conditions in my
> rule, or create a comparison method and have only one condition?
>
> It seems to me that in order to facilitate pattern sharing (one of the
> stated benefits of the Rete network) the use of more, simple conditions
> might be better.
>
> This whole thought process was triggered by a posting a few days back
> regarding building 'human readable' rules through the effective crafting
> of
> Java methods on the test objects.  I started to wonder what the impact of
> this would be to pattern matching within the Rete engine, which leads me
> to
> realize that I really didn't understand how pattern matching works in
> Drools.
>
> The general concept of differentiating between the pattern and join
> networks
> also has relevance to some work that is happening on my current project.
>
> Thanks.
> -Mitch
>
> -----Original Message-----
> From: Michael Neale [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, March 07, 2006 3:43 PM
> To: user@drools.codehaus.org
> Subject: Re: [drools-user] Structuring conditions, alpha and beta networks
>
> The former would be more efficient, just as in java code. Its comparing to
> identies (integer comparison) versus a method call.
>
> (assuming the results are the same).
>
> On 3/8/06, Mitch Christensen <[EMAIL PROTECTED]> wrote:
> >
> > Hey,
> >
> > If I have a Java bean with two properties, p1 and p2 and want to have a
> > rule
> > that processes matching beans, which set of patterns is 'better' as far
> as
> > Drools is concerned?
> >
> > Assuming,
> >
> > <parameter identifier='b1'><class>MyBean</class></parameter>
> > <parameter identifier='b2'><class>MyBean</class></parameter>
> >
> > Then would
> >
> > <java:condition>b1.getP1() == b2.getP1()</java:condition>
> > <java:condition>b1.getP2() == b2.getP2()</java:condition>
> >
> > OR
> >
> > <java:condition>b1.equals(b2)</java:condition>
> >
> > (assuming I've properly implemented equals())
> >
> > Be more appropriate?
> >
> > Are there any performance implications between the two?
> >
> > My experience with other Rete implementations is that the alpha network
> > performs constant tests.  In Drools, I'm having a hard time visualizing
> > the
> > difference between what the alpha and beta portions of the network will
> be
> > processing.
> >
> > It seems to me that the alpha portion of the network should be
> responsible
> > for the parameter identification (is this true?), if so, does it also
> > apply
> > to conditions, and if so, to what extent?
> >
> > I have read most (if not all) of the Drools documentation and still
> > struggle
> > a bit understanding how this works.
> >
> > Any help or pointers to good documentation would be appreciated.
> >
> > Thanks.
> > -Mitch
> >
> >
> >
>
>
>

Reply via email to