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 <[email protected] <mailto:[email protected]>> > > 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:* [email protected] > <mailto:[email protected]> > [mailto:[email protected] > <mailto:[email protected]>] *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 <[email protected] > <mailto:[email protected]>> > > 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:* [email protected] > <mailto:[email protected]> > [mailto:[email protected] > <mailto:[email protected]>] *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:* [email protected] > <mailto:[email protected]> > [mailto:[email protected] > <mailto:[email protected]>] *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 <[email protected] <mailto:[email protected]>> > > > 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 <[email protected] > <mailto:[email protected]>> > > 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 > [email protected] <mailto:[email protected]> > 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> > > > _______________________________________________ > rules-users mailing list > [email protected] <mailto:[email protected]> > 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> > > > _______________________________________________ > rules-users mailing list > [email protected] <mailto:[email protected]> > 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> > > > ------------------------------------------------------------------------ > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users _______________________________________________ rules-users mailing list [email protected] http://lists.jboss.org/mailman/listinfo/rules-users
