Excellent, worked a treat.... Thank you...
________________________________
From: rules-users-bounces(a)lists.jboss.org [mailto:rules-users-bounces@listsjboss.org] On
Behalf Of Edson Tirelli
Sent: 16 July 2009 14:20
To: Rules Users List
Subject: Re: [rules-users] Getting hold of the Evaluator Registry
There are several places that drools looks for configuration files, including your
home directory. Although, IMO it makes more sense to keep it confined to the project
itself. If you create a dir in your project, like:
src/resources/META-INF
And then configure the eclipse project to use the folde "src/resources" as a
source folder, it will pick it up.
[]s
Edson
2009/7/16 Jaroslaw Kijanowski
<kijanowski@gmail.com<mailto:kijanowski@gmailcom>>
On Linux, when I created my own accumulate functions, I had to put this
file in my home directory to have it picked up by Eclipse.
Cheers,
Jarek
Edson Tirelli wrote:
root of your project "classpath", not root of your project.
[]s
Edson
2009/7/15 Asif Iqbal <Asif.Iqbal@infor.com<mailto:Asif.Iqbal@infor.com>
<mailto:Asif.Iqbal@infor.com<mailto:Asif.Iqbal@infor.com>>>
Hi Edson,
I have gone away and tried the properties method of adding the
customEvaluator, which worked fine for the code. But my IDE still
does not pick it up. Any ideas?
Do I need to place it in a META-INF folder in the root of the project?
I have the following in the drools.packagebuilder.conf file.
drools.evaluator.custom=com.infor.audit.bpr.component.validation.impl.drools.CustomComparableEvaluatorsDefinition
thanks..
------------------------------------------------------------------------
*From:*
rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>
<mailto:rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>>
[mailto:rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>
<mailto:rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>>]
*On Behalf Of *Edson
Tirelli
*Sent:* 15 July 2009 14:57
*To:* Rules Users List
*Subject:* Re: [rules-users] Getting hold of the Evaluator Registry
Yes, you are in the right track, and I understand this is a bit
confusing at first. One more reason for people to go to the October
Rules Fest 2009 where I will give a presentation on all the ways to
extend the engine to solve specific problems. It will be interesting
I hope (last year was awesome) and even Charles Forgy will be there
doing a presentation on Parallel Rete. :)
Meanwhile I will write a tutorial on this, but just to help you
there, your approach is correct, except that you don't need to setup
the option for each operator. It works like this:
* One EvaluatorDefinition class implements support to one or more
evaluators, defined by the method public String[] getEvaluatorIds().
* All you need to do, then, is wire you class once and the engine
will pick-up all the IDs supported by that class. When you have your
class wired, you give it a unique string identifier, so that if you
ever need to replace it, or remove it, you will use that id.
Sometimes we use the operator as the ID, but usually it is something
that reminds you of the kind of evaluators that class define. For
instance, drools registers the ComparableEvaluatorsDefinition in
this way:
drools.evaluator.comparable =
org.drools.base.evaluators.ComparableEvaluatorsDefinition
So in this case, "comparable" is the identifier. Finally, from my
previous e-mail you will see that the reason that the eclipse IDE is
still giving you errors is that you are using the API to configure
the evaluators. Just move the configuration to the configuration
file and the IDE will pick it up.
[]s
Edson
2009/7/15 Asif Iqbal <Asif.Iqbal@infor.com<mailto:Asif.Iqbal@infor.com>
<mailto:Asif.Iqbal@infor.com<mailto:Asif.Iqbal@infor.com>>>
Edson,
What I have done so far is created a
CustomComparableEvaluatorsDefinition, which is exactly the same as
the default ComparableEvaluatorsDefinition apart form having support
for strings, which I have done by creating
StringGreaterOrEqualEvaluators and added that in my custom class,
using the addEvaluatorFunction :-
addEvaluator( ValueType.SHORT_TYPE,
Operator.GREATER, ShortGreaterEvaluator.INSTANCE );
addEvaluator( ValueType.SHORT_TYPE,
Operator.GREATER_OR_EQUAL, ShortGreaterOrEqualEvaluator.INSTANCE );
addEvaluator( ValueType.PSHORT_TYPE,
Operator.LESS, ShortLessEvaluator.INSTANCE );
addEvaluator( ValueType.PSHORT_TYPE,
Operator.LESS_OR_EQUAL, ShortLessOrEqualEvaluator.INSTANCE );
addEvaluator( ValueType.PSHORT_TYPE,
Operator.GREATER, ShortGreaterEvaluator.INSTANCE );
addEvaluator( ValueType.PSHORT_TYPE,
Operator.GREATER_OR_EQUAL, ShortGreaterOrEqualEvaluator.INSTANCE );
//Custom additions
addEvaluator( ValueType.STRING_TYPE,
Operator.LESS, StringLessEvaluator.INSTANCE );
addEvaluator( ValueType.STRING_TYPE,
Operator.LESS_OR_EQUAL, StringLessOrEqualEvaluator.INSTANCE );
addEvaluator( ValueType.STRING_TYPE,
Operator.GREATER, StringGreaterEvaluator.INSTANCE );
addEvaluator( ValueType.STRING_TYPE,
Operator.GREATER_OR_EQUAL, StringGreaterOrEqualEvaluator.INSTANCE );
Now Im am trying to wire it, with the following..
CustomComparableEvaluatorsDefinition
MyCustomComparable custom = *new*
CustomComparableEvaluatorsDefinition();
KnowledgeBuilderConfiguration config =
KnowledgeBuilderFactory./newKnowledgeBuilderConfiguration/();
EvaluatorOption option =
EvaluatorOption./get/(_Operator./LESS/.toString()_, custom);
EvaluatorOption option2 =
EvaluatorOption./get/(_Operator./LESS_OR_EQUAL/.toString()_, custom);
EvaluatorOption option3 =
EvaluatorOption./get/(_Operator./GREATER/.toString()_, custom);
EvaluatorOption option4 =
EvaluatorOption./get/(_Operator./GREATER_OR_EQUAL/.toString()_, custom);
config.setOption(option);
config.setOption(option2);
config.setOption(option3);
config.setOption(option4);
Firstly is this the correct approach?....
The problem im having is that in my drl files still flag errors,
when I do "test" > "test2" , am I missing something?
Regards
------------------------------------------------------------------------
*From:*
rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>
<mailto:rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>>
[mailto:rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>
<mailto:rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>>]
*On Behalf Of *Asif Iqbal
*Sent:* 15 July 2009 08:20
*To:* Rules Users List
*Subject:* RE: [rules-users] Getting hold of the Evaluator Registry
Edson,
Thanks for your replies they have really helped.
1) I am still not sure about creating a new operator, since
the '>=' operator already exists it just does not cater for strings,
which I want to add. So would creating a new operator cause the
existing one to be overrriden when added to the registry?
2) Having looked at the examples and tests you emailed, I am
still unsure how to actually wire in the changes, say for example I
have replaced the existing '>=' evaluator or created a new evaluator
so that '>=' now handles strings. When writing rules will the
engine pick this up?.. or do I need to create a new jar by
building?.. or do I need to update a configuration file?... im just
not sure...
3) Wouldn't the following also add the evaluator definition by
replacing the existing one..
_PackageBuilderConfiguration_ pkgb = *_new_*_
PackageBuilderConfiguration()_;
_pkgb.getEvaluatorRegistry()_._addEvaluatorDefinition_(*new
*ComparableEvaluatorsDefinition());
_PackageBuilder_ builder = *_new_*_
PackageBuilder(pkgb)_;
_builder.addPackageFromDrl(source)_;
_Package_ pkg = _builder.getPackage()_;
// Add the package to a _rulebase_ (deploy the
rule package).
rules = _RuleBaseFactory./newRuleBase/()_;
_rules__.addPackage(pkg)_;
Thanks for your help...
------------------------------------------------------------------------
*From:*
rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>
<mailto:rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>>
[mailto:rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>
<mailto:rules-users-bounces@lists.jboss.org<mailto:rules-users-bounces@lists.jboss.org>>]
*On Behalf Of *Edson
Tirelli
*Sent:* 14 July 2009 23:05
*To:* Rules Users List
*Subject:* Re: [rules-users] Getting hold of the Evaluator Registry
I am working in one example of drools features where I implement
a custom evaluator here:
http://anonsvn.jboss.org/repos/labs/labs/jbossrules/contrib/lotrc/src/mai...
I use the configuration file instead of API in the example:
http://anonsvn.jboss.org/repos/labs/labs/jbossrules/contrib/lotrc/src/mai...
[]s
Edson
2009/7/14 Edson Tirelli <tirelli@post.com<mailto:tirelli@post.com>
<mailto:tirelli@post.com<mailto:tirelli@post.com>>>
Asif,
My recommendation is create a new operator for you instead of
overriding existing ones. Although if you really want to replace the
existing ones, setting the property or calling the API to register a
new operator will override the default.
See:
http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler...
Test method:
testEvaluatorConfiguration()
[]s
Edson
2009/7/14 Asif Iqbal <Asif.Iqbal@infor.com<mailto:Asif.Iqbal@infor.com>
<mailto:Asif.Iqbal@infor.com<mailto:Asif.Iqbal@infor.com>>>
Hi,
What I need to do is modify one of the evaluator classes
specifically '<=', so that it can handle strings. Now I know I need
to create a class similar to ComparableEvaluatorDefinition. But what
I want to do is replace the existing one in the evaluator registry
with my implementation which will include the additional String
capability.
From my understanding that should be all that is required. Unless im
missing something... now all I need to know is how do I get hold of
the evaluator registry?
Cheers
I
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org>
<mailto:rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org>>
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @
www.jboss.com<http://www.jboss.com>
<
http://www.jboss.com>
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @
www.jboss.com<http://www.jboss.com>
<
http://www.jboss.com>
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org>
<mailto:rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org>>
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @
www.jboss.com<http://www.jboss.com>
<
http://www.jboss.com>
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org>
<mailto:rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org>>
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @
www.jboss.com<http://www.jboss.com>
<
http://www.jbosscom>
------------------------------------------------------------------------
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org>