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

David Sinclair dsinclair at chariotsolutions.com
Wed Apr 29 15:53:06 EDT 2009


change your dialect to mvel.

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

> Anyone can help me? I want to use an element of an Array in my rule
> condition.
>
> Thank you very much!
>
> - Zeke
>
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090429/bbccd1d2/attachment.html 


More information about the rules-users mailing list