Anyone can help me? I want to use an element of an Array in my rule condition.<br><br>Thank you very much!<br><br>- Zeke<br><br><div class="gmail_quote">2009/4/28 Zeke <span dir="ltr"><<a href="mailto:xanadu860122@gmail.com">xanadu860122@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi, <br> I am using Drools 4.0.7 GA. I want to use Array type in my rule condition. My drl is like below:<br>
<blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">
package org.drools.examples.test;<br> <br> import org.drools.examples.HelloWorldExample.Message;<br><br> rule "check.array"<br> dialect "java"<br> when<br> m:Message( arr[0] == "1" )<br>
then<br> System.out.println( "===check array ok===" ); <br> end</blockquote><div> </div> arr is an int type array. When I run the test case, I meet below exception:<br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">
Exception in thread "main" org.drools.RuntimeDroolsException: Exception executing predicate eval( arr[0] == "1" )<br> at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:216)<br>
at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:137)<br> at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:22)<br> at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:162)<br>
at org.drools.reteoo.Rete.assertObject(Rete.java:175)<br> at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)<br> at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)<br>
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:911)<br> at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:883)<br> at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:684)<br>
at org.drools.examples.HelloWorldExample.main(HelloWorldExample.java:69)<br>Caused by: org.mvel.CompileException: illegal use of []: unknown type: [I<br> at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getCollectionProperty(ReflectiveAccessorOptimizer.java:482)<br>
at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:274)<br> at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:110)<br>
at org.mvel.ASTNode.getReducedValueAccelerated(ASTNode.java:186)<br> at org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:21)<br> at org.mvel.MVELRuntime.execute(MVELRuntime.java:90)<br>
at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111)<br> at org.mvel.MVEL.executeExpression(MVEL.java:234)<br> at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:45)<br>
at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:209)<br> ... 10 more<br></blockquote> <br>Can anyone kindly tell me how to use Array type in Drools? Thanks in advance!<br><font color="#888888"><br>
- Zeke<br>
</font></blockquote></div><br>