[rules-users] Using java.util.List in rules

Rahul Phadnis rahul.phadnis at yahoo.com
Wed Oct 31 22:27:16 EDT 2007


Do you have an import statement for importing
TipoCaracteristica?

I see you are already using  TipoMolde.CABELO which I
assume is another public static variable in the
TipoMolde class.

If none of these work can you post your drl file?

Rahul

--- Anderson Pazza Mello <payakahn at gmail.com> wrote:

> Yes I'm Brazilian....
> I need to improve my english I now hehehe
> 
> About the problem... I solved it.
> 
> But now I'm getting this error when I use a static
> property in the rules:
> 
> Exception in thread "AWT-EventQueue-0"
> org.drools.RuntimeDroolsException:
> Exception executing predicate
> org.drools.base.mvel.MVELPredicateExpression at 916f80
>     at
> org.drools.rule.PredicateConstraint.isAllowed(
> PredicateConstraint.java:197)
>     at
>
org.drools.reteoo.FromNode.assertTuple(FromNode.java:70)
>     at
>
org.drools.reteoo.SingleTupleSinkAdapter.propagateAssertTuple(
> SingleTupleSinkAdapter.java:29)
>     at
> org.drools.reteoo.EvalConditionNode.assertTuple(
> EvalConditionNode.java:150)
>     at
>
org.drools.reteoo.SingleTupleSinkAdapter.propagateAssertTuple(
> SingleTupleSinkAdapter.java:20)
>     at
>
org.drools.reteoo.FromNode.assertTuple(FromNode.java:87)
>     at
>
org.drools.reteoo.SingleTupleSinkAdapter.propagateAssertTuple(
> SingleTupleSinkAdapter.java:20)
>     at
>
org.drools.reteoo.FromNode.assertTuple(FromNode.java:87)
>     at
>
org.drools.reteoo.SingleTupleSinkAdapter.propagateAssertTuple(
> SingleTupleSinkAdapter.java:20)
>     at
>
org.drools.reteoo.FromNode.assertTuple(FromNode.java:87)
> .
> .
> .
> 
> Caused by: org.mvel.PropertyAccessException: unable
> to resolve property:
> unable to resolve token:
> TipoCaracteristica.CABELO_TOTALMENTE_CALVO
>     at
> org.mvel.ast.PropertyASTNode.initializePropertyNode(
> PropertyASTNode.java:86)
>     at
>
org.mvel.ast.PropertyASTNode.getReducedValueAccelerated(
> PropertyASTNode.java:23)
>     at
>
org.mvel.ast.BinaryOperation.getReducedValueAccelerated(
> BinaryOperation.java:20)
>     at
> org.mvel.MVELRuntime.execute(MVELRuntime.java:88)
>     at
>
org.mvel.CompiledExpression.getValue(CompiledExpression.java:99)
>     at
> org.mvel.MVEL.executeExpression(MVEL.java:219)
>     at
>
org.drools.base.mvel.MVELPredicateExpression.evaluate(
> MVELPredicateExpression.java:36)
>     at
> org.drools.rule.PredicateConstraint.isAllowed(
> PredicateConstraint.java:191)
>     ... 44 more
> 
> Example:
> 
> Property :
> public class TipoCaracteristica implements
> java.io.Serializable{
> .
> .
> 
>     public static int CABELO_TOTALMENTE_CALVO = 37;
> .
> .
> .
> }
> 
> rule:
> 
> rule "CABELO_TOTALMENTE_CALVO resposta nao / Chama
> Tipo de Cabelo"
> salience 90
>     when
>         e : Especialista(perguntado == false)
>         Especialista( $retrato : retratoUser)
>         Retrato($lstCaracRetrato : lstCarac) from
> $retrato
>         Retrato($lstMolde : lstMolde) from $retrato
>         Molde(tipoMolde.codTipMolde ==
> TipoMolde.CABELO && $lstCaracMolde:
> lstCarac) from $lstMolde
>         //CABELO_TIPO = 10
>         eval(naoPerguntou($lstCaracMolde, 10))
>         //CABELO_TOTALMENTE_CALVO = 37 e
> RESPOSTA_SIM = 154
>         Caracteristica(tipCarac.codTipCarac ==
> TipoCaracteristica.CABELO_TOTALMENTE_CALVO &&
> valor.codValor == 154) from
> $lstCaracMolde
>     then
>        
>
buscarMontarPergunta(e,Pergunta.CABELO_TIPO,Especialista.CABELO);
>         e.perguntado = true;
>         update(e);
> end
> 
> I get some statics properties like
> "TipoMolde.CABELO" without errors, but I
> can't use the properties from this class
> (TipoCaracteristica). Did you know
> why?
> If I use de value like this "valor.codValor == 154",
> I have no problem.
> 
> 2007/10/29, Edson Tirelli <tirelli at post.com>:
> >
> >
> >     Anderson,
> >
> >     What is the error? Can you provide a self
> contained example?
> >     Using the "from CE" as showed before works.
> >
> >     BTW, are you Brazilian? Your name sounds like
> a Brazilian name.
> >
> >      []s
> >      Edson
> >
> > 2007/10/27, Anderson Pazza Mello
> <payakahn at gmail.com>:
> > >
> > > How can I test all elements of the list?
> > > Can I need to use something like "for (int
> i.....)"?
> > >
> > > I'm trying to do that but it is not working...
> > >
> > > "Caracteristica( codCarac != 0 ) from
> $caracList"
> > >
> > >
> > >
> > > My test:
> > >
> > >         e : Especialista (perguntado == false)
> > >         Especialista( $moldeList :
> retratoUser.lstMolde )
> > >         Molde( tipoMolde == TipoMolde.CABELO)
> from $moldeList
> > >
> > >
> > > When  the property  "tipoMolde ==
> TipoMolde.CABELO" the rule must to be
> > > fired. The List $moldeList has 5 elements.
> > >
> > > any idea?
> > >
> > >
> > > 2007/10/3, Edson Tirelli < tirelli at post.com>:
> > > >
> > > >   Use the "from" CE:
> > > >
> > > > rule "This rule will fire once for each
> Caracteristica whose codCarac
> > > > is != 0"
> > > > when
> > > >     Especialista( $caracList :
> retratoUser.lstCarac )
> > > >     Caracteristica( codCarac != 0 ) from
> $caracList
> > > > then
> > > >     ...
> > > > end
> > > >
> > > >    []s
> > > >    Edson
> > > >
> > > > 2007/10/3, Bhattacharya, Sougata <
> sougata.bhattacharya at capgemini.com
> > > > >:
> > > > >
> > > > >  If I want to test for all ith element,
> > > > >
> > > > > Like this
> > > > >
> > > > >
> > > > >
> > > > > rule "Test"
> > > > >
> > > > >     when
> > > > >         e :
> Especialista(retratoUser.lstCarac.get(i).codCarac !=
> 0)
> > > > >     then
> 
=== message truncated ===>
_______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 




More information about the rules-users mailing list