Hi,
As you suggested I tried to upgrade to Drools 5.0.0.M4 (the latest on
Maven repo) with mvel 2.0.5. No problem with java dialect. But it
doesn't work with mvel dialect. It looks like a problem with functions
: for any function I add to the package, I have the following stack
trace.
java.lang.NullPointerException
at
org.drools.rule.builder.dialect.mvel.MVELDialect.compile(MVELDialect.java:516)
at
org.drools.rule.builder.dialect.mvel.MVELDialect.addFunction(MVELDialect.java:338)
at
org.drools.compiler.PackageBuilder.addFunction(PackageBuilder.java:1089)
at
org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:603)
at
org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:284)
at t4.test.drools.TestRuleBase.executeRule(TestRuleBase.java:27)
at t4.test.drools.Test1.testDebug(Test1.java:57)
I donwloaded 5.0.0.M4 sources and for what I understood, there is a
problem when retrieving functions for the package.
Any idea ?
Regards,
Olivier
2008/12/16 Matt Geis <[email protected]>:
>
>
>>>Actually Drools processes DSL a similar way it process rules, doesn't it ?
>
> Not quite. DSL matching is a brute-force process. The engine will iterate
> across all appropriate entries in the DSL mapping file for each
> line of custom rule "code." Changes to the state of the code line do not
> cause a reset/restart of the matching. At the end, you should have a line of
> drl code.
>
> Rule execution and matching is different. For one, the consequence of a
> matched rule can modify and then update a fact, and as a result cause all
> rules to be tested again against the modified state of working memory. In
> theory, you could do this infinitely. Secondly, if you look at a RETE tree,
> you'll see that not every node is reached (it's not an exhaustive graph
> traversal). Indexing of the data before firing the rules allows the
> algorithm to eliminate entire branches of tests during evaluation.
>
>>>I couldn't find any documentation about Drools 5 (I downloaded it but it
>>>looks like it it the same as 4.0.7). Where could I find it ?
>
> The info on the latest docs are at...
> http://blog.athico.com/2008/11/drools-live-documentation.html
>
> DSL's haven't changed much and Drools 5 is backward compatible. The only
> changes are that we now use a lexer and parser instead of doing regex pattern
> matching, and you can be uber-restrictive in your matching by using regular
> expressions for your bound variables.
>
> Example:
>
> There is a person with a social security number of {ssn:\d{3}-\d{2}-\d{4}} =
> Person(socialSecurityNumber=='{ssn}')
>
> This feature, while of not so much value in longer sentences, is powerful in
> creating a chain of transforming mapping entries, and allows you to build the
> kind of rule transformation engine I was referring to in my earlier emails.
>
> As Drools 5 is not yet final, and efforts are more on bug fixes than on
> documentation at the moment, my advice (for this feature and others) is to go
> back through the archives of the drools blog (blog.athico.com) and this
> listserv.
>
> Matt
>
>
>
> _______________________________________________
> rules-users mailing list
> [email protected]
> https://lists.jboss.org/mailman/listinfo/rules-users
>
--
Seules 2 choses sont infinies : l'univers et la bêtise humaine ; et
encore pour l'univers, je ne suis pas sûr … (Einstein)
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users