<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
The globals are global to the consequence, where we inject them for the
user. For the function we expect the user to pass those injected
globals as arguments, i'm not convinced that this is overly more
painful that the variables automatigically being there in the function.<br>
<br>
That said if someone was will doing to do the work, we woudl probably
accept the patch. But it would need to do the following.<br>
1) determine the used globals for the function<br>
2) add those parameters onto the end of the generated function.<br>
3) update any generated consequences, or functions for that matter, and
add in the globals to the paramters list.<br>
<br>
So basically a lot of data munging in the templates.<br>
<br>
Mark<br>
Greg Barton wrote:
<blockquote cite="mid:48806.70910.qm@web81501.mail.mud.yahoo.com"
 type="cite">
  <pre wrap="">How about a ThreadLocal?

--- On Wed, 10/15/08, David Sinclair <a class="moz-txt-link-rfc2396E" href="mailto:dsinclair@chariotsolutions.com">&lt;dsinclair@chariotsolutions.com&gt;</a> wrote:

  </pre>
  <blockquote type="cite">
    <pre wrap="">From: David Sinclair <a class="moz-txt-link-rfc2396E" href="mailto:dsinclair@chariotsolutions.com">&lt;dsinclair@chariotsolutions.com&gt;</a>
Subject: [rules-dev] Re: [rules-users] No globals in functions?
To: "Edson Tirelli" <a class="moz-txt-link-rfc2396E" href="mailto:tirelli@post.com">&lt;tirelli@post.com&gt;</a>
Cc: "Mark Proctor" <a class="moz-txt-link-rfc2396E" href="mailto:mproctor@codehaus.org">&lt;mproctor@codehaus.org&gt;</a>, "Rules Dev List" <a class="moz-txt-link-rfc2396E" href="mailto:rules-dev@lists.jboss.org">&lt;rules-dev@lists.jboss.org&gt;</a>
Date: Wednesday, October 15, 2008, 12:53 PM
What about injecting the globals into the classes and doing
reflection to
invoke the method dynamically? That way we would only need
to change the
JavaFunctionBuilder to rewrite the calls to the globals?
For example

function foo() {
    global.bar(abx);
}

gets re-written as

function foo() {
     method.invoke(global, [abx]);
}

methods would be cached and such. Or do you guys not want
the reflection in
there?


On Wed, Oct 15, 2008 at 1:45 PM, Edson Tirelli
<a class="moz-txt-link-rfc2396E" href="mailto:tirelli@post.com">&lt;tirelli@post.com&gt;</a> wrote:

    </pre>
    <blockquote type="cite">
      <pre wrap="">   It may be invoked by a consequence, an eval, a
      </pre>
    </blockquote>
    <pre wrap="">predicate, or a return
    </pre>
    <blockquote type="cite">
      <pre wrap="">value constraint.

   If you fix it for the consequence in
      </pre>
    </blockquote>
    <pre wrap="">JavaConsequenceBuilder, the others
    </pre>
    <blockquote type="cite">
      <pre wrap="">will work the same. You will have to change the java.g
      </pre>
    </blockquote>
    <pre wrap="">grammar as I
    </pre>
    <blockquote type="cite">
      <pre wrap="">mentioned in my previousre e-mail to make it work.

   []s
   Edson

2008/10/14 David Sinclair
      </pre>
    </blockquote>
    <pre wrap=""><a class="moz-txt-link-rfc2396E" href="mailto:dsinclair@chariotsolutions.com">&lt;dsinclair@chariotsolutions.com&gt;</a>
    </pre>
    <blockquote type="cite">
      <pre wrap=""> Edson,
      </pre>
      <blockquote type="cite">
        <pre wrap="">Changing the builder shouldn't be too much of
        </pre>
      </blockquote>
    </blockquote>
    <pre wrap="">a problem. If I make the
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <pre wrap="">changes you suggested, how does the global
        </pre>
      </blockquote>
    </blockquote>
    <pre wrap="">actually get passed to the
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <pre wrap="">method? For example if something defined a
        </pre>
      </blockquote>
    </blockquote>
    <pre wrap="">function like
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <pre wrap="">void function doX(int abc) {
   ...
   global.doY(bcd);
}
and I rewrite it to be

void function doX(int abc, GlobalType global) {
   ...
}

Who is the invoker of the method?

thanks

dave



 On Mon, Oct 13, 2008 at 3:24 PM, Edson Tirelli
        </pre>
      </blockquote>
    </blockquote>
    <pre wrap=""><a class="moz-txt-link-rfc2396E" href="mailto:tirelli@post.com">&lt;tirelli@post.com&gt;</a> wrote:
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">   Hi Dave,

   Excellent!
   I will try to explain the current situation
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">and one possible solution,
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">but you may have better ideas.

   Functions in Drools are compiled as simple
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">static methods in a
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">generated java class. We use MVEL Templates to
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">generate the code of the
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">class and the static method.

   Take a look at JavaFunctionBuilder.java
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">class for the code generation
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">call and at javaFunction.mvel for the code
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">template.
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">   Now, the problem with globals is that they
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">are scoped to sessions, not
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">rulebases, so you can not resolve them until
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">runtime. You can not for
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">instance, make them a static reference of the
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">generated class and set it at
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">rulebase compilation time.

   So, my suggestion would be to:

1. at compile time, use
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">JavaDialect.analyzeBlock() method to analyze and
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">find out what are the globals that are used by
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">the funcion method code.
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">2. modify the code generation to add
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">parameters to that in the method
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">call. So, if "log" is a global and
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">if the function is declared like this:
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">function void someFunction( String param ) {
    // ... code ...
    log.something(...);
    // ... code ...
}

   you detect the use of "log" and
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">add it as a parameter of the generated
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">method:

...
public static void someFunction( Logger log,
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">String Param ) {
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">   ...
}
...

   This way, at runtime we can inject the
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">parameter into the call. You
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">can look at JavaConsequenceBuilder.java and
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">javaInvokers.mvel to see how we
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">do kind-of the same thing for consequences.

3. Now the most interesting part. :)  We use
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">an ANTLR grammar for parsing
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">Java code blocks. You need to change the
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">parser to rewrite any function call
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">the user is doing in his code to inject the
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">log parameter transparently. I
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">did the very same thing for modify blocks:

modify( $something ) {
   ...
}

   It is not hard once you get the hang of it.
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">It is a bit of "hand work"
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">though. Look at the
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">JavaConsequenceBuilder.fixModifyBlocks() for what I did.
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">Also, the ANTLR Java grammar is java.g.

   Let me know if you have questions or if you
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">have a better idea, and
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">welcome aboard!

   Cheers,
       Edson



2008/10/13 David Sinclair
          </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap=""><a class="moz-txt-link-rfc2396E" href="mailto:dsinclair@chariotsolutions.com">&lt;dsinclair@chariotsolutions.com&gt;</a>
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap=""> Hi Edson,
          </pre>
          <blockquote type="cite">
            <pre wrap="">My name is dave sinclair. I started using
            </pre>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">Drools in early August of this
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap="">year, but have a lot of experience with
            </pre>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">rules engines. I have worked
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap="">primarily with ArtEntrprise and some with
            </pre>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">PegaRules. I would love to help
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap="">with this project and thought that this
            </pre>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">may be the area to jump in on.
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap="">I have the M2 code, and was reading it
            </pre>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">over the weekend. Mostly the core
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap="">and some of the compilier. If you want to
            </pre>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">point me in the right direction on
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap="">the global/functions I'd be happy to
            </pre>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">have a look.
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap="">thanks

dave


On Mon, Oct 13, 2008 at 9:59 AM, Bagwell,
            </pre>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">Allen F <a class="moz-txt-link-rfc2396E" href="mailto:afbagwe@sandia.gov">&lt;afbagwe@sandia.gov&gt;</a>wrote:
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap=""> Edson,

Thanks for the tip. I figured I'd
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">need to use a workaround like this.
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">Unfortunately I'm under a series
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">of tight development and test
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">deadlines all the way into early
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">summer. Otherwise, I'd have a look.
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">Hopefully someone else out there can
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">assist.
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">Thanks,
-A

 ------------------------------
*From:*
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap=""><a class="moz-txt-link-abbreviated" href="mailto:rules-users-bounces@lists.jboss.org">rules-users-bounces@lists.jboss.org</a> [mailto:
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap=""><a class="moz-txt-link-abbreviated" href="mailto:rules-users-bounces@lists.jboss.org">rules-users-bounces@lists.jboss.org</a>]
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">*On Behalf Of *Edson Tirelli
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">*Sent:* Friday, October 10, 2008 5:46
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">AM
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">*To:* Rules Users List
*Subject:* Re: [rules-users] No
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">globals in functions?
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">
   Allen,

   There is a technical explanation
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">behind that and we never had the
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">time to find a way to overcome this
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">limitation. What you can do, although
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">not ideal, is to send the global as a
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">parameter:
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">funcion void foo( Logger log, String
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">cond )
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">{
...
}

rule XYZ
when
then
    foo( log, someString );
end

   If you or anyone would like to help
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">improving this, let us know and
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">we can discuss ways into doing it.

   []s
   Edson

2008/10/9 Bagwell, Allen F
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap=""><a class="moz-txt-link-rfc2396E" href="mailto:afbagwe@sandia.gov">&lt;afbagwe@sandia.gov&gt;</a>
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="">There's probably an easy
                </pre>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">explanation for this. I was wondering about
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="">why functions inside of rule files
                </pre>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">can't access globals?
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="">For example, I have a log4j logger
                </pre>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">that I pass into my rule files via
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="">a global.  The logger should never
                </pre>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">be a part of working memory. It's just
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="">there to capture valuable
                </pre>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">feedback.
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="">But I can't do this:

global Logger log;

function void foo(String cond)
{
   if (cond == "error")
       log.error("I saw an
                </pre>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">error");
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="">}

Because the compiler says that in
                </pre>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">the function it can't resolve 'log'.
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="">-A

Allen F. Bagwell
e-mail:  <a class="moz-txt-link-abbreviated" href="mailto:afbagwe@sandia.gov">afbagwe@sandia.gov</a>
phone:  505/284-4517
fax:  505/ 844-7886

There is no monument dedicated to
                </pre>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">the memory of a committee. -- Lester
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="">J. Pourciau





                </pre>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">_______________________________________________
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="">rules-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>

                </pre>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap=""><a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a>
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="">
                </pre>
              </blockquote>
              <pre wrap="">
--
 Edson Tirelli
 JBoss Drools Core Development
 JBoss, a division of Red Hat @
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap=""><a class="moz-txt-link-abbreviated" href="http://www.jboss.com">www.jboss.com</a>
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">
              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap="">_______________________________________________
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">rules-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>

              </pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <pre wrap=""><a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a>
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">
              </pre>
            </blockquote>
          </blockquote>
          <pre wrap="">
--
 Edson Tirelli
 JBoss Drools Core Development
 JBoss, a division of Red Hat @ <a class="moz-txt-link-abbreviated" href="http://www.jboss.com">www.jboss.com</a>

          </pre>
        </blockquote>
        <pre wrap="">
        </pre>
      </blockquote>
      <pre wrap="">
--
 Edson Tirelli
 JBoss Drools Core Development
 JBoss, a division of Red Hat @ <a class="moz-txt-link-abbreviated" href="http://www.jboss.com">www.jboss.com</a>

      </pre>
    </blockquote>
    <pre wrap="">_______________________________________________
rules-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-dev">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
    </pre>
  </blockquote>
  <pre wrap=""><!---->

      

  </pre>
</blockquote>
<br>
</body>
</html>