[rules-users] Getting hold of the Evaluator Registry
Asif Iqbal
Asif.Iqbal at infor.com
Wed Jul 15 04:41:13 EDT 2009
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 at lists.jboss.org [mailto:rules-users-bounces at 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 at lists.jboss.org [mailto:rules-users-bounces at 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/main/java/org/drools/examples/lotrc/evaluators/IsAdjacentToEvaluatorDefinition.java
I use the configuration file instead of API in the example:
http://anonsvn.jboss.org/repos/labs/labs/jbossrules/contrib/lotrc/src/main/resources/META-INF/drools.packagebuilder.conf
[]s
Edson
2009/7/14 Edson Tirelli <tirelli at post.com<mailto:tirelli at 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/src/test/java/org/drools/builder/KnowledgeBuilderConfigurationTest.java
Test method:
testEvaluatorConfiguration()
[]s
Edson
2009/7/14 Asif Iqbal <Asif.Iqbal at infor.com<mailto:Asif.Iqbal at 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 at lists.jboss.org<mailto:rules-users at 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>
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @ www.jboss.com<http://www.jboss.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090715/d239786d/attachment.html
More information about the rules-users
mailing list