[rules-users] how to use Array type in Drools

Edson Tirelli tirelli at post.com
Wed Apr 29 09:45:33 EDT 2009


   What version of MVEL are you using? try updating to MVEL 1.3.9 in case
you are not using it already. If you are already using 1.3.9, please let us
know.

   []s
   Edson

2009/4/28 Zeke <xanadu860122 at gmail.com>

> Hi,
>   I am using Drools 4.0.7 GA. I want to use Array type in my rule
> condition. My drl is like below:
>
>>   package org.drools.examples.test;
>>
>>   import org.drools.examples.HelloWorldExample.Message;
>>
>>   rule "check.array"
>>       dialect "java"
>>       when
>>           m:Message( arr[0] == "1" )
>>       then
>>           System.out.println( "===check array ok===" );
>>   end
>
>
>   arr is an int type array. When I run the test case, I meet below
> exception:
>
>> Exception in thread "main" org.drools.RuntimeDroolsException: Exception
>> executing predicate eval( arr[0] == "1" )
>>     at
>> org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:216)
>>     at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:137)
>>     at
>> org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:22)
>>     at
>> org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:162)
>>     at org.drools.reteoo.Rete.assertObject(Rete.java:175)
>>     at
>> org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)
>>     at
>> org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)
>>     at
>> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:911)
>>     at
>> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:883)
>>     at
>> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:684)
>>     at
>> org.drools.examples.HelloWorldExample.main(HelloWorldExample.java:69)
>> Caused by: org.mvel.CompileException: illegal use of []: unknown type: [I
>>     at
>> org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getCollectionProperty(ReflectiveAccessorOptimizer.java:482)
>>     at
>> org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:274)
>>     at
>> org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:110)
>>     at org.mvel.ASTNode.getReducedValueAccelerated(ASTNode.java:186)
>>     at
>> org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:21)
>>     at org.mvel.MVELRuntime.execute(MVELRuntime.java:90)
>>     at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111)
>>     at org.mvel.MVEL.executeExpression(MVEL.java:234)
>>     at
>> org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:45)
>>     at
>> org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:209)
>>     ... 10 more
>>
>
> Can anyone kindly tell me how to use Array type in Drools? Thanks in
> advance!
>
> - Zeke
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
 Edson Tirelli
 JBoss Drools Core Development
 JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090429/719acd68/attachment.html 


More information about the rules-users mailing list